iT邦幫忙

0

從「寫程式」到「寫規格」:2026 年台灣開發者的代理開發轉型指南

  • 分享至 

  • xImage
  •  

2025 年,我們還在為 Vibe Coding 興奮。

2026 年,比較誠實的說法是:大家開始收拾它留下來的東西。這句話不好聽,但很多團隊應該有感。

不是說 Vibe Coding 沒價值。它很有價值,特別是在原型、內部工具、活動頁、一次性腳本這些地方。你有一個模糊想法,丟給 Cursor、Claude Code 或其他代理工具,幾分鐘後畫面能跑、API 能接、甚至測試也補了一點。那種速度很難回頭。

但工程現場最麻煩的東西,通常不是「不能跑」。

最麻煩的是「看起來可以跑」。

它過了 happy path,demo 起來很順,commit message 也寫得像個認真的人。然後三週後,某個同事才發現權限邊界被繞過、資料同步有 race condition、測試只驗到表面,或是整個模組多了一層沒人敢動的抽象。

這就是 Vibe Debt。不是傳統技術債那種「我們知道先欠著」的債,而是更糟的版本:一開始大家甚至不知道自己欠了什麼。

Software 3.0 不是叫你少寫 code,而是叫你重新理解 code

Andrej Karpathy 把這波轉變稱為 Software 3.0。粗略講,Software 1.0 是人類寫明確程式碼,Software 2.0 是用資料訓練模型,Software 3.0 則是用自然語言去驅動大型語言模型完成工作。

這個說法很容易被誤讀成:「以後英文就是程式語言,所以工程師不用懂程式了。」我不太買這個版本。

它太省事了,也太危險。

自然語言變得重要,不代表工程消失。剛好相反。當你可以用自然語言叫一個代理改上百個檔案,工程能力只會變得更重要,因為你現在不是在打一行 code,你是在下放一段決策。

差別很大。

以前你寫錯一個 function,錯誤範圍通常還算局部。現在你給代理一個模糊任務,它可能替你重命名 API、改資料模型、補一堆它自己想像出來的測試,順便把本來很清楚的模組邊界揉成一團。速度變快,爆炸半徑也變大。

所以這波轉型不是從「會寫程式」變成「會聊天」,而是從「直接寫實作」變成「先寫出代理能安全執行的規格」。

規格不是文件,是控制面

很多工程師聽到規格書會皺眉。這很正常,因為我們看過太多沒人維護的 PRD、過期的 wiki、寫得像作文比賽的需求文件。

但在代理開發裡,規格不是拿來裝正式的文件。

規格是控制面。

它要回答幾個很具體的問題:

  • 這次任務的邊界在哪裡
  • 哪些檔案可以動,哪些不能動
  • 既有行為有哪些不能破壞
  • 驗收條件是什麼
  • 測試要怎麼證明它真的完成
  • 如果代理做出額外重構,要不要接受

這些東西以前也重要,只是人類工程師常常靠默契補掉。代理沒有這種默契。它有上下文,但沒有責任感;它能推理,但不會替你的產品承擔後果。

這就是為什麼「寫規格」會變成 2026 年很硬的工程技能。不是會議室裡那種規格,是能拿來約束工作的規格。

你不是為了讓文件好看而寫。你是在替一個很快、很有用、但會亂猜的執行者畫邊界。

一份代理讀得懂的規格,應該長什麼樣子

我通常會把代理規格拆成五段。不需要華麗,但要夠硬。

第一段是背景。不要寫公司願景,也不要寫抽象價值。只要說清楚現在系統怎麼運作,這次為什麼要改。

例如:

目前後台的 user export 只支援全量匯出。客服需要依照 created_at 區間匯出使用者,避免每次產生超大 CSV。

第二段是任務範圍。代理最怕任務範圍模糊,因為它會用「看起來合理」的方式自行補完。

只修改 admin user export 流程。
不要改公開 API。
不要調整 user schema。
不要重構既有 CSV formatter。

第三段是輸入與輸出。這一段越具體,後面 review 越省力。

新增 start_date 與 end_date query params。
日期格式使用 YYYY-MM-DD。
輸出仍為既有 CSV 格式。
沒有帶參數時維持原本全量匯出行為。

第四段是驗收條件。這裡不要寫「功能正常」。那等於沒寫。

- start_date/end_date 都存在時,只匯出區間內使用者
- 只帶 start_date 時,匯出該日期之後的使用者
- 只帶 end_date 時,匯出該日期之前的使用者
- 日期格式錯誤時回傳 400
- 既有無參數匯出測試必須保持通過

第五段是驗證命令。

完成後執行:
- pnpm test admin-user-export
- pnpm lint

這種規格不性感,但有用。它把代理從「幫我弄一下」拉回「照這個合約做」。

工程的成熟度,很多時候就差在這裡。

