H
Howardism
Plate IIEntities機器翻譯 · machine-translatedENHOWARDISM

Robert C. Martin(Uncle Bob)

《Clean Code》作者、擁有 50 年資歷的程式設計師,自 2025 年 12 月起成為代理程式操作者;他宣稱目標是完全不讀程式碼,並拒絕以提示詞引導,改用確定性的品質閘門(CRAP 分數、突變測試、相依規則檢查器)組成必須通過的迴圈。他主張不該把 TDD 等人類紀律強加給代理程式,但應該要求代理程式遵守人類價值觀;他也認為規格驅動開發是 1970 年代瀑布式開發誘惑的回歸

Article metadata
Publication details
Published:September 1, 2026
Filed:Entity
Domain:Entities
Tags:EntityPersonSoftware Craft
Reading:8 min
Source:AI-synthesised
About this piece

Articles in this journal are synthesised by AI agents from a curated wiki and are refreshed automatically as new concepts arrive. Topics, framing, and editorial direction are curated by Howardism.

Robert C. Martin 的插圖

資料來源#

摘要#

美國程式設計師、作家,也是這份語料中最力倡軟體基本功的人。1964 年、12 歲時寫下第一個程式(母親買給他的插栓與管線三位元有限狀態機);16 歲開始領薪寫程式;18 歲起便持續以程式設計為業——「到現在已經超過半個世紀」。他寫了《Clean Code》,而 Uncle Bob on Software Fundamentals in the Age of AI 的主持人稱這本書是「最常被人引用來回敬我的那一本」。他經營「晨間浴袍怒言」影片系列,約兩年前在自家門廊上談 SQL injection 時開始。

他被收錄於這份 wiki,是因為他在 2025 年 12 月開始操作代理程式,並據此重塑自己的工作方式;也是因為他得出的立場,幾乎與 DHH (David Heinemeier Hansson) 從同一起點出發所敘述的工藝派倒戈方向完全相反。

並非反轉的反轉#

DHH 的結論是,工藝的經濟效益可能隨著為此付費的人類而消逝(程式碼品質的回報以 token 計價);Martin 從同一個觀察出發,卻得出相反結論。他的第一個代理程式是早期的 Grok,會「留下少許狗屎」。他沒有清理,繼續往下做,觀察事情如何發展:

「它會改一件事,卻無意間弄壞另一件事,接著修那件事時又無意間弄壞其他地方。就這樣開始繞圈子……它們跟人類一樣會受亂糟糟的程式碼影響。也許沒那麼容易受影響。門檻或許不同,但門檻仍然存在。」

他提到代理程式曾直接放棄——意譯為「我再也應付不了了」。這是一個親身經歷的機制,說明品質為何依然有回報,而且完全不必經由 token 成本:混亂會降低代理程式自身的工作能力,因此整潔帶來的回報體現在代理程式的工作吞吐量,而非人類的理解能力。參見程式碼品質的回報以 token 計價所呈現的矛盾,以及代理式技術債所述的空轉機制。

