1. 職涯階梯
程式設計師也會依照資歷與能力有不同等級。早年曾使用過如「coder」、「程式設計師」與「駭客」等稱呼,但現在大家多採用來自美國 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):負責大規模且複雜的專案,並為公司的技術發展制定策略方向。
2. Lego 產品
很久以前(1975 年),Pascal 語言的創作者尼克勞斯·維特撰寫了《演算法 + 資料結構 = 程式》一書。自那之後,世界已大不相同。現代的軟體產品已經不同於 10 年前,更別說 20 年前。至於 1975 年就更不用說了 — 從那時起已過了 50 年 ⏳
現代的程式設計師不再手工從頭寫出整個程式。更多時候是把它們從現成的組件(函式庫)拼裝起來,並撰寫能讓這些組件彼此互動的程式碼🧩。現代軟體產品可能由數十到數百個程式構成。其中一些在使用者的電腦或行動裝置上執行,而大多數則在資料中心的伺服器上運行。
這些程式中的許多(例如 Web 伺服器或資料庫)早已寫好。你只需要把它們正確地設定,就能按需求運作。不過隨著時間推移,設定過程可能會變得如此複雜,以至於實際上就像在做開發一樣。🤦♂️
開發者常常與自己對抗。與其在不同程式中一再撰寫相似的程式碼,他們會寫可設定(可客製)的函式庫,之後只要在需要的地方加以引用即可。
過去 20 年來,開發者已經寫出了非常多的函式庫、框架與開源倉庫。數量之多,實在以百萬計。如今,從零開始把所有程式碼都寫一遍被視為不良風格。取而代之的是,應該用高品質、經驗證的方案——函式庫、框架、套件與模組——來組裝你的程式 🧱
但這種做法也在逐漸過時。過去 10 年的趨勢是遷移到雲端:大型資料中心為你的程式提供所需的一切。想要資料庫?我們有上百種可選。想要少見又獨特的 Web 伺服器——也有!只要你付費,一切都能滿足。
3. 「我就是工程師」 © 伊隆·馬斯克

不必再自己撰寫繁瑣又枯燥的東西。只要你需要某種功能——通常已經有現成的函式庫與框架。你的任務是:a) 知道它們的存在;b) 找到合適的選項(往往有多個替代方案,品質與細節各異);c) 理解如何把它整合進你的專案 🎓
因此,工作反而變得更有趣了。你現在可以以 10 倍速度為產品加入新功能。30 年前,如果你需要一個 Web 伺服器,你會從零開始寫;20 年前——你會購買、安裝並設定它。而現在——只要進到 Azure 或 AWS 的雲端主控台,把需要的服務打開即可 🌐
這也是 Java 語言受歡迎的原因之一。它不僅非常適合開發大型企業級解決方案,也非常擅長「黏合」不同元件——透過豐富的 JVM 生態系,幾乎與任何東西都有整合:資料庫、微服務、REST API、訊息系統、雲端服務、分析平台。
因此,Java Software Engineer 這個職業早已轉型為 全端 Java 開發者。現代開發者需要理解資料庫如何運作(PostgreSQL、MySQL/MariaDB、MongoDB 等),才能設計良好的互動;也要懂前端(HTML、CSS、JavaScript/TypeScript、React、Angular),以便與以 Java 為後端的部分(Spring Boot、Micronaut、Quarkus)正確對接。而且,現在沒有 Docker 幾乎寸步難行——它已是業界標準 🐳。
現代軟體開發與 20 年前大不相同。程式設計師實際撰寫程式碼的時間不超過 50%——其餘都用在閱讀文件、學習新技術、設計,以及在團隊中開會協作。獨行俠式的開發者,現在已屬罕見的例外。
GO TO FULL VERSION