美麗的瘋狂:探索永無止境的軟體工程技能樹

TL:DR: 今天,身為軟體工程師就意味著要不斷學習。從核心語言和框架到前端複雜性 (React、TypeScript)、DevOps 實務 (Docker、Ansible)、雲端基礎架構 (AWS、Terraform),甚至管理技能 - 範圍不斷擴大。與建築等高度專業化的領域不同,軟體通常需要個人涵蓋廣闊的領域,模糊角色之間的界線。雖然具有挑戰性,但這也證明了我們領域的動態性質。

在永無止境的軟體工程技能樹上導航

這是我經常思考的問題:在軟體工程的世界裡,所需的知識速度之快、範圍之廣。其他大多數的專業也是如此嗎?老實說,我有時真的會想知道。軟體工程師的旅程是一個不斷適應和學習的過程,可以說是一種真正獨特的專業「瘋狂」。

坦白說:建立優秀軟體的要求很高。您首先需要精通幾種程式語言和基本工具。但這只是入門。公司理所當然地期望您熟悉他們特定的技術堆疊 - 可能是 Ruby on Rails、Django、Laravel,或是其他完全不同的東西。還有 CSS,它本身就是一個無法掌握的世界,即使您學到的知識足以讓您過得去 (但偶爾還是會搔癢癢,不知道為什麼版面會破損)。

JavaScript 呢?幾乎是無法避免的。如果您幸運的話,也許只是在維護舊應用程式時灑上一些 jQuery。但科技很少會停滯不前。

大模糊:進入全架構 & DevOps

有一天,Facebook 的一個團隊開發了 React。突然間,集體智慧宣佈這是建立現代軟體介面的「正確」方法。但許多公司儘管需要這種新方法,卻猶豫著要不要雇用專門的前端專家與後端團隊。就這樣,「全堆疊工程師」成為常態。因此,您會深入研究 React,也許會因為類型很重要而加入 TypeScript,使用 Redux 來處理狀態管理(或瀏覽複雜的上下文 API),並配置 webpack、esbuild 或 Rollup 等建置工具,以及 linters 和 formatters。抗拒趨勢?有可能,但在快速成長的新創公司裡可能會很困難,因為在那裡您可能最後只能指導只精通最新框架的新員工。

但擴充並不止於前端。還記得系統管理員嗎?回想過去 (現在感覺已經成為歷史了!),他們是基礎架構的守護者,確保伺服器順利運作、管理資料庫、更新和部署。後來出現了 DevOps 運動。部分原因是為了提高效率和節省成本,營運、部署和基礎結構管理的責任開始轉移到工程團隊本身。現在,您需要掌握 Docker。即使您的應用程式只是一個簡單的二進位,您也可能需要 Ansible 來進行組態管理,而且祝您好運,能夠駕馭錯綜複雜的 SystemD。

攀登雲端 & 超越雲端

我們還沒走到一半!接下來就是雲端 - AWS、Azure、GCP。您不能像凡人一樣在 GUI 上點來點去,您需要基建即程式碼 (IaC)。因此,請將 Terraform 或 Pulumi 加入您的學習清單,以程式化的方式配置和管理資源。

取得成功,晉升為經理?恭喜您!這是一個全新的學習領域:估計時間表、委派任務、撰寫規格、進行績效評估、在產品策略會議中做出有意義的貢獻。除非您的公司已經大幅擴張,否則您可能在做這些工作的同時,還要親手處理技術工作。

越來越瘋狂了。我最近看到一位招募人員正在尋找一位具備 Rails、Hotwire、原生行動開發(iOS/Android)高級技能的工程師。為什麼不趁機加入核心和編譯器開發呢?

專業化何去何從?

軟體的複雜性與日俱增,通常都有其好的理由。但這也讓我想到其他複雜的工作。建造一棟房子需要建築師、土木工程師、水管工、電工、磚匠、室內設計師、屋頂工、測量師等一整支專業團隊。您不會期望一個人或甚至一家小公司能夠掌握所有這些行業。

然而,在軟體領域,人們的期望往往傾向於高度多樣性,而非深度專業化。

也許未來是有希望的。也許人工智慧與 LLM 的進步最終可以讓我們從簡單的提示產生複雜的應用程式,處理大部分的潛在複雜性。這未必是件壞事,讓我們可以更專注於解決問題的核心層面。

在此之前,軟體工程師的生活仍然是一個充滿刺激、有時令人難以招架,但總是不斷進步的持續學習旅程。這是我們這個領域充滿活力的證明,坦白說,這也是讓我們如此興奮的原因之一。

持續學習,持續建構!
美麗的瘋狂:探索永無止境的軟體工程技能樹
James Huang 2025年4月14日
分享這個貼文
R.I.P. 搜尋量
歡迎來到 LLM SEO 需求與新 SEO 的時代