iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0

今天講一種更難處理的:規格說了,而且說了兩件不能同時成立的事。這一種的難處在於,它不是「AI 做錯了」。是這個案子從一開始就沒有一致的判準,而沒有人發現。

規格自己跟自己打架

前面兩種機制,規格至少是一致的,只是不完整。而這個案子還有一種更難處理的情況。Prototype 是拿給客戶看過、客戶點頭的。它呈現的是客戶想要的新體驗。步驟少一點、一頁看完、操作方便一點。

而同一個案子的規範文件裡,有一條寫著:「絕對禁止異動 DB Schema」。

問題是,Prototype 上那些「方便」,有一部分需要資料庫裡根本沒有的資料,或需要用資料現在不支援的方式去組織。

Prototype   說:這裡要這樣呈現       (客戶要的新體驗)
DB + 規範  說:資料不長這樣,不准改 (既有系統的現實)

兩份都是規格,都有權威,而它們要求的事情不能同時成立。

這到底是技術升級,還是規格變更?

那個矛盾的來源,是這個案子從頭到尾沒有回答一個問題。

而這兩件事的驗收判準是相反的:

  技術升級 規格變更
判準 跟舊系統一樣 比舊系統好
舊系統那些怪規則 照做——那是規格 拿掉——那是負債
Prototype 上的新設計 不做——超出範圍 照做——那是目的
「多了一個欄位」 違規 加分

同一個動作,在兩種判準下,一個是違規、一個是加分。

而這個案子是混在一起的:技術架構要升級(Web Forms 換成前後端分離)、介面體驗要改善(那份 Prototype)、但資料與行為不准動(禁止異動 Schema,後來又補了行為複製規範)。

三件事各自都有道理。合起來沒有一致的判準。

那 AI 怎麼判斷?它不判斷

答案很簡單,而且完全符合前面講的那個模式:

它不會停下來說「這兩份文件互相矛盾,請先決定」。
它會挑一份照做,然後產出一個看起來很完整的東西。

而它挑的,通常是視覺上最具體的那一份。Prototype 有畫面、有欄位、有按鈕位置;「禁止異動 Schema」只是一行字。具體的贏過抽象的,這跟哪一個才對無關。

然後兩條路都是死的:

  • 照 Prototype 做 → 資料撐不住,或者繞過 schema 用奇怪的方式硬湊
  • 照 DB 做 → 客戶說「這跟我看到的 Prototype 不一樣」

而 AI 沒有第三條路,因為第三條路不是技術。

「這一頁算技術升級還是規格變更」是一個範圍決定。它牽涉合約、工時、客戶期待,需要有人拍板。這種問題不能外包給任何一個執行者,不管那個執行者是 AI 還是資淺工程師。

所以這一篇真正的教訓,比「AI 多做了」更前面一步:

在丟給 AI 之前,每一個畫面都要先被歸類:這是「複製舊的」還是「做新的」。
沒歸類的畫面,AI 會替你歸——而它會歸到看起來比較具體的那一邊。

https://ithelp.ithome.com.tw/upload/images/20260905/20178262cF8xxAkNNj.png

這個案子其實選過邊,只是選在第四個月

回頭看 Day 02 那條時間軸,有兩行現在讀起來意思完全不一樣:

第 2 個月   開始出現規範文件——API 命名規範、「絕對禁止異動 DB Schema」
第 4 個月   主規範文件大改寫,加入「行為複製規範」

**「行為複製規範」這五個字,就是這個案子第一次明確選邊。**它的意思是:以舊系統的行為為準。 也就是——這是技術升級,不是規格變更;Prototype 上那些新體驗,該讓位給舊系統的實際行為。

這個決定是對的。問題只有一個:它出現在第四個月。

而在那之前的三個月裡,每一個畫面、每一個欄位、每一次「這裡要不要照 Prototype」,都是當下由某個人(或某個 AI)各自判斷的。判斷的依據不一致,因為根本沒有依據。

所以那 187 張問題單裡,有多少是「AI 做錯了」、有多少是「兩種判準各做各的」,我分不出來。這也是我沒有辦法給你一個乾淨數字的地方。

那要怎麼歸類

這一篇如果只講「要先決定」,那跟沒講一樣。所以說一個具體的做法。每個畫面在進入開發之前,貼一個標籤,只有三種:

標籤 意思 驗收時跟什麼比
複製 行為以舊系統為準 舊系統的實際行為
改版 行為以新設計為準 Prototype/新規格
新做 舊系統沒有這個東西 需要一份完整規格,不能只有畫面

三件事跟著標籤走:一、驗收基準跟著標籤走。 標「複製」的畫面,多一個欄位就是違規;標「改版」的畫面,多一個欄位要看是不是設計要的。同一個現象,兩種判準。所以標籤決定了誰對。

二、沒有標籤的畫面不能開工。 這是最重要的一條。沒標籤代表「還沒有人決定」,而沒有人決定的東西,交給誰做都會被做出一個答案來。差別只在那個答案是誰的。

三、標籤要進規格檔,不是口頭講。 口頭講的東西 AI 讀不到,而且三個月後沒有人記得當初講了什麼。它應該是規格檔裡的一個必填欄位,填空的才不給過。

第三條聽起來很像小題大作,但它跟前面兩條的差別是:前兩條是規矩,第三條是機器擋得住的規矩。 這兩者的差距有多大,是後面幾個 Part 要處理的主題。

而這一題不能外包

最後說清楚為什麼這件事不能丟給 AI,也不能丟給任何一個執行者。「這一頁算升級還是改版」牽涉的是合約範圍、工時、以及客戶當初被賣了什麼。它不是技術判斷,它是商業判斷。

而如果沒有人做這個判斷,它不會消失。它會被下游的某個人用最便宜的方式做掉。在這個案子裡,做掉它的是 AI,方法是「挑看起來比較具體的那份文件」。

範圍問題如果不在上游被決定,就會在下游被猜。

明天

明天換一個案子,而且它的失敗方式跟前面這幾天剛好相反:功能全對、測試全綠、覆蓋率 85%。但客戶說不符合開發規範。

本系列所有案例均經去識別處理,不指涉任何特定客戶、系統或產業。


上一篇
Day 6 - 過猶不及:規格說什麼就是什麼
下一篇
Day 8 - 測試全綠,但不符開發規範
系列文
綠燈不等於做對:AI 開發的驗收工程 ——從兩個失敗的案子,到驗收交付13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言