跳到主要內容
74% 的 AI 程式碼要返工:你的 spec 少寫了什麼

74% 的 AI 程式碼要返工:你的 spec 少寫了什麼

AI 程式碼上線後要大改,原因幾乎都不是模型不夠強,是 context 不足與系統假設有誤。當 agent 能把清楚的規格直接變成軟體,工程師的價值就移到「決定規格裡放什麼」。這篇拆 spec 該寫到多細、真正該寫進去的是什麼,以及這對你的履歷代表什麼。

目錄+

New Relic 的《State of AI Coding 2026》調查裡,74% 的組織說至少四分之一的 AI 程式碼上線後需要大幅返工。

四分之一。這不是小數字。

但真正值得看的是他們列的原因:context 不足、資料不完整、系統假設有誤。

沒有一項是「模型能力不夠」。

也就是說,返工的原因不在 agent 那一端,在你這一端。你沒講清楚的事,它就自己補了。

這篇拆三件事:spec 該寫到多細、真正該寫進去的是什麼、以及這對你的履歷代表什麼。


瓶頸移動了,工作也跟著移

系列第一篇裡吳恩達的第四項技能叫 shaping the build。

他的推論很短:只要 spec 寫得夠清楚,agent 交付的能力正在快速變好,所以工程師的工作重心正在往「決定 spec 裡該放什麼」移動。

白話一點就是,不要再期待有人給你一份 pixel-perfect 的設計稿,你只負責照著實作。

傳統軟體團隊的分工是三段式:PM 跟客戶談、寫需求,設計師做 mockup,工程師照規格做。

這條線之所以成立,是因為實作本身很貴。

當 agent 可以把清楚的規格直接變成能跑的軟體,實作就不再是唯一的瓶頸。這道分工線也就開始鬆動。

團隊還是需要有人找出真正值得解決的問題、理解客戶要什麼、權衡各種取捨。而這些工作,正在往工程師身上移。

講直接一點:工程師工作裡「結果明確、單純執行」的那部分在減少,「充滿不確定、需要人類判斷」的那部分在增加。


分界線:這個任務有沒有唯一正確答案

不是每件事都需要 spec。判準只有一條。

有唯一正確答案的任務,不要寫 spec。 找 bug、查為什麼這支查詢變慢、修 CI 上掛掉的測試。你把現象丟給它就好,它會自己去找。你寫的任何規格,都只是在限制它的搜尋範圍。

開放式任務才需要。 「做一個訂閱管理頁面」沒有唯一解。你不寫,agent 就會自己編一個。編出來的通常能跑,但不是你要的那個,而且它不會告訴你它編過。

中間還有一種狀態值得認出來。

你自己也不確定要什麼的時候,先讓它做一個能跑的版本,再拿那個版本當 spec 的草稿。對著空白畫面想需求,比對著一個具體的錯誤版本想需求難得多。

上一篇談的五個審查點其實就是在收拾這個問題的後果。你沒寫進 spec 的取捨,agent 都替你決定了,而且決定得很有信心。


spec 裡真正該寫的不是實作,是取捨的優先順序

這是整件事最容易寫錯的地方。

大多數人想到「寫詳細一點」,寫出來的是更多實作細節:用哪個函式庫、資料表怎麼切、元件怎麼命名。

而這些恰好是 agent 最擅長、也最不需要你操心的部分。

真正該由你決定、agent 沒有立場決定的,是取捨的優先順序。長這樣:

  • 這個功能慢一點可以,但絕對不能算錯。可靠度優先於速度。
  • 這個功能可以不即時,但每次呼叫要壓在多少錢以內。成本優先於延遲。
  • 這個資料寧可少給,也不能給錯人看。安全優先於功能完整。

這些句子寫進 spec,agent 的每一個實作決定就有了判準。

不寫呢?它會用一個你看不到的預設值。通常是「先做出來能跑」。

