出品 | CSDN程序人生(ID:coder_life)

從工作內容的角度出發,兩者最大的區別,其實在於更關注的是「軟件」還是「系統」。
初級程序員關心編寫軟件。因此,會重視代碼質量,採用最佳實踐,嘗試採用尖端技術。他們在學習新技術方面投入了大量時間。對初級程序員來說,最終的目標是創建優雅的、可執行的、可維護的軟件。
高級程序員關心構建系統。編寫軟件只是構建系統中的一個步驟。首先,他們需要對「一個軟件是否需要創建」的問題做出思考,例如它會解決什麼問題、為什麼解決。並且,他們還會詢問誰將使用該軟件以及以何種規模使用該軟件。同時,他們還需考慮軟件將在哪裡運行,以及如何監控它是否正常工作,軟件是否真正解決了問題等。
高級程序員的不一樣經歷
事實上,構建系統比編寫軟件更複雜且困難,但也能帶來更多的不一樣的經歷。
作為最了解軟件的人,高級程序員懂得如何運行它、監視它、擴展它,更重要的是,他們的分析思維和解決問題的能力,對產品要求的見解非常有價值。
在構建系統的過程中,高級程序員需要參與以下的工作內容(非詳盡):
明確需求 。在與產品經理合作時,能夠了解他們的問題並高效解決;
明確非功能性需求。需要與項目經理討論系統應處理多少用戶,對性能、吞吐量、延遲的要求,以及任何安全性或合規性注意事項等;
規劃迭代。在團隊合作中提出實施計劃,確保某個期限內可是實現的目標;
確定依賴關係。在識別了團隊外部的依賴關係後,直接與EM或團隊合作,為他們獲取一些ETA,隨之相應地調整團隊的目標;
測試。根據公司運營方式,需要與自身團隊或QE團隊一起決定測試策略。就推出所需的質量閾值達成一致(例如,沒有未解決的主要錯誤或測試覆蓋率超過 X%);
部署。與團隊合作,決定如何部署系統。例如是否需要一些新的基礎架構、是否可以重用現有的基礎架構、成本預算等;
可觀察性。需要決定如何監控系統的運行狀況,並設置解決生產問題的流程。同時,使用第三方解決方案(如相撲邏輯)為此目的設置監視器和儀錶板;
推出溝通。在與團隊和 PM 就推出日期達成一致時,需要確保所有利益相關者了解,並檢查是否需要更改文檔;

網友:「高級」的頭銜不等於「高級」的角色
從初級程序員到高級程序員,「打怪升級」之路必然會面臨重重挑戰。在時間的沉澱下,程序員的技能不斷提成,也收穫了屬於自己影響力,是否就能進階為高級程序員呢?「高級」、「大師」這類的「頭銜」是否真正具備意義?
在Hacker News上,文章得到了許多程序員的反響:
「從初級到高級,應有一個客觀的進步階梯,不能用時間來定義」;
「雖然技術知識至關重要,但它不應該成為某人能否高級程序員的決定性因素」;
「有效溝通能力、協作能力和指導能力對高級程序員也很重要」;
「在我的團隊中,有幾個非常資深的程序員仍然在認真的編碼」;
「當我不為工作而編碼時,我學到的最有趣的技術」。
時下,擁有職場競爭力變得越來越重要。對於程序員而言,夯實自身技術知識、提升技能固然重要,但並非能成為高級程序員的關鍵。每一個高級程序員都不只是代碼的搬運工,也不止於專注技術,他們同樣具備思考、協作、溝通等其它的職業能力。如果你想進階為一個高級程序員,會從哪個方面開始努力呢?
參考鏈接:
https://codewithstyle.info/software-vs-systems/
https://news.ycombinator.com/item?id=32809817
《新程序員001-004》全面上市,對話世界級大師,報道中國IT行業創新創造!
