AI 時代的瀑布殭屍:規格驅動開發 (SDD) 如何扼殺你的敏捷力
- 部落格
- AI 時代的瀑布殭屍:規格驅動開發 (SDD) 如何扼殺你的敏捷力
by Justhings發布日期:2025.12.03
AI 時代的瀑布殭屍:規格驅動開發 (SDD) 如何扼殺你的敏捷力
AI 時代的「瀑布流」反擊?為何規格驅動開發 (SDD) 可能扼殺你的敏捷力
在生成式 AI 席捲軟體開發圈的當下,Cursor、Claude Code 等「AI 程式碼代理人(Coding Agents)」正改變我們寫程式的方式。面對只有一個閃爍游標的對話框,許多人感到不安:我們該如何確保 AI 寫出的程式碼是正確的?
為了馴服這些 AI,業界近期興起了一種新方法論——規格驅動開發(Spec-Driven Development, SDD)。它聽起來很有條理、很安全,但在我們這些長期推動敏捷(Agile)的專家眼中,這不禁讓我們背脊發涼:這難道不是披著 AI 外衣的「瀑布流(Waterfall)」殭屍嗎?
今天,我們想透過 François Zaninotto 的觀察,來聊聊為什麼過度依賴文件可能會扼殺團隊的敏捷性,以及我們該如何正確擁抱 AI。
什麼是規格驅動開發 (SDD)?
簡單來說,SDD 的核心邏輯是:在寫 Code 之前,先讓 AI 生成完美的文件。
流程大約是這樣:你給 AI 一個提示詞 -> AI 生成產品規格 -> AI 生成實作計畫 -> AI 生成任務清單。開發者負責審核、修改這些 Markdown 文件,最後才把這些「完美的指令」交給 AI 寫程式。
目前像 GitHub 的 Spec-Kit、AWS 的 Kiro 等工具都在推行這套模式。乍看之下,這解決了 AI 容易「幻覺」或「脫軌」的問題,確保產出符合商業需求。
但魔鬼藏在細節裡。
敏捷視角:為什麼 SDD 是走回頭路?
身為敏捷實踐者,我們發現 SDD 正在犯下過去三十年軟體工程試圖修正的錯誤:
1. 文件地獄與「假敏捷」
SDD 會產生成千上萬行的 Markdown 文件。開發者變成「審查員」,花費 80% 的時間在閱讀冗長的規格,試圖在看起來很專業的廢話中抓出邏輯漏洞。 更糟糕的是,這些工具會生成所謂的「使用者故事(User Stories)」,但內容卻是「身為系統管理員,我希望資料庫欄位增加...」這種技術描述。這不是敏捷,這是把官僚主義自動化了。
2. 雙重審查的浪費 (Muda)
在 SDD 模式下,你需要先審查包含程式碼邏輯的「規格」,然後等 AI 寫完後,再審查一次「程式碼」。你的工作量不但沒有減少,反而因為要維護兩套真相來源(文件與程式碼)而加倍。
3. 虛假的安全感
我們常說「前期大量設計(Big Design Up Front)」是行不通的,因為軟體開發本質上是非確定性(Non-deterministic)的。SDD 試圖用厚重的計畫來消除不確定性,這在過去行不通,現在換成 AI 來寫計畫也一樣行不通。AI 常常會無視規格中的測試要求,甚至自己「腦補」測試結果。
4. 試圖「移除開發者」的迷思
SDD 隱含了一個危險的假設:「如果規格夠好,我們就不需要開發者思考了。」 這讓人想起早期的 No-Code 運動。但事實是,要能看懂並修正 SDD 產出的規格,你必須同時是資深的商業分析師又是資深的開發者。這不但沒降低門檻,反而提高了對審查者的要求。
真正的出路:自然語言開發 (Natural Language Development)
敏捷宣言早就告訴我們:「可運作的軟體重於詳盡的文件」。
在 AI 時代,我們認為正確的做法不是回歸瀑布流,而是超級敏捷(Supercharged Agile)。我們不該把複雜需求轉化為複雜文件,而應該將複雜需求拆解為一系列簡單的實驗。
這就是 François 提到的「自然語言開發」,或者是我們更熟悉的精實創業(Lean Startup)循環:
識別風險:找出目前最不確定的假設。
極簡實驗:用自然語言告訴 AI:「幫我做一個簡單的功能 X」。
快速迭代:看 AI 做的結果。如果不對,用對話修正;如果對了,進行下一個小功能。
François 分享了他用 Claude Code 在 10 小時內開發出一款 3D 雕刻工具的經驗——他沒有寫任何一行規格文件。他只是像與同事結對編程(Pair Programming)一樣,持續與 AI 對話、修正、前進。
別讓 AI 變成你的火車頭,把它當成你的引擎。
規格驅動開發 (SDD) 就像是把 AI 這顆強力的內燃機,裝在笨重的舊式火車頭裡,限制在鋪好的鐵軌(規格)上跑。但現代軟體開發需要的是跑車、飛機,是可以隨時轉向、適應市場變化的靈活性。
在這個 AI 賦能的時代,我們鼓勵大家:
減少文檔迷戀:別花時間去維護那些沒人看的 Markdown。
擁抱對話:學會用精準的自然語言與 AI 協作,而不是命令它。
保持迭代:小步快跑,讓程式碼代理人成為你的「超級實習生」,而不是你的「外包廠商」。
敏捷已死?不,有了 AI,真正的敏捷才正要開始。
本文靈感來自 Marmelab 創辦人 François Zaninotto 的文章《Spec-Driven Development: The Waterfall Strikes Back》
