我不逐行讀程式碼,那我要怎麼知道 AI 做對了?

整理規格、實作證據、測試、AI review 與人工操作等多層驗證,說明如何在無法逐行讀碼時逐步建立信任。

上一篇寫到,我現在已經可以沿著系統理解問題,知道一個需求可能會碰到哪些部分,也大致知道問題可能落在哪一層。

但真的進到 codebase,我還不能自己一路追出完整實作。

那 Codex 說「做完了」之後,我到底怎麼知道它真的把我要的東西做對了?

我現在不是靠單一方法判斷。

而是用幾個不同層次的證據一起看。

目前大致是:

SDD/規格 → Codex 依 TDD 實作 → AI review → 我自己實際操作 UI。

這幾層不是在重複檢查同一件事。

它們各自在回答不同問題。

第一層,先確認「到底要做什麼」

對我來說,驗證不是 Coding 完成之後才開始。

新的需求進來時,我通常會先走規格與 design,把這次到底要解決什麼、預期怎麼運作、哪些條件不能被破壞先整理清楚。

這一層最重要的是:

先確認我們做的是不是對的東西。

如果需求一開始就被理解錯,後面的程式就算完全照規格完成,也可能只是很正確地做出一個我根本不需要的東西。

所以在實作開始以前,我就會先確認:

使用者到底要完成什麼工作?

哪些條件必須成立?

這次修改會不會影響其他地方?

最後的操作方式是不是符合我對這段工作的理解?

這些我不需要先看程式碼才有辦法參與。

程式進入實作後,會留下另一批證據

規格確認後,Codex 才開始真正修改程式。

目前我的流程會搭配 TDD,所以實作本身不只是「程式跑起來了」,還會有測試結果可以對照。

完成後,我也會再讓 AI 從另一個角度重新檢查這次修改。

這些東西有一個共同點:

它們在檢查我自己只看畫面很難看到的部分。

我平常不會逐行閱讀全部程式,也不會逐條人工確認所有測試和 review finding。

但我不再只接受一句:

「已完成。」

我會要求實作留下可以被重新檢查的東西。

至於測試到底能證明什麼、review 又多檢查了什麼,後面兩篇再分開談。

最後,我還是會自己把功能操作一次

前面的流程都通過之後,我還是會真的把畫面打開。

因為有些問題只有把功能放回實際工作情境裡,我才看得出來。

最近就有一次。

使用者上傳文件後,需要打開內容,和系統原本的資料互相比對;如果一次上傳多份,也要能逐份切換確認。

這些功能本身都做出來了。

但我真的操作時,看到的是一個三欄工作台。

我的第一個感覺是:

為什麼確認一份文件,需要一次看這麼多東西?

功能沒有少。

真正有問題的是,這些功能最後被組成了一個太複雜的操作方式。

所以我把版本退回去,要求大幅簡化畫面。

這個問題不是:

程式有沒有照規格做。

更接近:

這些功能放回真正的工作裡,使用者會不會想用這種方式完成?

而這件事,我自己實際操作還是很重要。

前一層通過,不代表下一層不會發現問題

這也是我現在對這套流程最明顯的感覺。

有時候測試都過了。

review 也沒有留下重大問題。

但我自己一操作,還是會覺得:

不對。

反過來,也有些工程上的問題,我只走一次主要操作流程根本不會看到,卻會在前面的自動化檢查或 review 裡被找到。

所以這幾層不是互相取代。

更像是:

每一層都只看得到一部分。

規格幫我確認方向。

程式實作會留下可以重複檢查的證據。

AI review 再換一個角度看一次。

我自己操作,則把這些東西重新放回真正的工作情境。

前一層全部通過,下一層還是可能看到新的問題。

我現在建立的是「信任」,不是「完全確定」

這些方法並不能讓我得到一個結論:

我不用讀程式碼,也可以百分之百確定實作正確。

我目前做不到這件事。

更準確的是:

在我還不能自己沿著程式碼完整驗證實作的情況下,我開始要求每一次實作留下不同形式的證據。

我不是只看最後畫面有沒有動。

也不是只相信 AI 說它已經完成。

我開始用不同層次的證據,逐步建立對實作的信任。

但這個框架裡還有很多問題沒有回答。

測試通過,到底能告訴我什麼?

AI review 和測試又在看不同的什麼?

而我自己走過主要操作流程之後,那些沒有走到的情況又怎麼辦?

接下來三篇,我想把這幾層分開看。