在 AI 輔助程式設計(AI Coding)普及前,工程師的產出差異常被歸因於打字速度、語法熟練度或搜尋 API 的速度。
但當強大的程式碼模型變得容易取得,開發者能快速產出大量語法正確的程式碼時,真正的差異轉向:誰能決定要做哪些工作、理解 Agent 做出的設計,並對最後結果負責。
當人把「決定哪些子任務要做」也交給 Agent 時,局部可行的輸出可能累積成缺少關鍵情境的系統;這正是本文接下來要拆解的責任落點。
@jowaywang 把這種工作方式稱為「盡職程式設計(Due Diligent Programming)」。原文的重點不是魔法提示詞:AI 可以完成許多子任務,但未必能決定為了「把事做成」究竟需要哪些子任務,以及哪些取捨不能漏掉。作者也主張用架構圖或面向產品經理的文件理解 Agent 的設計,而非只把生成結果當作黑盒子接受。
本文的工程化拆解:四個責任節點
為什麼調用同一個模型,產出會有天壤之別?關鍵在於工作流程中四個不可替代的責任節點:
盡職工程實踐鏈 (Due Diligent Pipeline)
從精準需求到生產級交付的四個專業責任卡點
- 01Scope & Invariants
需求契約化
拆解任務前置與後置條件,明確標註 Non-goals,防止 Agent 自作主張擴展功能邊界。
Gate不可變條件 (Invariants) 鎖定 - 02JIT Context
上下文治理
提供高訊號、低噪音的專案知識,包含最小重現測試、明確型別與介面合約。
Gate去除冗餘與無效日誌 - 03Deep Modules
架構接縫把關
評估 AI 產出架構的演進成本,優先選擇深模組隱藏複雜度,維持單向依賴。
Gate防止淺模組與膠水代碼 - 04Independent Gate
機械式驗收
拒絕盲目 LGTM;透過獨立 Reviewer、靜態分析與自動化測試驗證邊界與併發安全。
GateCI 測試與覆蓋率硬指標
| 維度 | 依賴型開發者(草率模式) | 盡職工程師(Due Diligent 模式) |
|---|---|---|
| 需求輸入 | 丟一句模糊需求(如「幫我做一個金流處理」) | 拆解 Pre/Post-conditions,明確標註 Non-goals 與不可破壞條件 |
| 上下文管理 | 直接貼入 500 行錯誤日誌或整個龐大專案目錄 | 提取最小可重現範例(MRE)、精準型別定義與關鍵介面 |
| 架構審視 | 只要程式能跑就按 Accept,不管抽象是否洩漏 | 檢視模組深度(Deep vs. Shallow Modules),確保接縫清晰 |
| 審查與驗收 | 讓同一個 AI 自我保證「程式碼完全正確」 | 由獨立 Reviewer 與自動化測試套件(CI)進行機械式硬驗收 |
1. 需求契約化:防止任務在執行中「悄悄改義」
AI Agent 最常見的失敗不是「語法錯誤」,而是「語意漂移」——在實作過程中擅自調整了邊界條件,最後解決了一個看似相關但不是你真正需要的子問題。
盡職工程師在呼叫 AI 前,會先建立最小任務契約:
- 明確的不可變條件(Invariants):例如「在任何併發情境下,帳戶餘額不得為負數」。
- 清楚的非目標(Non-goals):明確告知「本次變更不包含快取機制重構,請勿更動現有 Redis 模組」。
- 具體驗收證據:指定需通過的測試清單或 API 響應結構。
2. 架構接縫與「深模組」把關
AI 天生傾向「局部最優解」。當你要求它增加功能時,它往往會選擇最快速、最直覺的侵入式修改:在既有函式加兩個 if-else,或者在全域狀態多塞一個變數。
若缺乏架構自律,系統很快會退化為充滿膠水代碼(Glue Code)的「淺模組」集合。
盡職工程師懂得評估 AI 提出的設計:
- 這個模組的表面積是否過大?(Interface 簡單,內部邏輯深厚才是好設計)
- 這個改動是否打破了既有的單向依賴?
- 未來的維護者(包括 AI 自己)是否容易理解這個接縫?
3. 獨立審查:拒絕「盲目 LGTM」
當 AI 寫出的代碼看似優雅、註解完整時,人類大腦很容易產生「認知惰性」,順手按下合併。然而,AI 極度容易在以下領域產生致命盲點:
- 併發與競態條件(Race Conditions);
- 邊界溢位與時區/精度截斷;
- 錯誤復原路徑中的資源洩漏;
- 安全漏洞(如授權繞過或不安全的序列化)。
盡職工程師堅持**「程式碼作者與審查者分離」**原則:不讓生成程式碼的模型自行打分數,而是透過靜態分析、模糊測試(Fuzz Testing)與人工批判性走查,驗證關鍵路徑與邊界條件。
結語:AI 時代的工程師護城河
AI 沒有消除軟體工程的基本功,而是將其價值推到了最前線。
當編寫語法(How)變得極度廉價,定義問題(What)、判斷架構合理性(Why)與確保系統可靠度(Verification)就成了工程師最核心的護城河。「盡職」不再只是工作態度,而是決定個人產出能否在 AI 時代形成十倍複利競爭力的技術分水嶺。
