小型功能需求中,最昂貴的部分曾經是撰寫程式碼。如今通常變成「是否要撰寫程式碼」的會議。
這是真實的轉變,也悄然打破許多工程直覺。工程師很早就學到,大多數「小請求」其實不小:它們需要測試、推出計畫、有人思考邊緣案例,並在發布後負責維護行為。一個兩小時的變更,如果碰到系統的錯誤部分,可能變成兩週的干擾。因此我們會推拒:這真的有必要嗎?它屬於這個版本嗎?它是否改變了我們已經同意的合約?我不會放棄這種直覺。
但這種直覺建立在一個正在悄然瓦解的假設上:撰寫程式碼的第一版是昂貴的步驟。對於特定類型的變更來說,已經不再如此。如果你能分辨這些變更和其他變更的差別,就能用可以在三十分鐘內回答的問題,取代「這是否在範圍內?」。
辯論的成本常常高於修補程式
這是我經常看到的模式。有人提出一個小變更,例如在設定頁面上顯示後端已經存在的 last_active_at 時間戳。團隊在討論串中花了四十分鐘。有人說這聽起來有風險。有人想起兩年前的相關遷移。有人提到截止期限。最後我們得出「大概需要一到兩天,可能更久」的結論,主要原因是沒有人真正嘗試過。
這種過程在「嘗試」是昂貴的部分時有意義。你必須停止手邊的工作、把上下文載入腦中、手動做出變更、撰寫測試,然後發現第二層與第三層的後果。當第一次嘗試變得便宜時,捍衛邊界的成本可能高於跨越它。
代理人可以在討論串開始暖身的時間內產生第一個修補程式。它不是免費的,也絕對不會自動正確。但它的成本已經低到足以讓我們停止猜測、去看一個真正的 diff。
第一個修補程式是價格檢查,而不是成品
錯誤在於把生成的修補程式視為交付物。它不是。它是一個探針。它把抽象的範圍爭論轉變成可以審視的具體產物:
- 它是否碰觸到你預期的檔案,還是擴散到五個套件?
- 測試是否顯而易見,還是這個變更難以測試?
- 它是否保留了既有的抽象?
- 它是否悄悄需要新的產品決策?
- 你是否願意在六個月後負責這個行為?
這些問題比「這感覺像範圍擴張嗎?」更好,因為現在你是在根據證據而非感覺來爭論。如果 last_active_at 欄位回傳的是四行 diff 且測試通過,那就上線吧。辯論才是昂貴的部分。然而,如果同一個請求回傳的結果碰觸到 auth middleware,那你就知道這個請求從來都不小。而且你是在三十分鐘內得知,而不是兩天。
這不是讓 AI 做決定。這是用 AI 讓人類判斷變得更便宜且資訊更充分。
撰寫便宜不等於擁有便宜
這是陷阱,也是 AI 時代最重要的區別。一個變更不會因為程式碼生成成本低就變得便宜。只有當人類能自信地審查並擁有結果時,它才算便宜。
一個技術上通過但沒有人想擁有的千行 diff 不是便宜的變更。它是延後的成本。因此,真正的分界線不是「代理人能不能寫這個?」,而是「一個人能不能驗證它?」。
- 新增一個後端已經存在的顯示欄位通常是便宜的。
- 改變授權行為不管 diff 多乾淨都不便宜。
- 重構一個經過良好測試的輔助函式通常是便宜的。
- 改變資料保留語義則不便宜。
即使程式碼很簡單,仍有許多變更值得堅決拒絕。這包括任何改變產品合約、產生支援負擔、或觸及隱私、計費、合規性的變更。AI 降低了產生候選方案的成本,卻沒有降低擁有一個候選方案的成本。
將範圍紀律移到更靠近證據的地方
傳統上,範圍紀律發生在實作之前,因為實作是需要保護的昂貴部分。現在,部分紀律可以移到審查階段。這並不意味著跳過規劃,而是要精確判斷哪些規劃真正有回報。
在重新爭論一個小變更之前,先要求一個受限的嘗試。限制條件才是重點。
產生最小的修補程式。保留在既有的功能旗標之後。不要改變公開合約。新增或更新測試。列出你碰觸的每一個檔案,並指出任何有風險的部分。
如果代理人無法在這些限制下產生乾淨的修補程式,那表示這個請求比你想像的更大,而且你已經在任何人承諾之前就知道它帶有真實的擁有成本。如果它能做到,那也告訴了你一些事情。不管哪一種,你都已經用「這裡是它的成本。我們要付嗎?」取代了「這是否在範圍內?」。
新的技能是為不確定性定價
AI 輔助世界中最好的工程師不會對所有事情都說是,也不會本能地說不。他們是能夠快速為不確定性定價的人。他們知道什麼時候請求是披著實作外衣的產品決策、什麼時候審查會比撰寫更難,以及什麼時候變更小到最負責任的快速答案就是「試試看」。
最後這一點是真正新的。「試試看」過去意味著把開發人員從其他工作中拉出來。現在,對於正確類型的任務來說,它意味著給代理人一個有邊界的指派,並利用結果做出更好的決定。減少猜測的時間,增加監督的時間。減少把實作當作黑箱的時間,增加評估具體產物的時間。
範圍擴張仍然真實存在。但「不,因為任何新程式碼都太昂貴」這個論點,已經比兩年前薄弱許多。產生程式碼的成本下降了。理解、審查與擁有它的成本卻沒有。因此,值得問的問題從「這是不是更多工作?」轉變為「真正的成本在哪裡?」。有時候,對於一個小的、有邊界的變更來說,真正的成本只是找出答案。
說「是」的成本已經改變。說「不」的成本也應該隨之改變。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.