在 QCon London 的演講中,Phillip Mortimer 提出了一個挑戰傳統軟體工程觀念的論點:在人工智慧(AI)主導開發的時代,所有的程式碼正逐漸變成唯寫(Write-only)且一次性(Disposable)的產物。傳統上,我們強調程式碼的可讀性,認為撰寫程式碼的主要對象是未來的維護者,但當 AI 生成程式碼的速度與數量遠超人類處理能力時,這種開發範式正在發生根本性的轉移。
背景與唯寫程式碼的概念
唯寫程式碼(Write-only code)是一個由 Eric S. Raymond 提出的概念,指的是那些極其晦澀、複雜或結構混亂,以至於除了原作者之外(甚至包括原作者本人)幾乎沒有人能理解或修改的程式碼。在過去,這種現象通常出現在追求極端效能或高密度表達的語言中,例如 APL 或正規表達式(Regular Expressions),這類語言用極短的符號代表複雜邏輯,雖然強大但可讀性極低。
Mortimer 指出,AI 生成的程式碼正呈現類似的特性。由於 AI 能在瞬間產生大量且密集的邏輯,人類開發者在面對這種規模的程式碼時,逐行審閱已不再現實。當程式碼的密度增加到人類無法有效閱讀的程度時,它在實務上就變成了唯寫程式碼。
從閱讀程式碼轉向依賴測試
當程式碼變得不可讀,我們如何確保軟體的行為正確?Mortimer 提出了一個核心原則:讓測試定義行為。在唯寫程式碼的環境中,測試案例(Test Cases)不再僅僅是驗證工具,而變成了唯一的正式文件。
開發者不再試圖透過閱讀原始碼來理解程式邏輯,而是透過觀察輸入與輸出的對應關係(Input-output pairs)來推斷程式的功能。這意味著測試的完整度決定了軟體的可靠性。如果測試涵蓋範圍足夠廣,開發者就不需要深入理解 AI 寫了什麼,只要知道它能正確產出預期結果即可。
一次性程式碼與自我修復機制
隨之而來的是程式碼的一次性屬性。傳統開發中,當程式出錯時,工程師會花大量時間除錯(Debug)並修補現有程式碼。然而,對於 AI 生成的唯寫程式碼,除錯的成本往往高於重新生成的成本。
Mortimer 認為,最有效率的做法是保留測試案例,直接捨棄出錯的程式碼,並要求 AI 重新撰寫。這種一次性(Disposable)的思維將開發重心從修改轉向替換。為了實現這一點,他建議將 AI 代理(AI Agents)與可觀測性平台(Observability Platform)結合。可觀測性平台是指能透過日誌、指標與追蹤來監控系統內部狀態的工具。當 AI 代理能監控這些警報並自動分析問題,隨後主動提交修復程式碼的拉取請求(Pull Request),軟體將具備一種自我修復(Self-healing)的能力。
自動化審閱與對抗性評估
面對海量的 AI 程式碼,人類審閱將成為開發流程的瓶頸。Mortimer 建議將審閱過程自動化,透過建立一套包含資深開發者經驗的技能集,讓 AI 審閱代理在持續整合(CI)流程中執行。
針對 AI 審閱自身產出是否有效的問題,他觀察到一種對抗性審閱(Adversarial Review)的趨勢。只要提供不同的提示詞(Prompt)、不同的指令集或不同的上下文環境,另一個 AI 代理往往能發現原先模型遺漏的漏洞。此外,還能部署去雜質(De-slopify)代理,定期掃描整個程式庫,清理重複程式碼、未參數化的測試或過時的功能開關(Feature Flags),以維持系統整潔。
開發者角色的轉型:從實作到創造力
當實作(Implementation)問題被 AI 解決,開發者的角色將從編碼者轉向創意設計者。意圖(Intent)與實作正式脫鉤,開發者不再受限於特定程式語言的語法,而是透過自然語言定義目標。
在這種新範式下,創造力成為核心競爭力。Mortimer 強調,創造力並非瞬間的靈感爆發,而是一個迭代(Iterative)的過程,需要大量的專注時間與適度的限制。他建議組織應減少碎片化的會議,為開發者提供不被打擾的深度工作時間,因為在追求極速開發的壓力下,反思與創造性思考的空間反而變得更加稀缺。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。