我幾乎不讀程式碼,那我是怎麼理解系統的?
整理幾乎不直接讀程式碼的情況下,如何透過工作流程、規格、系統分工與追問理解系統,也釐清這不等於能獨立修改。
現在這個委託專案有前端、後端、文件處理服務,也拆成多個 repo。
整套系統已經比 Day 1 那個個人網站複雜非常多。
但我實際開發時,幾乎不直接讀程式碼。
平常我很少打開某個檔案,去看一段邏輯到底怎麼寫;遇到 bug,也通常不是自己先進 codebase 找問題,而是把現象交給 Codex,讓它去定位。
如果只看「我有沒有親自讀很多 code」,現在甚至比 Day 1 更少。
但我對系統的理解,已經和當時很不一樣。
AI Coding 工具本身也變了
Day 1 做個人網站時,ChatGPT 主要還是在聊天視窗裡提供程式碼。
我說想做什麼,它產生 HTML、CSS、JavaScript,或者告訴我應該建立哪些檔案。
接著再由我把這些內容複製、貼進本機專案。
當時有一大段工作是:
AI 把程式碼交給我,我再把程式碼搬進專案。
現在的 Codex 已經可以直接讀取 workspace 裡的程式和文件、修改實際檔案,也能跨不同 repo 處理同一個需求,自己執行測試和檢查。
連「把程式真正寫進專案」這件事情,都已經可以大量交給 Agent。
所以我的日常工作也往前移了。
我現在主要參與的是實作以前的理解
有新的需求時,我通常不會直接叫 Codex 開始改程式。
前面會先走 Spectra/OpenSpec 的規格流程,把這次到底要解決什麼、準備怎麼做,以及可能影響哪些部分先討論清楚。
我會看自然語言寫成的 proposal、design 或其他文件。
如果牽涉操作介面,也會先看 UI 設計稿。
這些都不是程式碼。
但它們會先說明:
這次要改什麼。
使用者最後要怎麼完成工作。
哪些系統部分會參與。
不同部分之間大致怎麼配合。
資料可能怎麼流動。
有哪些條件需要被維持。
真正進到程式實作以前,已經先有一個我比較能讀懂,也能參與修改的版本。
這和 Day 1 很不一樣。
當時我常常直接從需求跳到一大段生成好的程式。
現在,中間多出了一整層可以先討論的東西。
看不懂 design,我還是會繼續問
當然,自然語言寫成的 design,不代表我一定看得懂。
有些工程機制對我來說還是很抽象。
這時候我的做法通常也不是直接打開程式碼,而是繼續問 Codex。
這個機制到底怎麼運作?
為什麼要這樣分?
如果換另一個方案,會多出哪些成本或限制?
如果第一次解釋太抽象,我會請它換成白話。
不同系統之間的關係比較複雜時,我也會請它畫 Mermaid,把資料或工作怎麼流動畫出來。
所以我現在很多對系統的理解,不是從一個個檔案往上拼。
更常是先理解:
這個需求在整套系統裡要怎麼成立。
接著再理解:
誰負責什麼。
彼此怎麼配合。
不同做法有什麼差別。
Codex 寫完之後,我還是會追問「為什麼」
真正開始 Coding 之後,我通常不會跟著逐行看。
如果出了 bug,也大多先讓 Codex 去定位。
但它找到問題、提出修改方式之後,我還是會繼續問背後的機制。
為什麼問題會出現在這一層?
原本的設計是怎麼運作?
為什麼需要經過另一個服務?
這次修改是在維持哪個條件?
所以我現在參與工程的方式,比較不像跟 Agent 一起逐行寫程式。
更接近:
讓 Agent 負責大量實作,但要求它把實作背後的機制講到我能繼續參與判斷。
但「理解系統」和「能獨立修改」不是同一件事
這裡有一個很重要的能力邊界。
我現在可以跟著討論:
某個需求可能牽涉哪些系統部分。
為什麼某個責任放在這一層。
不同方案會帶來什麼影響。
一次修改可能還需要同步調整哪些地方。
但如果把 Codex 拿掉,只剩下這幾個 repo,要我自己找到實際應該修改的程式、讀懂現有實作,再獨立完成修改,我沒有把握。
所以:
理解這套系統,和能不能不靠 Agent 自己完成修改,是兩件不同的事。
我目前做到的是前者的一部分。
後者還沒有。
這和 Day 1 到底差在哪裡?
Day 1 時,我也知道自己想要什麼,而且最後看得到網站真的動起來。
但需求和結果中間,那套網站到底怎麼組成、哪些部分怎麼互相影響,對我來說幾乎整塊都是黑盒。
ChatGPT 給我程式碼,我貼進去。
結果不對時,我不知道是哪個檔案有問題,也不知道改一個地方為什麼會影響另一個地方。
現在我直接看的程式碼反而更少。
但需求和結果中間,我已經看得到:
- 工作流程
- 規格
- design
- 系統責任
- 資料流
- 工程選擇
- 不同方案的取捨
我不一定能直接確認它們最後對應到哪一段實作,但至少整套系統不再只剩「需求」和「結果」兩個端點。
所以 Day 1 到現在的差別,不是:
以前不會寫,現在會寫。
也不是:
以前看不懂 code,現在都看懂了。
更接近:
以前我幾乎看不到需求怎麼一路變成系統;現在我已經開始能看見中間的結構,也能參與其中一部分判斷。
但這又留下下一個問題。
如果我對很多工程概念的理解,都來自 Codex 的說明:
我聽懂了,到底代表什麼?