close

整理 | 朱珂欣

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

很多剛剛踏入職場的「初級程序員」常常會期待自己在不斷提升技能和豐富實踐經驗後,有朝一日晉級為「高級程序員」。
近日,一篇《是什麼造就了高級程序員?編寫軟件與建築系統》的文章,在Hacker News上引發了許多程序員的關注與討論。不少開發小白感嘆:我該如何跨越成為高級程序員,需要做哪些努力?
那麼,這兩者之間都有哪些區別呢?

初級程序員 vs. 高級程序員

從工作內容的角度出發,兩者最大的區別,其實在於更關注的是「軟件」還是「系統」。

初級程序員關心編寫軟件。因此,會重視代碼質量,採用最佳實踐,嘗試採用尖端技術。他們在學習新技術方面投入了大量時間。對初級程序員來說,最終的目標是創建優雅的、可執行的、可維護的軟件。

高級程序員關心構建系統。編寫軟件只是構建系統中的一個步驟。首先,他們需要對「一個軟件是否需要創建」的問題做出思考,例如它會解決什麼問題、為什麼解決。並且,他們還會詢問誰將使用該軟件以及以何種規模使用該軟件。同時,他們還需考慮軟件將在哪裡運行,以及如何監控它是否正常工作,軟件是否真正解決了問題等。


高級程序員的不一樣經歷


事實上,構建系統比編寫軟件更複雜且困難,但也能帶來更多的不一樣的經歷。

作為最了解軟件的人,高級程序員懂得如何運行它、監視它、擴展它,更重要的是,他們的分析思維和解決問題的能力,對產品要求的見解非常有價值。

在構建系統的過程中,高級程序員需要參與以下的工作內容(非詳盡):

明確需求 。在與產品經理合作時,能夠了解他們的問題並高效解決;

明確非功能性需求。需要與項目經理討論系統應處理多少用戶,對性能、吞吐量、延遲的要求,以及任何安全性或合規性注意事項等;

規劃迭代。在團隊合作中提出實施計劃,確保某個期限內可是實現的目標;

確定依賴關係。在識別了團隊外部的依賴關係後,直接與EM或團隊合作,為他們獲取一些ETA,隨之相應地調整團隊的目標;

測試。根據公司運營方式,需要與自身團隊或QE團隊一起決定測試策略。就推出所需的質量閾值達成一致(例如,沒有未解決的主要錯誤或測試覆蓋率超過 X%);

部署。與團隊合作,決定如何部署系統。例如是否需要一些新的基礎架構、是否可以重用現有的基礎架構、成本預算等;

可觀察性。需要決定如何監控系統的運行狀況,並設置解決生產問題的流程。同時,使用第三方解決方案(如相撲邏輯)為此目的設置監視器和儀錶板;

推出溝通。在與團隊和 PM 就推出日期達成一致時,需要確保所有利益相關者了解,並檢查是否需要更改文檔;

衡量成功。確定自身知曉項目是否成功的指標,例如是否有人使用新系、用戶是否完成任務等,高級程序員可以利用可觀察性套件來實現。

網友:「高級」的頭銜不等於「高級」的角色

從初級程序員到高級程序員,「打怪升級」之路必然會面臨重重挑戰。在時間的沉澱下,程序員的技能不斷提成,也收穫了屬於自己影響力,是否就能進階為高級程序員呢?「高級」、「大師」這類的「頭銜」是否真正具備意義?

在Hacker News上,文章得到了許多程序員的反響:

「從初級到高級,應有一個客觀的進步階梯,不能用時間來定義」;

「雖然技術知識至關重要,但它不應該成為某人能否高級程序員的決定性因素」;

「有效溝通能力、協作能力和指導能力對高級程序員也很重要」;

「在我的團隊中,有幾個非常資深的程序員仍然在認真的編碼」;

「當我不為工作而編碼時,我學到的最有趣的技術」。

時下,擁有職場競爭力變得越來越重要。對於程序員而言,夯實自身技術知識、提升技能固然重要,但並非能成為高級程序員的關鍵。每一個高級程序員都不只是代碼的搬運工,也不止於專注技術,他們同樣具備思考、協作、溝通等其它的職業能力。如果你想進階為一個高級程序員,會從哪個方面開始努力呢?

參考鏈接:

https://codewithstyle.info/software-vs-systems/

https://news.ycombinator.com/item?id=32809817

《新程序員001-004》全面上市,對話世界級大師,報道中國IT行業創新創造!

☞程序員用12小時復刻《羊了個羊》,代碼已開源!
☞東北「教父」與東軟往事
☞編程語言是人類新的傳承密碼?

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()