2人vs50人債務!快≠好!拜託,別拿“氛圍程式設計”當爛程式碼的藉口

氛圍程式設計不能成為低質量工作的藉口
負責任地使用 AI 輔助開發的實用指南
“更快地行動,打破更多的東西。| Move faster and break even more things.”
當“氛圍程式設計”成為熱門話題,這句對矽谷舊口號的改編在近期的工程圈子裡引起了共鳴。的確, AI 輔助開發正在改變我們構建軟體的方式,但這並不意味著我們可以放棄嚴謹、審查和工匠精神。“氛圍程式設計”不是低質量工作的藉口。
我們先說說好處:AI 輔助程式設計可能會帶來重大變革。它降低了新手程式設計師和非程式設計師的門檻,讓他們只需描述需求就能編寫出可用的軟體。這激發了創造力——更多人可以用定製軟體解決自己的問題,這是一種被一些人稱為個人軟體拆分的趨勢(使用小型 AI 構建的工具,而不是一刀切的應用程式)。即使是經驗豐富的工程師也能從中受益。
然而,任何經驗豐富的工程師都會告訴你,如果軟體在後續出現問題,速度就毫無意義。這就是問題開始顯現的地方——在營造的氛圍與構建可維護、健壯軟體的現實之間存在差距。

殘酷的現實:質量不會自動產生

儘管炒作不斷,但“氛圍程式設計”在資深開發者中飽受質疑。核心批評是:AI 能快速生成程式碼,並不意味著程式碼質量高。事實上,不加審查地接受 AI 生成的程式碼可能是危險的。那個“2 個工程師現在能製造 50 個人的技術債務”的趣圖並非全無道理。未經檢查的 AI 程式碼會大幅增加技術債務,這些隱藏問題會讓軟體變得脆弱且維護成本高昂。

許多早期的“氛圍程式設計”專案表面看起來不錯(“能跑就行,上線吧!”),但暗藏無數問題:沒有錯誤處理、效能低下、安全性存疑、邏輯脆弱。可以說,這些專案建立在沙子上。我稱之為“紙牌屋程式碼”——看似完整,但在真實壓力下會崩潰。如果你見過初級開發者的第一個大功能幾乎能用,但遇到意外輸入就崩潰,你就能理解。AI 能快速生成大量程式碼,但數量≠質量
這些問題並非純理論。以可維護性為例:如果 AI 編寫的模組晦澀難懂或過於複雜,誰來維護?如果連原作者都不完全理解 AI 的解決方案,未來的修改將變成噩夢。安全性也是大問題 —— AI 可能生成看似能執行但存在 SQL 注入漏洞或不安全錯誤處理的程式碼。未經嚴格審查,這些問題可能溜進生產環境。此外,AI 會嚴格按提示生成程式碼,但你的需求可能並不精確。人類開發者會在實現過程中調整設計,發現假設錯誤;而 AI 不會發現這些問題,除非人類介入糾正。
這並不是說 AI 不能寫出好程式碼,有時它可以,但需要背景知識、審查和專業知識來分辨好壞。2025 年,我們使用的本質上是一個非常熱心但缺乏經驗的助手。你不會讓一個初級開發者獨自設計整個系統,同樣也不應該盲目信任 AI 的程式碼。“AI 魔法”的炒作需要與軟體工程原則的現實相結合。
那麼,我們如何才能做到平衡呢?關鍵在於不要完全摒棄 “氛圍編碼” —— 它其實非常有用 —— 而是要有條不紊地將其融入開發流程。工程師必須把 AI 輔助視為一種有已知侷限性的工具,而非一個神秘的程式碼精靈。實際上,這意味著要讓人類參與其中,並維持我們的質量標準。下面我們來探討一下具體該怎麼做。
“AI 就像團隊中有一個非常熱心的初級開發者”,Forrest Brazeal 的漫畫很好地詮釋了這一觀點。

將 AI 視為實習生,而非替代品(保持人類主導)

