「AI 已經能自己寫 Code、修 Bug、跑測試,工程師還需要學系統架構嗎?」

Bilgin Ibryam 在〈8 Software Books AI Has Made More Relevant〉列出八本書,對應產品價值、規格、領域、架構、資料、安全、韌性與交付流。這不是「AI 讓舊書變成定理」的實證;那是作者對工作重心的判斷。但它抓到一個很實際的變化:程式碼產出變快,不代表系統理解、驗證與營運也變快。

我的立場是:**AI 把稀缺工作從輸入程式碼,移到替決策留下可反駁的證據。**以下八個問題不是必讀書單或每次小修改都要填完的 checklist;它們是判斷「這次變更還缺哪種證據」的索引。

八本書不是書單,而是八個不能交給生成器猜的問題

AI 產出前要先問的問題Ibryam 對應的書本次變更應留下的最小證據
這件事真的值得做嗎?Escaping the Build Trap使用者結果、非目標與完成訊號
正確行為是什麼?Specification by Example正常、邊界與失敗案例
名詞與規則由誰定義?Learning Domain-Driven Design共同詞彙、owner 與不變條件
為什麼採用這個設計?Software Architecture: The Hard Parts被拒絕的選項與 trade-off
舊資料與其他消費者仍相容嗎?Designing Data-Intensive Applications, Second Editionschema/事件契約與 migration 策略
哪裡跨越信任邊界?Threat Modeling: Designing for Security資料流、權限與威脅回應
依賴變慢或失效時會怎樣?Release It!, Second Editiontimeout、重試、退化與回退行為
整個交付流真的變好嗎?Accelerate從需求到可接受結果的時間與返工證據

這個表把原文的閱讀地圖改成審查面,而非宣稱讀完八本書就能安全使用 AI。O’Reilly 對 Designing Data-Intensive Applications 第二版列出的內容,正包含 schema evolution、replication、transactions、partial failure 與 dataflow;這些都是「測試綠燈」仍可能漏掉的跨系統問題。書籍目錄

不買書,也能先用公開資料補齊這八個面向

書本能提供完整的論述與案例;下列資料不是逐章替代品,而是可公開查核、可直接拿來做一次變更審查的最短路徑。

決策面公開資料先做的事
產品價值Escaping the Build Trap 線上預覽把「要交付的功能」改寫成一個使用者結果與停止條件。
行為規格Gojko Adzic 的 Specification by Example 文章庫為正常、邊界與失敗情況各寫一個範例,再讓 Agent 產生測試。
領域語言Microsoft 的 DDD 與 bounded context 指引列出這次變更的名詞、owner 與不可變條件;有歧義就先問 domain expert。
架構取捨Architecture Decision Records 原始格式用一頁 ADR 寫下 context、選擇、後果與未選方案。
資料相容Apache Avro schema resolution 規格對 producer 與每個 consumer 跑一次舊/新 schema 相容測試。
信任邊界W3C Threat Modeling Guide畫出資料流與邊界,列出威脅、回應與殘餘風險。
故障與退化Google SRE:Addressing Cascading Failures指定 timeout、retry budget、degraded response 與何時停止重試。
交付成效DORA Core Model 與公開研究同時記錄 flow、返工與使用者/營運結果,不只計算產出量。

這些來源都能公開閱讀,但仍要把它們套回本系統的資料、依賴與風險。找不到對應的 owner、consumer 或失敗行為時,不要以通用文章代替這次變更的證據。

速度感和證據是兩件事

GitKraken 在 2026 年 8 月 20 日發布的 調查文章 訪問 554 位開發者與工程主管。84% 的受訪者認為 AI 讓自己更有生產力,但 39% 的組織沒有方法衡量 AI 的影響,另有 33% 主要依賴開發者自述。這是工具廠商發布的調查樣本,不能推論所有團隊,也不能把「感覺更快」解讀成因果證明。

