AI是一個糟糕的工具
本文認為AI在軟件工程中是一個糟糕的工具,除了作為數據蒸餾器外,用於代碼生成只會浪費時間。AI的不透明性導致難以驗證其輸出,並且揭示了軟件行業中缺乏適當抽象的問題。作者指出,許多軟件工作本身早已無用,AI只是撕下了這層遮羞布。
AI是一個糟糕的工具——至少在軟件領域是如此。這是本文的核心論點。我們不妨先看看積極的一面:如果你將AI視為數據蒸餾器,它確實有用。過去,你需要將問題輸入搜索引擎,點擊最相關的鏈接,然後掃描頁面尋找所需信息並自己處理理解。而AI若能可靠且真實地運行,就為你壓縮了這些步驟。搜索引擎如今也在結果頂部插入AI摘要,但真正的價值在於你能進一步追問和細化信息。這原本需要手動耗費大量時間,現在讓機器代勞確實更輕鬆。然而,好處也僅限於此。如果你用AI做其他事,特別是生成代碼,那就是在浪費時間。
在深入探討之前,有必要退一步看看圍繞AI本身的爭論。反對者往往情緒過激,多出於對失去生計、變得無關緊要的恐懼。我認為這些情緒無濟於事,但確實揭示了人性——因為恐懼是真實的,但原因不同。換句話説:是的,你會變得無關緊要,但不是因為機器比你更聰明,而是因為你寫的代碼本身就是垃圾,而AI的垃圾代碼只是略好一點。
AI之所以糟糕,在於它完全像一個黑箱。常有人問:“誰去維護AI幫你構建的應用?”如果你完全信奉AI,你會説:機器。既然是它構建的,當然也能維護。這説法並非錯誤。真正的難題是:誰能驗證AI構建的東西是否良好且真實?最近熱議AI能發現軟件安全漏洞,但這是未經證實的説法。驗證過程需要的人力和時間,可能比直接查找問題還要多。同樣的邏輯適用於AI構建的應用:誰去驗證它是否按預期工作?它看起來可能在工作,但表象與實相遠非一回事。更糟的是,在測試現有實現時,AI會傾向於讓測試去適應實現,而非根據規格獨立編寫。它並沒有真正解決問題,只是讓它看起來解決了。
AI的模糊性也意味着“AI工程”或“提示工程”完全是騙局,就像當年的SEO一樣。任何自稱能巧妙操控黑箱的説法都是虛假的。你無法建立相關性,你臆想出的任何機器工作模式都不穩定。簡言之:你無法訪問源代碼,即使能,你也可能沒有心智能力去理解它,即使能,AI更新太快,你推導出的任何模式都難以持續有效。你並不笨,只是機器由極其聰明的人構建,他們自己可能也不完全理解它。
那麼,為什麼當AI暴露了人類對自身無關緊要的恐懼時,人們會強烈反抗?因為今天你讓AI做的任何編程任務,都源於你沒有恰當地抽象你的工作。如果AI重命名一個符號,這本該是你的LSP處理的事;如果AI搭建項目骨架,這本該是你的框架的事。你讓AI產生的每一行代碼,都在降低抽象層次、增加重複。AI只不過揭示了你的棧中缺少適當的抽象。而這對你的威脅在於:如果代碼被恰當地抽象了,你可能就沒有工作了;但目前AI比你能更好地生產非抽象代碼。
換句話説,如果AI只生產平庸的代碼,那麼這些代碼應該能被輕易抽象化。如果它生產了非平庸的代碼(實際並未),那會引發它如何從輸入中做到的疑問,但因為它的模糊性以及你需要親自審查自己可能不理解的非平庸內容,你也一無所獲。AI要麼解決非問題,要麼製造非問題。
核心在於:在AI出現之前,大多數軟件工作早已無用。AI只是撕下了這層遮羞布,而這讓人抓狂。那麼未來該如何?在這個AI加速的軟件世界裏,一切都將變成無人可做的墳墓——AI包攬了所有無用的、未抽象的工作,只有少數天才在雲端運作。不幸的是,我並沒有好的答案。或許人們需要回歸熱情,去構建自己完全理解、徹底擁有的東西,並恰當地抽象它,使之免受AI的威脅——這才是唯一的出路。