要有效使用“氛圍程式設計”,需轉變心態:將 AI 視為團隊中一個超快但經驗不足的初級開發者。換句話說,你——資深工程師或團隊負責人——仍需對結果負責。AI 可能生成初版程式碼,但你必須用批判性眼光審查、最佳化並確保其達到質量標準。
成功整合 AI 的資深開發者會本能地遵循這一模式。當 AI 助手建議程式碼時,他們不會直接點選“接受”並繼續。相反,他們會:
  1. 閱讀並理解 AI 寫的內容,就像審查團隊初級開發者的程式碼一樣。
  2. 如果 AI 的輸出是單塊或混亂的(通常如此),將其重構為清晰、模組化的部分。資深工程師會將 AI 的“程式碼塊”拆分為“更小、專注的模組”。
  3. 補充缺失的邊緣情況處理。AI 常忽略邊界條件或錯誤處理,人類需要新增這些(空值檢查、輸入驗證等)。
  4. 強化型別和介面。如果 AI 使用了鬆散型別或抽象洩漏,人類可以加固,將隱式假設轉為顯式契約。
  5. 質疑架構。AI 是否選擇了低效方案?比如用暴力破解代替更優演算法,或在純函式足夠時引入全域性狀態。人類應嚴格審查這些決策。
  6. 編寫測試(或至少手動測試程式碼行為)。將 AI 程式碼視為同事的 PR:未經測試不上線。如果 AI 寫了單元測試(部分工具支援),需檢查測試是否流於表面。
透過這種方式,你將工程智慧注入 AI 生成的程式碼中。這種組合非常強大——AI 快速生成大量程式碼,而你的審查確保其可靠性。事實上,研究和案例表明,資深開發者比初級開發者更能從 AI 編碼工具中獲益。原因很明顯:資深開發者有能力引導 AI 並修正錯誤,而初級開發者可能將 AI 視為不會出錯的權威——但它並非如此。
因此,一條關鍵規則誕生:永遠不要將未經審查的 AI 程式碼納入程式碼庫。將其視為新員工的程式碼:逐行檢查,確保理解。如果某部分讓你困惑,別假設 AI 更懂——它通常並不懂。要麼最佳化提示讓 AI 澄清,要麼自己重寫。將 AI 輸出視為必須透過程式碼審查的草稿(即使審查者只有你)。在團隊中,這意味著如果開發者用 AI 生成程式碼,他們需準備好在程式碼審查中向同伴解釋和辯護。“能用就行”行不通——團隊需要確信程式碼易於理解和維護。
另一條最佳實踐:讓人類主導設計。用 AI 實現,而非做重大架構決策。例如,你可以用“氛圍程式設計”基於現有模式快速生成 CRUD REST API——這是明確的工作。但你不應該讓 AI“為我們的產品設計可擴充套件的微服務架構”並盲目遵循。高層設計和關鍵決策應由人類主導,AI 只輔助繁瑣部分。本質上,讓 AI 處理體力活,而非腦力活。
溝通和文件也變得至關重要。如果你用 AI 生成非平凡演算法或使用陌生庫,花時間記錄為何選擇該方案(就像你自己研究後寫程式碼一樣)。未來的維護者(或未來的你)不應猜測 AI 生成程式碼的意圖。部分團隊甚至會記錄生成重要程式碼的提示,相當於記錄“對話”過程。這在除錯時很有幫助:你可以看到 AI 的初始假設。
總之,人類監督不是“可有可無”——而是必不可少的。一旦離開人類,軟體質量就全憑運氣。在 AI 能真正替代資深工程師的全盤理解之前(我們還沒到那一步),“氛圍程式設計”必須是合作關係:AI 加速,人類驗證。

高質量“氛圍程式設計”的規則(實用指南)