我的做法是先替一種重複任務記錄從開始到通過驗收的時間,包含人工審查與返工。不要只計算 Agent 產生 diff 的時間;上線後若需回退,也要算進交付成本。這是本文的衡量建議,不是調查已證明的改善方案。

除錯前,先對齊 Agent 缺少的脈絡

2026 年 8 月 19 日線上發表的 Reliable Vibe Coding 研究,分析一名開發者使用 Claude Code 建置與除錯系統時的 163 個互動片段。作者提出 human-AI context gap、非同步學習、信任侵蝕與錯誤擴張四個主題,並在這個案例中描述一個迴圈:背景脈絡沒有補齊,Agent 產生局部合理但整體錯置的修改;錯誤增加後,人類得花更多時間解釋、監控與除錯,脈絡差距又變大。

這篇是單一開發者、單一系統的質性研究,互動紀錄來自 2025 年至 2026 年初,並非 8 月才進行的實驗。因此它不能估算失敗率,卻能幫我們看見失敗怎麼累積。把「需求、架構決策、不可變條件、驗收方式」寫進 repository 的文件與測試,目的不是讓 Agent 變聰明,而是縮小每一輪對話中必須猜測的範圍。

生成程式與理解語意,要分開驗證

Nature 旗下 Communications AI & Computing 在 2026 年 8 月 13 日刊出的 SemBench 研究 評估 LLM 對程式靜態語意的理解。研究報告指出,模型在程式碼生成上的表現,可能比對基礎語意屬性的理解進步更快;其中一項弱點是判斷變數的值在後續程式中是否仍可能被使用。研究使用 1,000 個 C 程式檔案建立題目,這是受限的 benchmark,不等於真實 repository 或所有模型。

我據此調整驗收方式:build、單元測試與 lint 都綠,不足以證明 Agent 理解了資料生命週期、跨模組不變條件或故障時序。例如修改 CSV 匯入器,成功讀入一個正常檔案只驗證了一條路徑。空檔案、缺欄位,以及處理到一半失敗時是否留下半成品,都要由需求決定預期行為,再用對應案例驗證。SemBench 本身沒有測試這個匯入情境;這是本文的應用示例。

本文最初從 Andrew Ng 的 Software Engineering Fundamentals 貼文 出發;作者官網 將同題文章列於 2026 年 8 月 28 日。本次更新以以上三份可讀取的一手資料補充,將「基本功很重要」落到具體驗收。

把 Agent 放進一個可驗證的工作流

我會用下面八個問題審查一次 Agent 產生的變更:

審查問題可留下的證據
這件事要改變哪個使用者結果?目標、非目標與完成訊號
哪些行為必須維持、哪些要改?變更前後的規格、範例或測試
名詞、規則與例外由誰決定?領域詞彙、owner 與不變條件
為何採用這個架構而不是另一個?ADR 或 trade-off 紀錄
資料、事件與舊消費者是否仍相容?schema 契約、migration 與 rollback 策略
哪裡跨過信任邊界?資料流、權限檢查與 threat model
測試沒有覆蓋什麼、故障時怎麼停?明列外部服務、併發案例、告警與回退程序
交付真的更好,還是只更快產生?交付時間、審查輪數、返工與 production 訊號

說不清預期行為、資料相容性或失敗處理,就先停止擴大修改。 八題不必全部適用,但每一題都必須有答案或明確的「不適用」理由;否則先縮小範圍或補齊條件,再讓 Agent 繼續。這是本文建議的停止規則,讓下一步取決於可檢查的證據。

下一步:量測一個小變更

挑一個低風險、可回退的 issue,先記錄人工完成它需要的時間、審查輪數、測試結果與回退方式,再讓 Agent 完成同一類工作。比較交付結果與維運成本,而不是只比較產生 diff 的速度。

先拿下一個 issue 寫下適用問題的答案,再開始產生程式碼。