Reviewer 陷阱:你以為自己在審 code,其實只是在看 code

代理開發最容易讓人中毒的地方,是它一開始真的很準。

前幾次你仔細看 diff,發現沒什麼問題。後來你開始只看測試。再後來你覺得小改動不用看那麼細。最後,你按 merge 的速度越來越快,心裡還覺得這就是效率提升。

這就是 normalization of deviance 在工程流程裡的樣子。

它通常不是某一天突然做了很蠢的決策,而是每天都稍微降低一點標準,而且每次都沒有出事。久了之後,團隊就會把「沒出事」誤認成「很安全」。

AI 代理讓這件事更容易發生,因為它產出的東西通常很像真的。命名合理,註解完整,測試看起來也有補。它不像菜鳥工程師那樣明顯露餡,反而更容易讓 reviewer 放鬆。

所以 2026 年最危險的工程師,不是不會用 AI 的人。

而是那種看過幾次 AI 寫對,就開始相信自己可以不用理解的人。

Comprehension & Verification 會變成高薪技能

很多人討論 AI 寫 code,都把焦點放在輸出速度。

但在真實團隊裡,瓶頸很快會轉移。code 產生變快後,卡住的地方會變成理解、整合、驗證、責任歸屬。

也就是說,真正值錢的能力會變成:

  • 看得懂代理為什麼這樣改
  • 判斷它有沒有碰到不該碰的邊界
  • 發現測試覆蓋不到的行為
  • 看出抽象是不是提早了
  • 知道什麼時候該要求它重做,而不是自己硬吞

這聽起來很像以前的資深工程師能力。沒錯。只是現在它變得更稀缺,因為低品質實作的產量被 AI 放大了。

以前一個人一天只能寫出有限的爛 code。現在一個人可以用三個代理同時產生三倍的爛 code,而且都包裝得很像合理方案。

這不是反 AI。只是承認一件很基本的事:產能上升後,品質控制如果沒有同步上升,系統只會更快壞掉。

台灣開發者真正要避開的,不是被 AI 取代

台灣軟體圈很愛問一個問題:工程師會不會被 AI 取代?

這個問法太粗。

比較貼近現場的風險是:某些工程師會被「PM + AI + 一個便宜收尾的人」取代。

PM 用 AI 做出 prototype,老闆覺得看起來可以,接著找工程師把東西接上正式系統。工程師如果只扮演收尾工,負責修 bug、補型別、擦屁股,價值感一定會被壓低。

問題不在於 AI 太強,而在於你被放在流程太後面。

要避免這件事,工程師不能只等需求丟過來再實作。你要往前站一點,參與規格怎麼被寫、任務怎麼被切、哪些東西可以交給代理、哪些東西要先做技術設計。

換句話說,你要成為那個設計代理工作流程的人,而不是最後被叫來整理代理輸出的人。

這個角色不一定叫 architect,也不一定有漂亮頭銜。可是在一個到處都有代理輸出的團隊裡,它會越來越重要。

一個比較務實的代理開發流程

如果要把這件事落地,我會建議用很樸素的四步驟。

1. 先寫任務合約

不要一開始就開聊天視窗丟需求。先寫一份短規格,包含背景、範圍、驗收條件、不能碰的地方。

這份文件可以很短,甚至只是 issue 裡的一段 markdown。但它必須具體到代理不能自由腦補。

2. 讓代理先回覆計畫,不要直接改

好的第一步不是「請實作」。先叫它說明會改哪些檔案,以及為什麼。

你要在它動手前先抓方向。方向錯了,越快越糟。

3. 小步執行

不要一次叫代理完成整個功能。把任務切成 migration、domain logic、API、UI、test 幾個明確階段。每一階段都要能 review。

這很煩,但比最後看一個兩千行 diff 好太多。

4. 用測試與 review 雙重驗證

測試不是取代 review,review 也不是取代測試。

測試負責抓可機械化的錯。review 負責判斷設計、邊界、可維護性與產品語意。代理時代最常見的錯,就是把其中一個當成另一個的替代品。

結語:會寫 code 還是重要,只是不夠了

我不相信「工程師不需要懂程式」這種說法。

剛好相反。你越想有效使用代理,越需要懂系統、懂架構、懂測試、懂失敗模式。只是你的輸出形式會改變。你不一定每次都親手打完實作,但你必須能寫出規格、設計流程、限制權限、審查結果。

Vibe Coding 是很好的起點,因為它讓我們看到軟體可以被更快地探索。

但如果要把探索變成產品,就不能只靠 vibe。

2026 年的開發者真正要練的,不是更會跟 AI 聊天,而是更會把不清楚的需求變成可執行、可驗證、可維護的規格。

以前我們寫 code 給機器跑。

現在,我們也要寫規格給代理跑。

這不是工程師價值下降。這是工程師的責任範圍變大了。

參考資料


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言