LLM 時代,傳統軟體架構該重新檢查了

OpenClaw 作者 Peter Steinberger 接受 36Kr Europe 訪談時提到,多數程式碼其實很無聊,很多時候做的只是把一種資料形狀轉成另一種。這不是他真正關心的事。 1

這句話有點刺耳,但也把一件事講得很坦白:很多工程安排用久了,就會從成本與取捨,慢慢變成預設,變成僵化的教條,沒有人過問它是否還有價值。

現在 LLM 與 coding agent 已經開始直接參與 repo 級搜尋、修改與驗證。很多原本被視為理所當然的做法,也該再檢查一次。分層是不是還在隔離風險,抽象是不是還在縮小修改半徑,某些 interface、mapper 和轉發層,到底在承擔工作,還是只是在延續習慣。

以前這些東西就算有點多、有點繞,通常也還撐得過去。工程師會靠經驗補上下文,靠默契避開麻煩,再把額外成本默默吞下來。

但 agent 介入之後,很多原本人類可以硬撐過去的地方,會直接變成搜尋成本、理解成本,最後讓修改失去準頭。

這篇想處理的問題很直接:今天系統裡哪些結構還在管理複雜性,哪些只是在維持形式?

AI 會寫程式之後,軟體工程真正變貴的是什麼

很多人會把這一輪 AI 寫程式的進展,直接講成「語言模型正在取代軟體工程師」,甚至進一步講成「語言模型正在取代軟體工程」。

這樣講不算全錯,但沒有對準焦點。軟體工程沒有消失,變的是成本最高的地方不一樣了。過去 SDLC 昂貴的部分,常常落在寫程式、處理低階細節、人工重構。現在語言模型可以很快產生候選實作,原本集中在實作端的成本,就開始往別的地方移。用高德拉特的 Theory of Constraints 來看,這其實就是瓶頸轉移。

接下來比較值得看的,不是軟體工程還在不在,而是瓶頸轉去哪裡了。那些新的瓶頸,比以前好處理,還是更難處理?

軟體工程的典範確實在變,但工程紀律沒有因此結束。比較貼近現況的說法是:抽象層往上拉了,驗證負擔在重分配,治理形式也得跟著調整。

AI 會取代多少員工?企業真正面對的是約束條件

這篇要問的事

如果公司導入 AI,真正值得問的問題不是「AI 會不會搶走工作」,而是:在成本不增加、產出不下降的前提下,企業到底有多大空間縮減人力?而這個答案,又會因為 AI 是「菁英放大器」還是「技能拉平器」而明顯不同。

幾個月前,我在社群媒體看到一張裁員通知書的截圖。底下有一行說明:「公司說是因為導入 AI 工具,現有的人力已經足夠應付產出需求。」

這類貼文底下很快就會吵成一團。有人說 AI 終於開始搶工作了;有人說這根本是景氣問題,不要什麼都怪 AI;也有人說,這只是管理層找的藉口。

如果把問題問得精確一點,真正值得分析的,其實不是口號式的「AI 會不會取代人類工作」,而是更窄、也更接近企業實際決策的問題:

如果公司導入 AI,並且希望用它減少一部分人力,那麼這個人力縮減比例,在理論上有沒有上限或下限?

這篇想做的,就是先用一個盡量簡單的模型,把這件事的骨架抽出來。

AI 會寫程式,還要參與系統分析嗎?

傳統上,複雜的軟體專案,除了程式設計師之外,還會搭配系統設計師,甚至系統分析師,確保領域知識及商業邏輯都有朝對的方向前進。

生成式 AI 既然會寫程式,下一個問題就是:它也會做系統分析嗎?

理論上來說,應該是的。畢竟我們在前一篇文章都親眼看過,AI 既然能理解規格、潤飾需求、撰寫程式碼,甚至生成測試案例,那麼系統分析 (SA) 和系統設計 (SD) 這類「中間產物」,確實也難不倒它。畢竟,系統分析本質上就是資訊的整理、建模與推理,而這些都是 AI 擅長的領域。

我認為,SA/SD 也應該納入 AI 協作。尤其是從 SA/SD 擅長的建模角度,能夠協助我們及早確認領域知識及商業邏輯,檢查需求規格是否有矛盾、遺漏或模稜兩可的地方,甚至提出改善建議,幫助系統分析師更快定位問題,減少後期開發的返工成本。譬如說,透過 AI 生成的狀態轉移圖,也有助於規劃黑箱測試,提高測試覆蓋率,進而提升系統的穩定性與可靠性。

接下來就是現實問題了:讓 AI 產生的狀態圖,真的比人工畫得更好嗎?能省多少時間?

這就要實測了!現在,就讓我們拿前一篇文章的規格作為引子,看看 AI 生成的狀態圖表現如何吧!

當 AI 會寫程式,程式碼會變得即寫即棄嗎?

人類從事的領域,不斷被生成式 AI (GenAI) 入侵。

社群媒體上,早就充斥一大堆「AI 體」的文案圖案,現在就連程式設計領域也開始淪陷。像 Google 執行長就透露:「在 Google,超過 1/4 的新程式碼已經是先由 AI 生成,再讓程式設計師去複審與確認。」1 而 GitHub 執行長更大膽預言 80% 的程式碼都將會由 GenAI 生成。2

也就是說,以前,程式設計師得親手撰寫大部分的程式碼;現在則開始挪出一段時間去跟 GenAI 對話:調教提示詞 (prompt)、審核生成的程式碼、確認正確性,如此反覆進行好幾個回合。

GenAI 進展神速。如果某一天進展到,只要提示詞下得夠精準,第一次生出來的程式碼幾乎就合格過關了,是否也就意謂著,程式設計師的專業訓練及工作重點,將會更轉向 ⑴ 鑽研提示工程、⑵ 審核生成的程式碼這兩條路線發展?換句話說,將會更朝向 ⑴ 前段的需求規格、⑵ 後段的測試驗收這兩條路線?

如果頭尾兩端(需求規格與測試驗收)都由人來看守定義,中間步驟(撰寫程式碼)改由 GenAI 來操刀,是否也就意謂著,程式碼會變成像是可拋棄的東西,反正隨時都可以叫 GenAI 再生出一份出來?甚至當 GenAI 能力升級之後,又能夠生出比拋棄掉的還要更好的程式碼?

聽起來可能有點兒瘋狂。可是如果以上屬實,那麼,敏捷四大宣言之一「可用的軟體 重於 詳盡的文件」,在 GenAI 時代是否依然成立,可能都值得再重新評估檢討。

為此,我在 ChatGPT 4o 進行一系列小小的實驗。試試看當 GenAI 收到前段的需求規格之後,能夠生出什麼樣的程式碼以及測試驗收案例;緊接著會與 GenAI 協作調教頭尾兩端(需求規格與測試驗收),再看看 GenAI 重新生出來的程式碼,會有什麼不同。