有一個很好用的檢查法:spec 寫完之後,刪掉所有講「怎麼做」的句子。剩下的東西如果還足夠讓另一個工程師做出正確的取捨,這份 spec 就夠了。剩不下什麼,代表你寫的是實作說明,不是規格。


這件事跟 evals 是同一件事的兩面

Hamel Husain 和 Shreya Shankar 在講 AI 產品的 evals 時,有一個說法很值得借過來:evals 是 AI 產品的新 PRD。

意思是,寫得好的 eval 本身就是一份會持續執行的產品需求文件。它不是寫完放著的文件,是每次改動都會跑一次的規格。

這跟 spec 是同一件事的兩面。spec 說「我要什麼」,eval 說「怎麼知道拿到了」。

只有前者,你會得到一個看起來對的東西。只有後者,你會很精準地量到錯誤的目標。

系列第二篇那套 evals 閉環講的就是後面那一半:從二十筆真實失敗長出自動評分,讓「我要什麼」變成可以被驗證的東西。


Ownership 的紅利,跟它的代價

吳恩達提到另一面:AI 給了你比以前更大的 ownership 空間,你可以自己找出有意思的問題、自己執行。

但要吃到這個紅利,你得知道怎麼推動一個專案。他點名的判斷是:什麼時候該快做一個 MVP 丟給用戶測,什麼時候該慢下來好好蓋。

這個判斷沒有通則,但有參考。三大產品開發迴圈那篇講的是他自己做 0 到 1 產品時的迴圈設計,重點在人類的 context advantage 還剩下什麼。

另一個方向是市場時機。一個專案爆紅,有多少是品質、有多少是時機?當實作變便宜,時機的權重就變高。

代價也很具體。GitClear 分析了 2020 到 2024 年間的兩億一千一百萬行程式碼,發現重構過的程式碼比例從 24.1% 掉到 9.5%,而複製貼上的比例史上第一次超過重構。

做得快不等於做得對。而快的那部分,現在幾乎免費。

利益揭露:以下是聯盟連結。從有想法到有 MVP 這一段,寫文件跟寫程式的時間其實差不多長,Typeless 這類語音轉錄工具適合把口頭想法先變成草稿再整理。


這對履歷代表什麼

系列第一篇提過,這張技能圖不是「想轉職 AI 工程師要學什麼」的清單,是「你現在這份工作再過兩年長什麼樣」的預告。

放到求職上,差別很清楚。

用 Claude Code 全自動求職那套流程已經示範了一半:能被寫進 portfolio 的不是「我用 AI 生了一個 app」,是「我看到什麼問題、設計了什麼架構、AI 錯在哪、我怎麼測出來的」。

前者證明你會用工具。後者證明你會做判斷。

而現在人人都會用工具。


常見問題

spec 要寫多細才夠?

細到能回答取捨問題就夠,不用細到像設計稿。實作細節交給 agent,但成本、可靠度、速度、安全性之間誰先讓,必須由你寫進去。

什麼情況根本不需要寫 spec?

任務有唯一正確答案的時候。找 bug、查為什麼變慢、修測試,直接給現象就好。

工程師還需要等 PM 給需求嗎?

愈來愈不能等。當寫程式不再是唯一的瓶頸,找出值得解決的問題、理解客戶要什麼、權衡取捨這些工作會往工程師身上移。

這對求職履歷代表什麼?

能寫進 portfolio 的不是「我用 AI 生了一個 app」,是「我看到什麼問題、設計了什麼架構、AI 錯在哪、我怎麼測出來的」。


系列到這裡

五篇走完,回頭看吳恩達那四項技能,有一個共同點:只有第一項在講「怎麼做出東西」,另外三項都在講在一個你無法完全控制的系統上怎麼做判斷。

沒有一項是「更快產出更多程式碼」。

四項一起練是不可能的。

如果只挑一項開始,挑 evals。因為那是唯一一項能讓你知道自己有沒有進步的技能。其他三項沒有它,你只能靠感覺。

而靠感覺這件事,開頭那個 74% 已經示範過結果了。