譯者 | 李睿
審校 | 重樓
氛圍編碼(Vibe coding)是一種通過人工智能將自然語言轉(zhuǎn)化為代碼的開發(fā)方法,標(biāo)志著軟件開發(fā)的一次重大演變。它加速了反饋周期,使編程民主化,但引發(fā)了對(duì)可維護(hù)性、安全性和技術(shù)債務(wù)的擔(dān)憂。
成功可能需要一種平衡的方法:使用氛圍編碼進(jìn)行快速原型設(shè)計(jì),同時(shí)保持生產(chǎn)代碼符號(hào)嚴(yán)格標(biāo)準(zhǔn),讓開發(fā)人員從編碼者轉(zhuǎn)變?yōu)榧軜?gòu)師和審核者或?qū)徲?jì)員。
一、氛圍編碼的定義和起源
在某種程度上,氛圍編碼代表了軟件開發(fā)方式的一次根本性轉(zhuǎn)變。開發(fā)人員無需輸入語法完美的代碼,而是使用氛圍編碼方法采用自然語言表達(dá)他們的意圖,讓人工智能工具將其翻譯成功能代碼。這種方法源于大型語言模型(LLM)和編碼助手快速發(fā)展的能力。
在今年 2 月提出氛圍編碼這一概念的人工智能研究員兼前OpenAI聯(lián)合創(chuàng)始人Andrej Karpathy觀察到編程本質(zhì)的變化,他捕捉到開發(fā)人員開始利用人工智能將自然語言描述轉(zhuǎn)換為可執(zhí)行代碼時(shí)的范式轉(zhuǎn)變,這一術(shù)語得到了廣泛的關(guān)注。
隨著這些人工智能編碼助手的成熟,Karpathy的見解也在進(jìn)一步發(fā)展。他指出,“使用現(xiàn)代人工智能工具編碼,并不是真正的編碼——我只是看到一些事物,并對(duì)它們進(jìn)行描述,然后運(yùn)行人工智能工具,最后復(fù)制粘貼,它大部分都能正確實(shí)現(xiàn)?!边@句話概括了氛圍編碼的本質(zhì):描述軟件需要做什么,并相信人工智能會(huì)正確實(shí)現(xiàn),通常在實(shí)際的代碼生成過程中只需要最少的人為干預(yù)。
二、敏捷/產(chǎn)品管理視角
1.氛圍編碼與敏捷原則的完美契合
從敏捷的角度來看,氛圍編碼呈現(xiàn)出有趣的可能性。敏捷的核心原則“響應(yīng)變化而不是遵循計(jì)劃”與氛圍編碼的靈活性完美契合。當(dāng)產(chǎn)品需求發(fā)生變化時(shí),采用自然語言描述新功能,并讓人工智能快速生成更新的代碼,在理論上可以加速適應(yīng)過程。
氛圍編碼也與Scrum和其他敏捷框架的核心“檢查和適應(yīng)”周期相呼應(yīng)。開發(fā)團(tuán)隊(duì)可以快速生成代碼,檢查結(jié)果,從反饋中學(xué)習(xí),并快速迭代——可能會(huì)將傳統(tǒng)開發(fā)可能需要數(shù)天的時(shí)間壓縮到數(shù)小時(shí)內(nèi)。
2.加快構(gòu)建-測(cè)量-學(xué)習(xí)的周期
對(duì)于實(shí)踐精益方法的產(chǎn)品經(jīng)理和創(chuàng)業(yè)者來說,氛圍編碼可能會(huì)極大加速“構(gòu)建、衡量、學(xué)習(xí)”循環(huán)。創(chuàng)建功能原型與用戶一起測(cè)試不再需要編碼知識(shí)或大量投資。產(chǎn)品經(jīng)理可以用自然語言描述功能,讓人工智能生成工作原型,并在當(dāng)天將其呈現(xiàn)給用戶。
這種反饋循環(huán)的加速可能是氛圍編碼具有敏捷性的最有力的論據(jù)。當(dāng)收集用戶反饋是主要目標(biāo)時(shí),產(chǎn)生有意義的響應(yīng)的功能演示變得更有價(jià)值。
3.在盡量不犯錯(cuò)的情況下快速行動(dòng)
氛圍編碼可以使團(tuán)隊(duì)以驚人的速度快速行動(dòng),但仍然存在可靠性問題。雖然人工智能生成的代碼通常“大部分都能實(shí)現(xiàn)”,但在“大部分”不夠好的生產(chǎn)環(huán)境中,這個(gè)限定符就會(huì)出現(xiàn)問題。然而,對(duì)于早期的驗(yàn)證和原型來說,速度優(yōu)勢(shì)可能超過質(zhì)量問題。
創(chuàng)新的產(chǎn)品團(tuán)隊(duì)可能會(huì)采用一種混合方法:使用氛圍編碼進(jìn)行快速原型和初始驗(yàn)證,然后在方向得到驗(yàn)證之后,使用傳統(tǒng)編碼實(shí)踐重構(gòu)關(guān)鍵組件。這種平衡的方法可以在降低風(fēng)險(xiǎn)的同時(shí)獲得速度優(yōu)勢(shì)。
三、技術(shù)視角
1.質(zhì)量和可維護(hù)性問題
專業(yè)開發(fā)人員使用氛圍編碼方法對(duì)代碼質(zhì)量提出了一些擔(dān)憂的問題。人工智能生成的代碼雖然功能齊全,但往往缺乏經(jīng)驗(yàn)豐富的開發(fā)人員為項(xiàng)目帶來深思熟慮的架構(gòu)和對(duì)技術(shù)卓越的奉獻(xiàn)精神。
正如行業(yè)專家Toby Devonshire所警告的那樣:“氛圍編碼一開始可能很有趣,但當(dāng)你需要調(diào)試時(shí),可能會(huì)出現(xiàn)問題?!边@種擔(dān)憂是有道理的:原型可能會(huì)在沒有嚴(yán)格測(cè)試和文檔的情況下變成充滿技術(shù)債務(wù)的生產(chǎn)系統(tǒng)。
這種影響可能會(huì)導(dǎo)致實(shí)現(xiàn)不充分、不必要的依賴關(guān)系或適用于特定用例但在條件發(fā)生變化時(shí)中斷的脆弱代碼。例如,行業(yè)專家Jo Bergum報(bào)告說:“我使用氛圍編碼的經(jīng)驗(yàn)是,它對(duì)最小可行性產(chǎn)品(MVP)來說很棒,但對(duì)于在更大的代碼庫中進(jìn)行重寫則令人沮喪。當(dāng)Claude開始偽造實(shí)現(xiàn)以使測(cè)試通過,或者通過實(shí)現(xiàn)模擬來解決依賴問題時(shí),我感覺還有好幾個(gè)月的工作要做?!?/span>
因此,可維護(hù)性可能是最大的技術(shù)挑戰(zhàn)。當(dāng)開發(fā)人員需要在幾個(gè)月后修改人工智能生成的代碼時(shí),他們可能很難理解當(dāng)初的實(shí)現(xiàn)選擇。如果沒有清晰的文檔解釋為什么要采用某些方法,維護(hù)工作就會(huì)變得非常困難。
2.安全漏洞
安全是另一個(gè)主要問題。人工智能編碼助手主要優(yōu)化功能,而不是安全性,這可能會(huì)引入開發(fā)人員很快就能發(fā)現(xiàn)的漏洞。雖然一些人工智能工具包含安全檢查功能,但它們很少與以安全為中心的開發(fā)人員執(zhí)行的全面風(fēng)險(xiǎn)分析相匹配。這些問題對(duì)于處理敏感數(shù)據(jù)或金融事務(wù)的應(yīng)用程序尤為重要。如果沒有廣泛的人工審查和增強(qiáng),氛圍編碼可能不適合這些用例。
3.技術(shù)債務(wù)加速
從技術(shù)角度來看,也許最令人擔(dān)憂的是氛圍編碼會(huì)加速技術(shù)債務(wù)積累。傳統(tǒng)的開發(fā)方法通常需要仔細(xì)考慮架構(gòu),以盡量減少返工。氛圍編碼強(qiáng)調(diào)即時(shí)功能而不是長期可持續(xù)性,這可能會(huì)在未來產(chǎn)生巨大的成本。
這個(gè)過程類似于為代碼庫的未來申請(qǐng)高息貸款。即時(shí)的生產(chǎn)力提升讓人覺得很有價(jià)值,但最終,技術(shù)債務(wù)會(huì)以維護(hù)挑戰(zhàn)、重構(gòu)需求和擴(kuò)展困難等形式到期需要償還。
四、企業(yè)家與經(jīng)濟(jì)視角
1.軟件創(chuàng)建民主化
氛圍編碼最有前景的方面之一是它有可能使軟件創(chuàng)建民主化。擁有豐富的行業(yè)知識(shí)但技術(shù)有限的企業(yè)家現(xiàn)在可以將他們的想法轉(zhuǎn)化為可工作的軟件,而無需首先學(xué)習(xí)編碼或雇傭成本昂貴的開發(fā)團(tuán)隊(duì)。
這種可訪問性可能會(huì)激發(fā)之前被排除在外的群體的創(chuàng)新能力。例如,醫(yī)療保健、教育、農(nóng)業(yè)和其他領(lǐng)域的領(lǐng)域?qū)<铱赡軙?huì)創(chuàng)建專門工具來解決傳統(tǒng)軟件公司忽視的需求。
2.降低準(zhǔn)入門檻
降低軟件開發(fā)準(zhǔn)入門檻的經(jīng)濟(jì)意義是重大的。初創(chuàng)公司可以用較小的初始投資啟動(dòng),從而延長其運(yùn)營周期,增加他們?cè)谫Y金耗盡之前找到適合產(chǎn)品進(jìn)入市場的機(jī)會(huì)。這一優(yōu)勢(shì)可能會(huì)導(dǎo)致軟件生態(tài)系統(tǒng)中出現(xiàn)更多樣化的實(shí)驗(yàn)。
對(duì)于成熟的公司來說,氛圍編碼可能會(huì)使傳統(tǒng)上與軟件開發(fā)分離的部門進(jìn)行創(chuàng)新。市場營銷團(tuán)隊(duì)可以對(duì)面向客戶的工具進(jìn)行原型設(shè)計(jì),運(yùn)營人員可以構(gòu)建流程自動(dòng)化,銷售代表可以創(chuàng)建自定義演示,而不依賴于開發(fā)團(tuán)隊(duì)。(需要注意的是,這種觀點(diǎn)可能會(huì)在不同的層面上帶來一些問題,從戰(zhàn)略一致性到銷售尚未存在的產(chǎn)品功能。)
3.氛圍編碼和開發(fā)人員的工作保障
一些批評(píng)人士認(rèn)為,對(duì)氛圍編碼的抵制部分源于開發(fā)人員對(duì)工作保障的擔(dān)憂。如果非技術(shù)團(tuán)隊(duì)成員可以獨(dú)立創(chuàng)建功能軟件,這對(duì)專業(yè)開發(fā)人員意味著什么?
這種觀點(diǎn)簡化了實(shí)際情況。雖然氛圍編碼可能會(huì)減少對(duì)基本實(shí)現(xiàn)工作的需求,但它可能會(huì)提高開發(fā)人員的價(jià)值,這些開發(fā)人員可以構(gòu)建復(fù)雜的系統(tǒng),優(yōu)化性能,確保安全性,并隨著時(shí)間的推移維護(hù)大型代碼庫。這個(gè)角色可能會(huì)發(fā)生變化,但專業(yè)開發(fā)知識(shí)仍然至關(guān)重要。
五、平衡的觀點(diǎn)和可能的未來
1.尋找合適的氛圍編碼應(yīng)用場景
一個(gè)平衡的評(píng)估表明,氛圍編碼在敏捷環(huán)境中具有合理的應(yīng)用場景,特別是用于:
- 快速原型制作和概念驗(yàn)證;
- 安全要求有限的內(nèi)部工具;
- 迭代速度超過長期可維護(hù)性的項(xiàng)目;
- 技術(shù)資源有限的環(huán)境。
與此相反,氛圍編碼不太適合以下應(yīng)用場景:
- 具有嚴(yán)格安全要求的系統(tǒng);
- 需要最佳性能的應(yīng)用程序;
- 預(yù)計(jì)會(huì)經(jīng)歷重大演變的長期產(chǎn)品;
- 符合監(jiān)管合規(guī)要求的項(xiàng)目。
2.緩解策略
因此,將氛圍編碼與敏捷工作流集成的團(tuán)隊(duì)采用混合方法似乎是有益的:
- 分階段整合。從非關(guān)鍵任務(wù)(如實(shí)用功能)開始,然后擴(kuò)展到功能開發(fā);
- 人工智能增強(qiáng)。像Snyk這樣的工具現(xiàn)在提供工作坊來審核人工智能生成的漏洞代碼;
- 護(hù)欄。通過提示執(zhí)行編碼標(biāo)準(zhǔn)(例如,“重構(gòu)可讀性”)可以減少技術(shù)債務(wù)。
3.專業(yè)開發(fā)人員角色的演變
隨著氛圍編碼能力的成熟,專業(yè)開發(fā)人員的角色可能會(huì)發(fā)生轉(zhuǎn)變而不是減少。開發(fā)人員可能會(huì)從編寫每一行代碼轉(zhuǎn)變?yōu)椋?/span>
- 定義和維護(hù)架構(gòu)標(biāo)準(zhǔn);
- 審核和完善人工智能生成的代碼;
- 創(chuàng)建人工智能可以安全運(yùn)行的護(hù)欄和框架;
- 專注于對(duì)于人工智能來說仍然具有挑戰(zhàn)性的復(fù)雜問題。
這種演變反映了軟件開發(fā)中的歷史模式。就像高級(jí)語言和框架抽象了機(jī)器碼和內(nèi)存管理一樣,氛圍編碼也可以抽象掉常規(guī)的實(shí)現(xiàn)細(xì)節(jié),從而使開發(fā)人員能夠?qū)W⒂诟邔哟蔚膯栴}。
4.氛圍編碼與敏捷實(shí)踐的整合
具有遠(yuǎn)見的敏捷開發(fā)團(tuán)隊(duì)可能會(huì)將氛圍編碼整合到現(xiàn)有的工作流中,而不是完全取代傳統(tǒng)的開發(fā)。例如:
- 在專注于概念驗(yàn)證的初始沖刺中使用氛圍編碼;
- 讓產(chǎn)品負(fù)責(zé)人或設(shè)計(jì)師創(chuàng)建初始實(shí)現(xiàn),供開發(fā)人員改進(jìn);
- 采用人工智能配對(duì)編程,開發(fā)人員用人類專業(yè)知識(shí)指導(dǎo)人工智能代碼生成。
這種整合承認(rèn)了氛圍編碼的優(yōu)勢(shì)和局限性,在每種方法中都能提供最大的價(jià)值。
結(jié)論
氛圍編碼既不是一場徹底的革命,也不是一種時(shí)尚潮流,而是軟件創(chuàng)建方式的一種演變。它與敏捷所強(qiáng)調(diào)的快速迭代和用戶反饋相契合,同時(shí)挑戰(zhàn)了傳統(tǒng)的代碼質(zhì)量和可維護(hù)性觀念。
愿意將氛圍編碼深思熟慮地整合到他們的開發(fā)工作流程中的組織,可以認(rèn)識(shí)到它在哪里增加了價(jià)值,以及傳統(tǒng)方法在哪里仍具有優(yōu)勢(shì)——將在速度和可訪問性方面獲得顯著優(yōu)勢(shì)。那些完全忽視它的組織和個(gè)人可能會(huì)失去創(chuàng)新機(jī)會(huì),而那些不加批判地接受氛圍編碼的組織或個(gè)人可能會(huì)造成不可持續(xù)的技術(shù)債務(wù)。
與大多數(shù)技術(shù)進(jìn)步一樣,最成功的方法是在明確原則的指導(dǎo)下采取務(wù)實(shí)的做法,而不是全盤接受或拒絕。雖然氛圍編碼不太可能取代傳統(tǒng)的開發(fā),但它已經(jīng)開始以一種不可逆轉(zhuǎn)的方式對(duì)傳統(tǒng)軟件開發(fā)領(lǐng)域進(jìn)行深刻的變革。
原文標(biāo)題:Is Vibe Coding Agile or Merely a Hype?,作者:Stefan Wolpers