讓我們將討論提煉為可操作的規則和最佳實踐,供採用 AI 輔助開發的團隊參考。將這些視為新版“快速行動,但別搞砸一切”手冊——在“氛圍程式設計”時保持高質量的護欄。
規則 1:永遠審查 AI 生成的程式碼
每段 AI 生成的程式碼都應視為初級開發者所寫,進行個人或同伴程式碼審查。包括來自 Copilot、ChatGPT、Cursor 或任何 AI 代理的程式碼。如果沒時間審查,就不要使用它。盲目合併 AI 程式碼是自找麻煩。
規則 2:制定並遵循編碼標準
AI 工具會模仿訓練資料中的程式碼,結果參差不齊。定義團隊的風格指南、架構模式和最佳實踐,確保 AI 程式碼重構後符合要求。例如,如果規則是“所有函式需 JSDoc 註釋和單元測試”,那麼 AI 輸出必須補充這些。如果專案採用特定架構(如分層架構),別讓 AI 在 UI 程式碼中塞入臨時資料庫呼叫——修正以符合層級。可考慮建立針對常見 AI 錯誤的靜態分析檢查(如標記過時 API 或過度複雜函式),自動化質量控制。
規則 3:用 AI 加速,而非自動駕駛
實踐中,這意味著用“氛圍程式設計”加速明確的任務,而非代替思考。適用場景:生成樣板程式碼、搭建元件、語言轉換、根據虛擬碼草擬簡單演算法。風險場景:讓 AI 在很少指導下從頭設計模組,或生成你不熟悉領域的程式碼(你無法判斷對錯)。如果要保留程式碼,別停留在“氛圍模式”——切換到工程模式並完善它。
規則 4:測試,測試,再測試
AI 不保證正確性。為 AI 程式碼的所有關鍵路徑編寫測試。如果 AI 寫了程式碼,它或許能幫你寫測試——但別依賴 AI 生成的測試,它們可能遺漏邊界情況(或因相同錯誤邏輯而虛假透過)。手動測試同樣重要,尤其是面向使用者的功能:點選 UI、嘗試異常輸入、觀察行為。許多“氛圍程式設計”應用在“理想路徑”下執行良好,但遇到意外輸入就崩潰——你希望先於使用者發現這點。
規則 5:迭代最佳化
如果 AI 的首版輸出不理想,別勉強接受。“氛圍程式設計”是迭代對話。如果初版程式碼臃腫或混亂,可以提示 AI 改進(如“簡化程式碼”“拆分為小函式”),或手動重構。通常,迴圈使用 AI 更有效:提示生成實現 → 發現弱點 → 提示修正或手動調整 → 重複。
規則 6:知道何時說不
有時“氛圍程式設計”並非合適工具。負責任地使用它,意味著識別需要手動編碼或深度設計的場景。例如,處理關鍵安全模組時,你可能想精心設計,僅用小部分 AI 輔助(甚至不用)。如果 AI 反覆生成複雜方案解決簡單問題,停下來自己寫——最終可能更省時。重要的是不過度依賴 AI 解決所有問題。別讓“AI 乾的”成為不理解程式碼的藉口。如果嘗試多次後 AI 仍無法滿足需求,收回控制權,用傳統方式編碼——至少你能完全理解。
規則 7:記錄並分享知識
確保 AI 生成的程式碼與手寫程式碼一樣(甚至更)詳細地文件化。如果有非顯而易見的設計,或你認為他人可能困惑於 AI 的產出,添加註釋。在團隊討論中,坦誠哪些是 AI 生成的。這有助於審查者重點關注這些部分。
遵循這些規則,團隊既能享受“氛圍程式設計”的效率,又能規避最大風險。將其視為增強人類開發者,而非替代。目標是與 AI 共同創造:讓 AI 高速處理重複性工作,人類負責創造性和批判性思考。

“氛圍程式設計”的適用場景(及其短板)

同樣重要的是認識到“氛圍程式設計”的擅長與不擅長領域。並非所有專案或任務都同樣適合 AI 驅動的工作流。以下是行業討論和早期經驗的總結:
👍 優秀用例:
  • 快速原型設計可能是“氛圍程式設計”的甜蜜點。如果有小型應用或功能的創意,用 AI 助手快速搭建原型或概念驗證非常高效。此時,程式碼是否粗糙無關緊要——你只想驗證想法。許多工程師用純 AI 完成周末專案,快速測試概念。
  • 一次性指令碼或內部工具:如解析日誌的指令碼、自動化個人任務的小工具或團隊內部儀表盤。這些通常低風險——指令碼崩潰也無妨。此時,“氛圍程式設計”能省時,因為你不需要生產級完美,只需暫時能用。
  • 學習與探索:在新語言或 API 中,讓 AI 生成示例能加速學習(當然,需對照官方文件檢查!)。在探索模式下,即使 AI 程式碼不完美,它提供了可除錯和學習的材料,就像有個能展示嘗試的教學助手。
  • 結構化、樣板繁重的任務:如建立多個相似資料類或實現固定模式的 CRUD 層。只要模式明確,AI 能完美跟隨,省去重複勞動(但需驗證其正確性)。
