AI為何不會取代軟件架構——反而使其更有價值
AI能夠快速生成大量代碼,但它無法判斷這些代碼是否應該存在於系統中。本文指出,AI使得實現變得廉價,而架構則負責將這種豐富性轉化為連貫的系統。架構的價值不僅沒有降低,反而因為AI的加速作用變得更加關鍵。
AI可以在幾分鐘內生成數千行代碼。但它仍然無法告訴你這些代碼是否應該存在於你的系統中。這就是實現與架構之間的區別,也是AI讓軟件架構變得更有價值而非更沒價值的原因。AI使實現變得豐富,而架構則將這種豐富性轉化為連貫的系統。
架構並非指靜態的圖表或教科書式的設計模式,而是一組決定職責歸屬、約束條件以及系統必須保護的不變性的決策。當實現緩慢且昂貴時,架構可以防止勞動浪費。如今代碼生成快速且幾乎免費,架構則服務於不同的目的:在代碼生產加速時保持系統連貫性。
每一次抽象都使價值向上移動。從彙編語言到高級語言,從C語言到託管運行時環境,從框架消除樣板代碼到雲平台移除手動基礎設施維護,AI只是這條路上的下一步。每一次抽象都降低了機械工作的價值,增加了決定構建什麼的價值。真正的危險不在於AI寫出糟糕的代碼,而在於AI使得團隊難以理解、審查和維護比以往更多的代碼成為經濟上可行的事。當生產軟件的成本趨近於零時,限制因素變成了團隊保持連貫性的能力。
瓶頸已經轉移。過去實現主導了構建軟件的成本,如今對於許多團隊而言,實現已不再是主要成本,而是最便宜的部分。在傳統工程中,想法經過實現得到軟件;在AI工程中,想法經過架構和AI得到軟件。當生成500行代碼只需十秒時,瓶頸完全向上游移動。不再是打字,而是決策。
LLM擅長局部優化:給定一個文件或函數簽名,它能給出可運行的代碼。但局部優化與全局優化不同:AI優化局部,架構優化全局。AI會問這段代碼正確嗎?這個函數能更乾淨嗎?這個查詢能更快嗎?這個API能更簡單嗎?而架構會問這段代碼應該存在嗎?這個職責屬於哪裏?誰擁有這些數據?哪些不變性絕不能打破?一個LLM在單個提示上下文中進行局部優化,它不知道你的團隊三個月前決定將支付與用户賬户解耦,也不知道在事件訂閲者中直接查詢數據庫違反了發件箱契約。AI會愉快地生成一個300行的服務對象,通過所有lint和單元測試,同時悄悄地在app/models/order.rb中複製業務邏輯,引入跨模塊的循環依賴,破壞緩存鍵失效規則,繞過審計跟蹤。每一行生成的代碼看起來都很乾淨,但整個系統卻揹負了債務。
生產環境在凌晨兩點崩潰時,很少是因為一個低效的循環。系統在接縫處失敗,因為兩個看似合理的決定發生了碰撞:三個獨立的服務維護各自略有不同的UserStatus狀態機;服務A假設服務B在事件觸發前寫入Redis鍵,造成隱式時序依賴;後台工作線程修改模型而未使緩存鍵失效,導致過時緩存數據;一半代碼庫將訂單視為已完成於授權,而另一半等待支付結算。沒有提示模板能在事後修復損壞的領域模型,如果提示本身不包含系統的全局規則,LLM也無法修復系統邊界故障。這就是為什麼像CLAUDE.md、架構決策記錄、倉庫指南和明確工程原則這類文件在AI時代比以往更重要。它們不再是被動文檔,而是執行環境的一部分。反映組織邊界的架構如今也成為引導AI助手的上下文。
優秀的架構不是使用複雜的設計模式或為未來需求構建推測性抽象。好的架構移除偶然選擇,讓工程師專注於關鍵選擇。它意味着設定代碼不易跨越的規則:將直接數據庫讀取限制在指定的倉庫層,使後台任務不繞過領域邏輯;用顯式狀態機而非散落的布爾標誌建模狀態;使用發件箱模式進行消息發佈,確保數據庫寫入和事件觸發器保持同步;編寫清晰的倉庫指南,使生成的代碼使用項目現有的方言,而非隨意引入新框架。AI能生成的代碼越多,每個架構約束的價值就越大。約束不再是摩擦,而是壓縮,它們使數千行生成的代碼表現得如同出自同一個工程思維。
AI沒有架構觀點,它是架構盲的。LLM只看到你提供的上下文,而架構主要存在於組件之間的關係、歷史決策、操作約束和組織知識之中,這些很少能融入單個提示。這不是當前模型的限制,而是要求局部優化器推理全局系統的必然結果。AI在其給定的約束內優化,它不在乎你的系統設計是整潔還是混亂,它只是加速你已有的方向。想象一下讓AI助手添加一個新的支付提供商。在一個架構良好的系統中,它會發現現有的PaymentGateway接口,遵循倉庫約定,更新適當的狀態機,在預期位置添加測試,一切像是團隊寫的。同樣的提示在一個無結構的代碼庫中可能會引入第二個支付抽象,重複驗證邏輯,並繞過現有審計規則。差異不在於模型,而在於架構。如果架構合理,AI放大你的設計;如果架構混亂,AI放大混亂。它會生成重複的工具,悄悄引入衝突模式,比人類工程師更快地積累技術債務。
判斷力仍然是稀缺的。軟件工程並沒有變得不那麼有價值,打字才是。架構並沒有變得不那麼重要,它正在成為稀缺資源。AI使代碼變得豐富,架構決定這種豐富是成為槓桿還是債務。判斷力仍然是稀缺的。