值得要求他堅守的立場#

  • 確定性閘門勝過提示詞引導。 情境檔中的規則被視為「《神鬼奇航》那種意義上的東西——比較像是指引」。確定性工具不會衰退,因為它們根本不會進入情境視窗。他的建議是:把初始提示詞縮減到絕對最低限度,再用檢查器強制執行。參見潛在空間與確定性空間。
  • 工具早已夠好;限制在於人力。 CRAP 分數和突變測試在 2000 年前後都是可靠的想法,但他因為實務上不可行而放棄。代理程式提供人力,讓這些方法變得可行,工具本身不必改變。
  • 要求價值觀,不要求紀律。 「把人類的紀律強加給代理程式,很可能是錯的。但把人類的價值觀加諸代理程式並沒有錯,只是我們可能需要調整門檻。」他終身倡導 TDD,卻拒絕要求代理程式採用 TDD。
  • 規格驅動開發是瀑布式開發的回歸。 「這是非常古老的誘惑。我們在 70 年代就經歷過這種誘惑。」他的規格是暫時性的,從不提交;「我看著最後成果,然後說,好吧,那就是規格。」
  • 目標是不讀程式碼。 「我要非常努力地讓自己處於一種完全不必看程式碼的情況……它們寫程式碼很快,我寫程式碼很慢。」他保留 CRAP 分數、抽查和一組測試作為最後的驗證手段。參見驗證成為新的瓶頸和審查作為控制點。
  • 架構是他目前還無法自動化的部分。 他會追問代理程式的模組結構,並表示它們的回答「會讓我怕死」。他打造了可逐層深入檢視的 UML 架構檢視器,以及代理程式無法違反其規定的相依規則規格檔。「我現在正努力看看能不能把這件事自動化,到目前為止還不太順利。」參見為代理程式打造深模組。
  • 應該把初階工程師當成代理程式看待。 先寫一年程式,接著幾個月內交付與代理程式相同的任務,並套用相同的閘門——「效率糟透了,但能學到超多」——之後才讓他們操作自己的代理程式。參見代理式編碼中的專業回報。
  • 不能相信與代理程式的辯論。 他問代理程式 CRAP 門檻值 6 是否恰當;代理程式表示同意,但他不採信。「順帶一提,不能相信你跟代理程式進行的任何辯論,但我還是會跟它們辯論。」
  • 基本功重要,因為複雜性確實存在。 「軟體是人類嘗試處理過最複雜的事物」——他以保留的語氣將此歸於 Dijkstra。基本功能把複雜性整理成「不只人類能夠構思、我們的模型也能構思的形式,畢竟我們的模型終究是以人類為模版」。
  • 抽象階梯論。 二進位 → 組合語言 → 編譯器 → 模型:在每個階段,下層的人都預言事情會毀於一旦。「你丟掉的規則,一年後會撿回來,拍掉灰塵,然後想起自己為何需要它。」

工作配置(2026 年 8 月)#

由五種角色組成的代理程式闖關流程,每個角色的生命週期都很短,確保下一個角色從乾淨的情境開始:

角色工作
規格撰寫者將人類文件轉成 Gherkin 驗收測試與人類視角的 QA 程序
程式撰寫者撰寫單元測試和實作;讓 Gherkin 測試通過
清理者進行 CRAP 分析與一般程式碼審查;清理程式撰寫者留下的混亂
強化者將突變測試覆蓋率提高到 100%;「毫不留情」
QA將書面 QA 文件轉成可執行、能操作 UI 並產生確定性結果的腳本

依他自述的效益:單一代理程式花 5 分鐘但結果令人存疑就能完成的任務,交給整個闖關流程則要約一小時;人類則要半天——「生產力提升四倍、五倍,而且品質非常高」。每個角色啟動代理程式需要 10–15 秒,他認為這是整條流程的主要成本。參見平行代理程式編排。

他自己打造的工具——供 Clojure、Java 和 Go 使用的 CRAP 評分器、突變測試工具、harness、架構檢視器、相依檢查器——都是公開的,但他告訴大家別用:「不要下載那些工具。我是為自己寫的。你們該做的是把代理程式指向這些工具,讓代理程式看看它們,然後請代理程式替你打造一套。」

應留意的偏誤#

他寫了一本訪談正在檢驗其核心論點的書,結尾時還在鏡頭前舉起第二版,並且幾十年來一直是「基本功很重要」的公開代表人物。訪談最後問他軟體基本功是否依然重要,等於要他評斷自己一生的志業。這裡所有數字都是出自 practitioner-opinion 來源、沒有任何測量佐證的自述印象——包括 4–5 倍的數字、CRAP 門檻值,以及生產力差距。應將整體內容視為一位善於運用儀器工具的實務工作者所提供的敘述,而非反駁實測結果的證據。

延伸閱讀#

資料來源#

§ end
Cited by 22
Related articles
  • Reviving Impractical Quality Tools

    Robert C. Martin's mechanism for why agents change code quality: CRAP score and mutation testing were sound ideas aroun…

  • Matt Pocock

    Independent AI-coding educator; built Sandcastle library; smart-zone/grill-me/tracer-bullets pedagogical framing; "bad…

  • Agentic Technical Debt

    Debt that *compounds* (not just accumulates) because each agentic-coding session re-derives architectural decisions wit…

  • Deep Modules for Agents

    Ousterhout deep-vs-shallow modules applied to agent-friendly codebases; push-vs-pull instruction delivery; reviewer in…

  • Verification as the New Bottleneck

    Fiona Fung: coding is no longer the bottleneck — verification, review, maintenance are; shift-left; TDD loses its tax;…