最近看到 Kent Beck 一段話,我覺得非常值得在今天這個 Claude Code 與 AI coding 工具快速普及的時代,再重新讀一次。

他提到:

“One of my frustrations with ‘scientific’ studies of TDD is that they concluded that TDD created more reliable software but took longer.”

以及他認為真正關鍵的問題其實是:

“The important question is how long other workflows would take to get to the same level of reliability.”

這兩句話,點出了一個很多工程團隊很容易忽略的盲點。

很多人看到「TDD 讓軟體更可靠,但花比較久」這種結論時,直覺會覺得,既然比較慢,那是不是代表效率比較差?

但 Kent Beck 真正想表達的意思不是這樣。他在問的是:如果不用 TDD,而是用其他 workflow,最後也要把系統做到同樣可靠、同樣穩定、同樣可承擔真實風險,那總共要花多久?

這裡的關鍵,不是「誰比較快做出第一版」,而是「誰比較快到達同一個品質終點」。

因為很多方法看起來比較快,往往只是比較快做出一個「能跑的版本」。但從能跑,到真正可靠、可驗證、可交付、可上線,中間通常還有很長一段路,包括:

  • 補測試
  • 修 bug
  • 補邊界條件
  • 處理例外流程
  • 修正需求理解偏差
  • 補齊整合驗證
  • 確保上線後不會出大事

所以,如果一種方法只是前面衝得快,後面卻要花更多時間補洞,那它不一定真的比較快。它只是比較早看起來像完成而已。

Kent Beck 後面又講了一句非常重,但也非常精準的話:

“Nobody cares! 80% of a payroll system is the same as 0% of a payroll system.”

這句話如果只看表面,可能會覺得很激烈。但他真正想說的是:

對於薪資系統、金流系統、交易系統、報稅系統、醫療系統這類高正確性場景來說,80% 完成,往往不具備真正的可交付價值。

因為剩下的 20%,常常才是最困難、最關鍵、最不能出錯的部分,例如:

  • 各種稅務與法規例外處理
  • 邊界條件下的計算正確性
  • 外部系統失敗時的補償機制
  • 例外付款與特殊案件處理
  • 審計、追蹤、覆核與合規要求

也就是說,真正決定一個系統能不能上線的,不是你把主流程做出了多少,而是你有沒有把那些不能錯的地方也做對。

Kent 最後這句,我認為幾乎可以當成今天 AI 開發時代的提醒:

“Don’t tell me it doesn’t take as long to not travel as far. Tell me how long it takes to get to the same destination.”

我對這句話的理解是:不要只比較前期速度,請說明達到同等品質終點的總時間。

這也是為什麼我認為,在 Claude Code 時代,測試與規格不是變得比較不重要,而是變得更重要。

因為當 AI 可以快速幫我們:

  • 生成程式碼
  • 重構模組
  • 補測試樣板
  • 寫 migration script
  • 整理文件與技術方案

真正的瓶頸就不再只是「寫不寫得出來」,而是:

  • 需求有沒有講清楚
  • 商業規則有沒有定義完整
  • 邊界條件有沒有先想過
  • 驗收標準是否明確
  • 改完之後是否真的沒破壞既有功能
  • 產出的內容到底是不是做對,而不只是做出來

換句話說,AI 加速的是程式生成,測試保障的是正確性,規格決定的是方向。

如果沒有測試,AI 幫你加速的,不一定只是交付,也可能是錯誤擴散的速度。如果沒有規格,AI 幫你提升的,不一定只是效率,也可能是高效率地做錯事。

所以我越來越認為,Claude Code 時代真正要升級的,不只是 prompt 技巧,而是整個工程方法。

我的理解很簡單:規格,決定 AI 往哪裡走。測試,決定我們能不能相信它走對了。

有規格、有測試、有明確驗收標準的團隊,Claude Code 會像渦輪增壓器。沒有這些基礎的團隊,Claude Code 也可能只是把原本的返工、誤解與技術債放大而已。

所以如果要用一句話總結 Kent Beck 這段話,以及它對今天 AI coding 時代的意義,我會這樣說:

不要只比較誰比較快寫出程式,要比較誰比較快交付一個真正可靠、可驗證、可上線的系統。寫得快,從來不是終點。更快走到正確、可靠、可被信任的終點,才是。