AI沒有製造這些問題,它只是不再繞過它們
作者透過親身經驗指出,AI暴露了軟體開發中長期存在的系統性問題,如缺乏文件、測試不完善、隱性知識依賴等。AI像混沌工程一樣測試系統的韌性,迫使團隊修復這些漏洞。文章強調,為AI設定的護欄本應是工程實踐的一部分,並提出了80/20準則:80%確定性的程式碼加上20%AI靈活性。
文章情報
要點
- AI揭示了開發流程中長期被忽略的缺陷,如陳舊文件和隱性知識。
- AI是高效的混沌工程工具,能發現系統脆弱點。
- 工具需要適配AI,如輸出結構化JSON而非純文本。
- 80%確定性程式碼與20%AI結合的架構更穩健。
為什麼重要
這條新聞值得關注,因為AI揭示了開發流程中長期被忽略的缺陷,如陳舊文件和隱性知識。
技術影響
可能影響模型選型、推理成本、產品能力和評測基準。
作者在過去幾年中大量使用AI進行工作,並觀察到一個有趣的現象:所有為了保持AI在正軌、提高效率、減少風險而設定的護欄,其實都是我們本應一直做到的事情。測試、文件、明確的所有權、更新的文件、確定性驗證——這些都不是新東西,也不具爭議性,但一旦讓AI掌握主動權,就會發現這些方面缺失了多少。
AI特別擅長找到最短路徑來實現目標,常常穿過花壇和蔬菜地。對人類來說顯而易見的東西,對AI來說並非如此。隨著開發者經驗的增長,許多問題變成了背景噪音,我們下意識地繞開它們。例如,一個3-5年前的回撥鉤子,用於驗證子模型的排序,如果一次更新超過30條記錄就會變慢。它從未被記錄,沒有註釋,沒有linter會捕捉到,甚至不知道是誰寫的。這種情況在人類團隊中可以透過經驗避免,但AI沒有這種記憶,它會直接撞上去,導致死鎖,凌晨3點被叫醒。
如果這是人類造成的,我們不會責怪他們,而是會問系統為何失敗。同樣,AI會犯錯誤,我們需要建立護欄使其可識別和可恢復。AI作為混沌工程,類似於Netflix的Chaos Monkey,隨機破壞伺服器,測試系統的自愈能力。AI是最好的混沌工程師,它發現你從未考慮過的缺口和漏洞。
我們的工具並非為AI設計。例如RSpec,AI執行測試套件,獲取失敗資訊,然後需要多次嘗試才能得到正確輸出。它需要結構化輸出,如JSON格式的失敗列表,以便一次性診斷問題。同樣,Rubocop、Minitest等工具都輸出人類可讀文本,不適合AI解析。作者開始要求所有AI工具輸出JSON,並重新解析,禁止直接執行原始命令,這大大提高了效率。
在開發工具時,作者採用80/20準則:80%的確定性程式碼(型別檢查、lint、測試、特性標誌、階段性推出),20%的AI膠水用於靈活性和判斷(摘要、路由、分類)。當人們試圖100%依賴AI而沒有確定性基礎時,就會發生災難性故障,如資料洩露、令牌提交、銀行賬戶清空。
AI迫使團隊修復長期存在的系統性問題:文件因AI需要而編寫,測試變得有意義,所有權明確化。每個為AI修復的缺口,也可能讓人類掉入其中——新畢業生、轉崗的高階工程師、趕進度的合同工。這些問題一直存在,AI只是讓它們無法忽視。作者提到Square的做法:讓新團隊成員建立產品並記錄所有令人困惑的地方(稱為“WTF文件”),結果發現了許多未知的缺口。AI就像是集體版的WTF文件,迫使我們以前所未有的速度規模面對系統缺陷。
文章最後強調,正如團隊將失敗視為系統性問題而非個人問題時會蓬勃發展,AI系統也是如此。問“我們的系統缺失了什麼導致了這個錯誤?”而不是“AI不好,我們不該用它”,將獲得更好的結果。並非每個問題都有完美答案,但誠實審視系統的實踐就是好的工程,這不會因AI而改變。AI只是讓長期存在的需求變得不可忽視。