👎 不理想用例:
  • 企業級軟體和複雜系統是“氛圍程式設計”常失敗的地方。任何需要深度業務邏輯理解、高併發、嚴格安全或合規的場景,都不應完全信任 AI 生成。AI 不知道你的業務約束或效能需求,除非你明確說明(即使如此,它也可能搞錯)。例如,處理支付的金融科技應用或航空航天控制系統必須滿足當前 AI 無法保證的標準。在這些領域,AI 可輔助部分工作,但最終產品需人類專業知識和嚴格 QA。
  • 長期可維護性:“氛圍程式設計”在需要多年維護、多人協作的程式碼庫中表現不佳。若無強力指導,架構可能不一致。通常,前期花時間構建清晰框架(無論是否藉助 AI)比用連續 AI 提示拼湊整個產品更好。許多早期採用者發現,“氛圍程式設計”初期節省的時間,可能在後期清理和重構以適應擴充套件或變化時耗盡。
  • 關鍵演算法或最佳化:AI 能生成排序演算法或資料庫查詢,但若需高度最佳化(如自定義記憶體管理例程或亞線性時間演算法),人類智慧和深度理解仍佔優。AI 可能給出在小資料上有效但大規模崩潰的方案,且不會警告你。人類效能工程師會從一開始就考慮並測試這些因素。
  • 需要高可解釋性和清晰度的場景:有時你需要他人(或審計員)易讀易理解的程式碼。如果 AI 生成複雜方案,可能阻礙清晰度。在 AI 能穩定生成簡潔結構化程式碼之前(它並不總是傾向於這樣做——有時過於冗長或抽象),需要人類干預以保持簡潔。
總之,“氛圍程式設計”是強大的加速器,而非銀彈。
在速度重於打磨、且有迭代修復空間時使用它。避免將其作為關鍵任務軟體的一站式解決方案——就像用賽車手開校車:工具不對。也許有一天 AI 會足夠先進,“氛圍程式設計”能成為預設開發方式——但今天不是。目前,它最適合作為有監督的輔助工具,解決合適的問題。

負責任地“氛圍程式設計”:擁抱氛圍,但尊重技藝

“氛圍程式設計”和 AI 輔助軟體開發代表了工具的激動人心飛躍。它將繼續存在,並愈發成熟。前瞻性的工程團隊不應忽視它——善用 AI 的團隊可能超越不用的,就像過去擁抱自動化和框架的團隊超越從零編寫一切的。本文的主旨不是否定“氛圍程式設計”,而是以開放的眼光和工程紀律對待它。
核心啟示是:沒有質量,速度毫無意義。快速釋出漏洞百出、難以維護的程式碼是虛假勝利——你只是在加速衝向懸崖。優秀工程師會平衡兩者:用 AI 加速,同時避免搞砸(至少不比現在更糟!)。關鍵在於找到 AI 承擔重活、人類確保穩固的甜蜜點。
對技術主管和工程經理而言,行動很明確:樹立 AI 是需負責任使用的工具的風氣。鼓勵嘗試“氛圍程式設計”,但也透過規則(如我們列出的)保護程式碼庫。強制審查 AI 生成的貢獻,營造“這合理嗎?”的提問文化,並投資提升團隊與 AI 協作的技能。這可能包括培訓開發者如何寫好提示或批判性評估 AI 建議。這是一項新技能,類似於過去向高階語言或分散式版本控制的轉變——早適應者早受益。
我們還應牢記軟體工程的真正核心:解決使用者問題、建立可靠系統、持續學習。“氛圍程式設計”是手段,而非目的。如果它能幫助我們更快更好地服務使用者,那很棒。但如果它誘使我們跳過使用者依賴的盡職調查(如質量和安全),就必須約束它。基礎——清晰思考、理解需求、為變化設計、徹底測試——始終重要,甚至更加重要。
最後,在任何對程式碼可解釋性和清晰度有較高要求的情況下,“氛圍程式設計” 可能都不是理想的選擇。有時候,你需要的程式碼要讓其他人(或審計人員)能夠輕鬆閱讀和理解。如果 AI 想出了一個複雜的解決方案,可能會影響程式碼的清晰度。在 AI 能夠可靠地生成簡單且結構清晰的程式碼之前(而且它並不總是有這樣做的傾向,有時生成的程式碼過於冗長或抽象),還是需要人類的參與來確保程式碼簡潔明瞭。
總之,“氛圍程式設計” 是一個強大的加速器,但並非萬能的解決方案。在速度比程式碼完善度更重要,且你有足夠的時間進行迭代和修復的場景中使用它。避免將其作為關鍵任務軟體的一次性解決方案,這就好比僱一名賽車手來開校車,用錯了工具。
也許有一天, AI 會足夠先進,讓 “氛圍程式設計” 成為所有開發工作的預設方式,但現在還不是時候。目前,它作為解決特定問題的輔助工具,並在適當的監督下使用,效果最佳。
快樂程式設計,保持高氛圍,更高品質。
– EOF –

相關文章