AI陷阱:為什麼你無法停止閲讀代碼
本文探討了在AI輔助編程時代,過度依賴“氛圍編碼”而不閲讀代碼的風險。作者指出,雖然原型設計階段可以快速迭代,但長期忽視代碼審查會導致技術債務加速積累,最終陷入難以維護的“超級基金遺留代碼庫”。建議開發者仍需投入精力理解代碼結構,以避免系統複雜性的失控。
我最近讀了Abigail Haddad關於不閲讀代碼的文章,並強烈贊同。不過我得説,你仍然需要閲讀你的代碼!(大部分情況下)
當然,當你處於探索階段,構建快速原型、數據可視化或交互式線框以驗證想法時,“氛圍編碼”方法非常強大。正如Abigail的文章指出的,注意力是你最昂貴的資源之一,何必把時間浪費在“如何做”上,而忽略了“做什麼”呢?
但是,在什麼節點上,不閲讀代碼會演變成對代碼的失控?
構建黑箱的隱藏成本
介於語法專家和完全不知道代碼如何工作之間有一個危險區域。當我們停止閲讀代碼時,就開始錯失找到更好方法的機會。比如,當你掃一眼Claude正在編寫的腳本時,突然意識到:“等等,如果我在這裏稍作調整,就可以把這個本地工具變成一個在瀏覽器中運行的獨立網頁應用,簡化流程,而且WASM很酷,所以不算過度複雜!”
如果你只關注輸入和輸出,就會錯過那些只需快速瀏覽實現就能發現的結構性機會。你可能得到一個能用的工具,但失去了看到如何構建更好工具的機會。不幸的是,我們這個行業並不真的把優雅看得比能運行的代碼更重要;幸運的是,計算機速度很快,所以粗糙的工具也能表現得相當不錯。
超級基金遺留代碼庫
然而,更大的風險不在於錯過設計改進、編寫整潔代碼或避免整潔代碼(貶義),而在於系統的長期架構以及我們如何速通進入一個瀝青坑。
你可能經歷過遺留代碼庫。它們不斷增長,變得複雜,最終變得如此糾結,以至於連原始開發人員都不敢觸碰。一個簡單的變更變成昂貴、高風險的操作。
有了AI,我們現在有了一種更快積累技術債務的新方法。我們可以以創紀錄的速度創建一個“超級基金遺留代碼庫”。
如果你不閲讀代碼,你就沒有做出設計決策,而是把它們委託給了AI。如果不閲讀代碼,我們本質上是讓AI架構一個我們並不真正理解的系統。系統往往會積累複雜性,而生成式AI更擅長生成而非精簡。
最終,增長中的系統會達到複雜性天花板——AI無法再可靠地進行更改而不破壞一切。人類和他們的代碼也有這個天花板,但有技能的人可以維持更高的複雜度。AI更快,直到它不再快。
避免陷阱
沒有監督的氛圍編碼是通往技術陷阱的單程票。我們閲讀的代碼越少,對系統的理解就越少。我們越使用AI加速,就越可能加速進入一個連最好的LLM都無法解開的複雜層次。
Abigail説得對,我們不應該在所有上下文中把注意力花在實現細節上,但如果我們需要花相當一部分預算來審計實現,那實際上也省不了多少。
如果我們不理解正在構建的基礎,我們最終可能會發現自己站在一個非常令人印象深刻、功能齊全但最終無法更改的爛攤子中間。超級基金場地清理可能耗資數十億美元,並沿途傷害很多人。所以,考慮一下通過閲讀代碼能節省多少時間和金錢,尤其是在重要的上下文中。
什麼都不管用,但還是很美。