控制想法,而非代碼:程式設計師不斷演進的角色
控制想法,而非代碼:程式設計師不斷演進的角色
從實作轉向意圖
現代軟體開發的主要啟示是,控制系統的高層次想法與設計,現在比審查底層代碼更具影響力。 隨著大型語言模型 (LLMs) 變得擅長生成局部最佳化的代碼,傳統逐行審查代碼的過程已成為開發者時間利用上的次優選擇。
Salvatore Sanfilippo (antirez),Redis 的創作者,認為程式設計領域正在朝著「代碼」不再是人類開發者主要產出的方向演進。相反地,開發者的價值正轉向定義心理模型、架構設計以及對最終產品進行嚴謹的測試。
為何手動代碼審查正變得過時
手動代碼審查正變得日益低效,因為 AI 生成的代碼量已超過人類進行徹底審查的能力。 當 LLMs 可以幾分鐘內生成數千行代碼時,花費數小時審查這些代碼的權衡往往大於其帶來的效益。
Antirez 指出了三個導致查看代碼變得不再理想的主要原因:
- 數量與冗長性: 每天審查 5,000 行代碼是不切實際的。AI 輸出的龐大規模使得手動驗證成為瓶頸。
- 局部與全局最佳化: LLMs 擅長編寫局部最佳化的代碼(函數與小型代碼塊),但在處理「大想法」時較為吃力。因此,開發者應專注於提示設計並評估整體模型是否正確,而非逐行掃描。
- 機會成本: 工作日有限的時數應更好地花在更高層次的問題上:這款軟體的目的為何?它應該採取哪些新方向?如何進行最佳化?
控制想法:一種新的工程範式
軟體工程的核心正從「寫代碼」(編寫指令)轉向「程式設計」(設計解決方案)以及「軟體工程」(維護可靠系統)。
Antirez 建議,與其花時間在代碼審查上,開發者應投資於建立全面的 DESIGN.md 文件。這些文件應以人類語言描述數據結構、實作技巧以及整體設計。這使得未來的維護者——以及 AI agents——能夠理解軟體的心理模型,而無需解析數千行實作細節。
在他與 DwarfStar(一個本地 LLM 推論專案)的合作中,Antirez 指出,雖然 AI 可以自動化實作,但開發者仍必須深入理解領域知識,以確保正確性與性能。他認為,在設計端進行嚴謹的工程設計與全面的測試,遠比手動編寫或閱讀 GPU kernels 更有效果。
初級開發者的挑戰
關於如果停止手動編寫代碼,新進程式設計師該如何培養必要的「forma mentis」(心智模式)的討論正在進行中。
Antirez 建議初級開發者不應在審查平庸的 AI 生成代碼(例如,「客戶網站的 Javascript stuff」)上浪費時間。相反地,他們應該透過從零開始實作基礎系統來建立其基礎心理模型,例如:
- 小型解釋器
- 小型數據庫
- Hash tables
透過建立這些核心結構,他們可以學習如何對架構與設計進行推理,這正是 AI 驅動世界中「控制想法」所需的技能。
社群觀點與反對意見
雖然 Antirez 的觀點具有影響力,但開發者社群針對信任、品質與身份認同提出了幾項關鍵的反對意見。
信任與幻覺差距
"模型確實很驚人... 它們仍然會產生幻覺。雖然比以前少得多,但仍非零。在某種程度上這更糟,因為模型會吐出一段複雜的軟體並說『是的,沒錯。我甚至寫了測試,而且它們全都通過了!』"
許多開發者認為,對 LLMs 的絕對信任是危險的,特別是對於交易處理器或醫療設備等任務關鍵型系統。他們主張採用混合模式,由 LLMs 寫代碼與測試,但由人類進行最關鍵路徑的逐行驗證。
技能與身份的侵蝕
"原本提議的不讀代碼的想法... 挑戰了程式設計師本身的身份認同... 細節決定成敗,閱讀他人的代碼(以及 LLM 寫的代碼)會演進想法本身,並改變我對它的理解。"
一些程式設計師覺得,將自己從實作過程排除在外,會切斷回饋圈,使得編碼的行為本身其實是在精煉原有的想法。
「模型崩潰」與品質低劣的風險
批評者也指出,隨著 AI 生成的代碼充斥 repositories,未來模型的訓練數據可能會因為熵值下降而遭受影響,進而可能導致整體代碼品質的下降。人們擔心,如果人類不再透過手動審查來強制執行高標準,那麼「slop」(低品質、不符合慣例的代碼)將成為基準線。