Eric Lau

寫程式碼從來不是瓶頸:LLM時代的軟體開發挑戰

約 4 分鐘
寫程式碼從來不是瓶頸:LLM時代的軟體開發挑戰

多年來,我始終認為在軟體工程中,撰寫程式碼的行數從來都不是真正的瓶頸所在。

真正的瓶頸過去是,現在依然是程式碼審查、透過指導和配對進行的知識傳遞測試偵錯,以及協調與溝通的人為成本。所有這些都被包裹在工作票、規劃會議和敏捷儀式的迷宮中。

這些原本旨在提升品質的流程,往往比撰寫程式碼本身更能拖慢我們的速度,因為它們需要思考、共享理解和健全的判斷力。

如今,隨著大型語言模型(LLMs)使生成可運行程式碼變得比以往更快,一種新的說法出現了:撰寫程式碼曾經是瓶頸,而我們終於突破了它。

但這種說法並不完全正確

新增軟體的邊際成本正趨近於,尤其是有了LLMs的幫助。但理解測試信任該程式碼的代價是什麼?比以往更高

LLMs轉移了工作負載——而非消除它

Claude這樣的工具可以加快初始實現速度。但結果往往是更多的程式碼流入系統,以及對負責審查、整合和維護它的人員施加更大壓力。

這在以下情況尤為明顯:

  • 不清楚作者是否完全理解他們提交的內容。
  • 生成的程式碼引入了不熟悉的模式或違反了既定慣例。
  • 邊緣案例和非預期的副作用並不明顯。

我們最終陷入這樣一種情況:程式碼變得更容易生成,但更難驗證,這並不一定能讓團隊整體移動得更快。

這不是新挑戰。開發人員長期以來一直在調侃「複製貼上工程」,但LLMs所實現的速度和規模放大了這些複製貼上的習慣

理解程式碼仍然是最難的部分

「程式碼最大的成本是理解它——而非撰寫它。」

LLMs減少了生成程式碼所需的時間,但它們並未改變推理行為、識別細微錯誤或確保長期可維護性所需的努力。當審查者難以區分生成和手寫的程式碼,或理解為何選擇特定解決方案時,這項工作可能會更加困難。

團隊仍然依賴信任和共享背景

軟體工程一直是協作性的。它依賴於共享理解一致性指導。然而,當程式碼生成的速度快於討論或審查的速度時,團隊就有可能陷入一種假定品質而非確保品質的模式。這會給審查者和指導者帶來壓力,可能會以更微妙的方式減慢進度。

LLMs功能強大——但它們無法修復基本面

更快的原型設計、腳手架和自動化確實具有真正的價值。但是,LLMs並不能消除對清晰思考仔細審查深思熟慮的設計的需求。如果說有什麼區別的話,那就是隨著生成更多的程式碼,這些需求變得更加重要。

是的,編寫程式碼的成本確實下降了。但是,作為一個團隊共同理解它的成本並沒有下降。

那才是瓶頸所在。讓我們不要假裝它不存在。

人類協作:LLM時代的新挑戰

對於可能不太熟悉這個主題的讀者來說,讓我們進一步解釋為什麼這很重要。想像一下,您正在建造一棟房子。LLMs就像是一台能夠快速生產磚塊和材料的機器。過去,製作這些材料可能需要時間和努力,但實際建造房子的挑戰在於如何將它們放在一起,如何確保結構穩固,以及如何使各個部分協調工作。

在軟體世界中,程式碼行是我們的基本構建塊。當這些構建塊變得廉價且容易獲取時,我們面臨的真正問題是:

  • 品質控制:我們如何確保這些自動生成的構建塊符合我們的標準?
  • 系統理解:開發人員是否真正理解他們正在組合的部分?
  • 整合複雜性:程式碼數量增加會導致互動增加,從而增加複雜性。

當我們使用LLMs等工具,很容易認為我們的生產力激增,因為我們可以快速生成程式碼。但現實是,軟體開發的最大挑戰一直是,也將繼續是人際溝通和協作

在這個AI輔助開發的新時代,最成功的團隊不會只是那些生成最多程式碼的團隊。而是那些最善於:

  • 建立使AI合作夥伴能夠增強而非取代人類判斷的工作流程
  • 維持清晰的架構和命名規範,使生成的程式碼更容易理解
  • 投資於培訓開發人員在理解和整合生成的程式碼方面的技能
  • 認識到審查、討論和適當測試的價值超過了「馬上完成」的速度

換句話說,速度一直是一個誤導性的指標。真正的衡量標準應該是:我們能否生產出既可靠又可維護的軟體,能讓使用者滿意並有效解決問題?

隨著我們擁抱LLMs的強大能力,讓我們記住,編程的真正藝術不僅僅在於生成程式碼,而是在於創建有意義的解決方案,這些解決方案能夠隨著時間的推移而發展並被人類理解。