6.1 職業階梯
程序員也會根據資格進行分級。曾經使用過如「程式員」、「程序員」和「駭客」這些概念,但現在大家都採用美式 IT 的稱謂。
對於開發者,有 6 個主要分級:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- Tech Lead
- 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 年。
現在的 程序員不再手動撰寫程序。他們更像是從現成的部件(庫)中組裝它,撰寫幫助這些部件互動的代碼。
現代軟件產品可以由幾十到上百個程序組成,其中一些在用戶的計算機上運行,另外一些在他的移動設備上,大部分則在數據中心的服務器上運行。
其中許多程序,如 web 服務器或數據庫,早已寫好。他們只需要 正確配置 以正確運行。雖然隨著時間的推移,配置過程可能變得如此複雜,以至於實際上變成了開發。 🤦♂️
開發者總是在與自己抗爭。與其在不同程序中重複撰寫類似代碼,他們撰寫可配置的庫來滿足自己的需求,並將其集成到所有所需地方。
過去 20 年來,開發者撰寫了非常多的庫、框架和開源存儲庫。他們真的有數百萬之多。現在從頭開始撰寫所有代碼被視為不好的習慣。相反,我們應該從質量過硬和經過驗證的解決方案中組裝程序 —— 庫、框架、包和模塊。
不過這種方法也已經過時了。近 10 年來的趨勢是搬到雲——為您的程序提供一切所需的大型數據中心。需要一個數據庫?我們這裡有成百上千種選擇。需要一個稀有獨特的 web 服務器 —— 我這裡有任何您需要的東西。只要付錢,就能滿足您任何需求。
6.3 「我是工程師」(c) Elon Musk
現在不需要撰寫複雜的無聊東西了。現在如果您需要某種超酷的複雜功能,總有一個庫來處理此類情況。您只需要:a) 知道它的存在,b) 找到合適的(可能有數十種不同質量的替代品),c) 瞭解如何將其集成到項目中。
這種方法使工作變得更加有趣。現在您可以快 10 倍地為產品添加新功能。30 年前,如果您需要 web 服務器,您需要自己撰寫。20 年前,購買、安裝和設置。現在,只需登入雲的管理界面並啟用它即可。
這也是 Frontend 受歡迎的原因之一。現在可以用 JavaScript 和使用 Node.js 撰寫複雜的後端,或只是「啟用」雲數據中心中的各種服務。Frontend 不再嚴格依賴於後端的限制,而是變得更加強大。從它的流行程度來看,它完成得非常出色。
職業本身也從 Frontend 開發者轉變為 Frontend Fullstack Software Engineer。現代 Frontend 開發者需要了解數據庫的運作,以便妥善處理。理解 HTML & JavaScript,NginX 以設置前端和後端之間的協作。還需要 Docker —— 這已經是行業的標準。
現代開發與 20 年前大相逕庭。現代程序員編寫代碼的時間不超過他們總工作時間的 50%。其他時間都在閱讀說明書、學習新技術和參加會議。獨行程序員早已是過去式。
GO TO FULL VERSION