AI生成程式碼的品質隱憂與人工介入必要性
作者分享了一個實際案例:CI(持續整合)測試失敗,原因是靜態分析工具SonarQube標記了App.tsx檔案的圈複雜度過高。檢查發現,AI代理Codex將整個組件寫在單一行程式碼中,雖然經過Prettier格式化後語法正確,但缺乏人類工程師通常會進行的可讀性重構。
儘管這些由AI生成的邏輯在功能上是正確的,且涵蓋了邊界情況,但其結構混亂。作者最終指示Codex將檔案拆分為10個檔案以通過CI檢查。這顯示即使AI能可靠地迭代開發,人類仍需介入以確保程式碼的可維護性與符合團隊規範。
此案例突顯了一個風險:當工程師從未見過這些由AI生成的程式碼時,若遇到更嚴重的問題,排查難度將大幅增加。
「潛水機器人」比喻下的系統擁有權轉變
文章使用「潛水機器人」(Divebots)比喻AI代理:人類如同船上的操作者,指派AI去深海(複雜程式碼庫)採集金塊(功能)。樂觀派認為這能大幅提升效率;悲觀派則警告AI可能迷失方向、產出看似正確實則混亂的結構,或建造難以維護的「怪異豪宅」。
傳統軟體工程強調透過親手編寫程式碼來建立對系統的完整心智模型。然而,當AI產出速度遠超人類吸收能力時,這種模式不再適用。系統擁有者的定義轉變為:知道何時出錯、願意並能夠在必要時深入調查問題的人。
對於初級工程師而言,透過多年手動編寫來學習的路徑在經濟上已不可行。企業不太可能資助新人花費數年時間「從頭學起」。同時,要求逐行審查AI生成的程式碼或嚴格配對資深工程師進行指導,在業界大規模採用上也缺乏現實基礎。
未來工程師的三大核心能力:基礎、廣度與即時深度
作者提出三個支柱來定義未來的系統擁有權:基礎(Fundamentals)、廣度(Breadth)與即時深度(Just-in-Time Depth)。基礎指資料結構、演算法、網路、並發等核心計算機科學知識,這有助於識別如二次方複雜度等潛在效能問題。
廣度並非指精通所有領域,而是具備足夠的跨領域知識以繪製系統的「高階地圖」,知道哪些區域風險較高,以及當異常發生時該查找什麼資訊。這種廣度無法透過單一課程教授,需靠持續的好奇心與經驗連結來累積。
即時深度是指在問題發生時,願意深入未知領域並解決問題的能力。作者舉例,當其AI代理編排器出現穩定性問題時,他回憶起多年前讀過的Kubernetes書籍中關於「電平觸發狀態機」的概念,進而深入研究並重構核心架構,最終解決了問題。這顯示關鍵在於快速學習與應用知識的意願,而非預先知道所有答案。
社群回饋:資料庫結構與技術債的實際挑戰
讀者trjordan指出,文章過度強調開發者的不適感,但真正的失敗指標是產品故障、用戶抱怨與安全事件。當開發者無法同時承擔廣度所有權與深度專業知識時,往往預示著產品失敗。
讀者smallerfish分享經驗,LLM在資料庫正規化決策上表現不佳,容易導致技術債蔓延至物件模型。他建議在AI重度使用的專案中,每隔幾天暫停功能開發以進行程式碼與資料庫結構審查及清理。
讀者mrothroc表示,這與他在AI出現前管理團隊的經驗相符:當代碼量超過個人理解深度時,關鍵技能在於理解系統組件及其互動(即「方塊與線條」)。他鼓勵團隊將序列圖作為交付物的一部分,以輔助理解。




