6.1 職業階梯
程式設計師的職位也根據資格有所區分。以前使用過像「編碼師」, 「程式設計師」和「駭客」這樣的概念,但現在大家都改用 來自美國IT的英文字。
對於開發者來說,有6個主要的職位級別:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
各國和各公司之間有些標準可能會有所不同, 但實際上是這樣的:
Intern Software Engineer — 就是實習生。他們正在學習程式設計,沒有商業經驗, 也沒有參與大項目的經驗。通常在更有經驗的同事的監督下工作。 他們的主要任務是學習代碼基礎和軟體開發的基礎,完成簡單的 編碼任務並參與測試。
Junior Software Engineer — 已經是程式設計師,但沒有實際商業經驗或 經驗少於一年。在更有經驗的開發者的指導下工作,實施項目的部分 並參與代碼審查過程。這個階段主要專注於深化技術技能和了解項目需求。
Middle Software Engineer (或簡單稱為 Software Engineer):在技術決策上具有 更多的自主性,負責項目的關鍵部分,開始指導缺乏經驗的同事, 並積極參與架構討論。通常擁有2到5年的實際經驗。
Senior Software Engineer: 負責設計和實現複雜系統,提供團隊內的指導 和領導,參與項目的戰略規劃,經常代表團隊與客戶和其他 利益相關者交流。通常擁有5到10年的經驗。
TechLead: 負責項目的最終技術成果,領導開發,解決 最具挑戰性的問題,確保技術標準的遵守並協調開發者的活動。
Principal Software Engineer: 在最高技術層次上工作,常參與制定 公司的技術戰略,開發創新解決方案並建立 技術標準,是技術領導的主要指導者,也是 複雜技術問題的關鍵專家。
這很有趣。大型公司可能有額外的角色和子角色。例如,在Google中有這些角色:
- Staff Software Engineer (L6): 對其部門的技術政策具有重大影響。
- Senior Staff Software Engineer (L7): 從事大規模和複雜的項目,確定公司技術發展的戰略方向。
6.2 Lego產品
曾經(在1975年)Pascal語言的創造者Niklaus Wirth寫了一本書《算法 + 數據結構 = 程式》。從那時起,一切都變了。
現代的軟體產品與10年前的樣子不同,更與20年前的樣子大相徑庭。更不用說1975年,從那時起已經過去50年。
現代的程式設計師不再手動寫程式。他更像是在組裝它們(庫)並撰寫代碼,以便這些部分可以互相配合。
現代軟體產品可能由數十甚至數百個程式組成。其中一些在用戶的計算機和移動設備上運行,但大部分在數據中心的伺服器上。
其中許多程式,例如網路伺服器或數據庫,已經編寫。只需正確配置即可使它們正常運行。雖然隨著時間的推移,配置過程可能會變得如此複雜,實際上轉變為開發。(*facepalm*)
程式設計師不斷地與自己鬥爭。與其在不同的程式中再次編寫類似的代碼,他們撰寫可配置的(可自訂的)庫,然後只需將其連接到所有需要的地方。
在過去的20年中,程式設計師撰寫了大量的庫、框架和開源存儲庫。它們真的有數百萬。現在從頭開始撰寫所有代碼被認為是不好的習慣。相反,應該將程式組裝起來,使用優質且經過驗證的解決方案——庫、框架、包和模塊。
但這種方法也過時了。過去10年的趨勢是遷移到雲端,這些大數據中心為你的程式提供一切所需。想要一個數據庫?我們有數百個可供選擇。想要少見的獨特網頁伺服器—也有!任何要求,只要你付得起。
6.3 「我是工程師」© Elon Musk
不再需要撰寫複雜且乏味的東西。如果你需要某種酷炫的複雜功能,為此已有庫。你只需:a)知道它的存在,b)找到合適的(質量可能有所不同的十幾個類似),c)弄清楚如何將其整合到你的項目中。
這種方法讓工作變得更有趣了。現在你可以以10倍的速度在產品中增加新功能。30年前,如果你需要一個web伺服器,你需要撰寫它。20年前——購買、安裝和設定。而現在——只需進入「雲端」控制台並啟用。
這也是Python語言流行的原因之一。它非常適合不是撰寫大型複雜的解決方案,而是「粘合」各個部分。而根據它的受歡迎程度,它在這方面做得非常出色。
而且Python開發者的職業已轉變為Python Fullstack Software Engineer。現代的Python開發者需要了解數據庫如何運作,才能正確地與之互動。了解HTML & JavaScript,才能調整frontend與python後端的工作。還有Docker——這是現在的行業標準。
現代開發與20年前的樣子大不相同。現代的程式設計師撰寫代碼的時間不超過其50%的時間。其餘的時間,他們在閱讀文檔、學習新技術和參加會議。孤獨的程式設計師已是過去的事了。
GO TO FULL VERSION