氛圍編程師崛起!年薪87萬(wàn)一天15小時(shí),Karpathy用400行AI代碼點(diǎn)燃硅谷
Vibe Coding(氛圍編程),如今成為硅谷最新流行語(yǔ)。
首次提出這一概念的AI大神Karpathy,再度分享了自己的編程新姿勢(shì)——用Swift編寫首個(gè)完整卡路里追蹤的iOS應(yīng)用。
令人驚訝的是,他完全沒(méi)有Swift編程經(jīng)驗(yàn),也沒(méi)有翻閱任何文檔。
通過(guò)與ChatGPT的多輪對(duì)話,Karpathy僅用1小時(shí)完成整個(gè)開發(fā)過(guò)程,并成功部署到手機(jī)上。
不僅如此,在氛圍編程爆火之后,各路網(wǎng)友紛紛開發(fā)各種游戲、網(wǎng)頁(yè)等各類應(yīng)用,甚至就連科技公司也掛上招聘「氛圍編程師」的職位。
一則YC招聘啟示中,一則YC招聘啟示中,明確提出工作內(nèi)容中的50%代碼,均是由AI完成,年薪高達(dá)120k美金(87萬(wàn)元)。
職位介紹中,每天工作12-15小時(shí),卻成為了全網(wǎng)的華點(diǎn)。
如果AI真的提高了生產(chǎn)力,為啥還會(huì)有人每天狂干12-15個(gè)小時(shí)呢?
400行代碼,ChatGPT化身編程導(dǎo)師
Karpathy如何用嘴,迅速完成一個(gè)iOS應(yīng)用的開發(fā)?
推文中,他具體分享了自己與ChatGPT對(duì)話的四次過(guò)程:?jiǎn)?dòng)應(yīng)用;功能增強(qiáng);使用AppStorage持久化數(shù)據(jù);部署到手機(jī)。
在啟動(dòng)應(yīng)用階段,Karpathy從0開始,告訴ChatGPT自己的需求:剛剛下載了Xcode,希望用SwiftUI構(gòu)建一個(gè)iOS應(yīng)用。
ChatGPT在接下來(lái)開啟了「手把手」教學(xué)。
首先安裝和啟動(dòng)Xcode,就這個(gè)環(huán)節(jié)已經(jīng)細(xì)致到,打開點(diǎn)擊具體某個(gè)選項(xiàng)。然后配置項(xiàng)目,包括命名、界面、編程語(yǔ)言等選擇。
接下來(lái),ChatGPT還提供了基礎(chǔ)代碼,包括SwiftUI的界面布局和邏輯實(shí)現(xiàn),幫助Karpathy快速搭建了一個(gè)可運(yùn)行的原型。
有了原型之后,便開始實(shí)操了——構(gòu)建一個(gè)體脂追蹤的計(jì)時(shí)器APP。
Karpathy就像一位產(chǎn)品經(jīng)理一樣,給出了自己的具體要求:「計(jì)時(shí)器」主要體現(xiàn)隨時(shí)間變化而自然消耗的熱量,用大號(hào)數(shù)字顯示在屏幕中央,還要每秒更新一次消耗的熱量。
ChatGPT按照指令,給出了分布構(gòu)建過(guò)程,以及下一步建議。
接下來(lái),Karpathy還要求其給出不同按鍵對(duì)應(yīng)的功能代碼搭建過(guò)程,以及每秒更新的配置。
第二部分,在基礎(chǔ)版本完成之后,就是去做功能增強(qiáng)。
比如,支持明暗模式切換,簡(jiǎn)單的加減按鈕、觸覺(jué)反饋和動(dòng)畫等,ChatGPT均提供了具體的代碼片段和實(shí)現(xiàn)建議。
圖片
為了讓數(shù)據(jù)在應(yīng)用關(guān)閉后依然保存,Karpathy還向ChatGPT詢問(wèn)了如何使用AppStorage。
ChatGPT詳細(xì)講解了AppStorage的使用方法,并幫他將卡路里數(shù)據(jù)存儲(chǔ)到UserDefaults中。
圖片
最后一步,Karpathy需要將這款應(yīng)用部署到iPhone上,ChatGPT指導(dǎo)他完成了Xcode配置、證書設(shè)置、設(shè)備部署的步驟,并最終讓應(yīng)用成功運(yùn)行在手機(jī)上。
經(jīng)過(guò)1小時(shí)的對(duì)話,卡路里計(jì)時(shí)器的應(yīng)用完成了。
下面是計(jì)時(shí)器的主要功能,一共200行代碼,只有幾個(gè)UI元素和一些簡(jiǎn)單的邏輯。
第二天,Karpathy又通過(guò)與ChatGPT的3次對(duì)話,為應(yīng)用添加了一些新功能:動(dòng)畫環(huán)、將固定值顯示在 [-3500, 3500] 區(qū)間內(nèi)。
剛剛,他還為其添加了日志、為+100/-100添加小字說(shuō)明并隱藏BMR兩個(gè)功能。
截至目前,這款應(yīng)用代碼也僅有400行。
網(wǎng)友瘋狂整活
隨著氛圍編程越來(lái)越火,圈內(nèi)大佬Min Choi也總結(jié)了一波效果拔群的案例。
開發(fā)者Luke Van In用大約1萬(wàn)行Claude編寫的代碼構(gòu)建了一款游戲。
他認(rèn)為,當(dāng)前代碼庫(kù)的復(fù)雜庫(kù)已經(jīng)接近可控的極限,Claude已經(jīng)能夠重構(gòu)20%代碼,并自動(dòng)添加了武器后坐力和鏡頭抖動(dòng)的效果。
對(duì)于貼花系統(tǒng),Luke又借助了Grok進(jìn)行了一些手動(dòng)調(diào)整。
xAI工程師kache設(shè)置了一種方法,可以動(dòng)態(tài)重新加載客戶端和服務(wù)器邏輯,無(wú)需用戶刷新頁(yè)面,就可以實(shí)時(shí)更新和迭代。
他還特意強(qiáng)調(diào),如果自己清楚想要做什么,氛圍編程才能發(fā)揮其優(yōu)勢(shì)。
還有一位開發(fā)者Louie Bacaj僅用Claude 3.7+o1 Pro,在幾個(gè)小時(shí)內(nèi)通過(guò)氛圍編程做出一個(gè)益智游戲。
圖片
還有角色扮演的小游戲,也是通過(guò)氛圍編程就能完成。
還有人用兩條提示,就能讓游戲中NPC駕駛飛機(jī)。
圖片
不是所有AI輔助編程都是「氛圍編程」
值得注意的是,并不是所有用上AI輔助的編程,都能稱之為「氛圍編程」。
在最近的一篇博客中,知名web框架Django的共同作者Simon Willison,就對(duì)這一概念進(jìn)行了非常詳盡的解釋。
并且,還獲得了「發(fā)明人」Karpathy的大加贊賞:
就個(gè)人體驗(yàn)而言,當(dāng)我處于類似下面這條狗的狀態(tài)時(shí),就會(huì)稱之為「氛圍編程」——比如昨晚開發(fā)iOS應(yīng)用時(shí)的場(chǎng)景。
但實(shí)際開發(fā)中,我很少?gòu)氐追湃蜛I自由發(fā)揮,更多時(shí)候保持著漸進(jìn)式迭代:審閱生成代碼、分階段增加復(fù)雜度、通過(guò)持續(xù)提出澄清問(wèn)題來(lái)逐步理解模塊間的交互邏輯。
氛圍編程正當(dāng)時(shí)
自從Andrej Karpathy在2月3日首次提出「氛圍編程」后,這一概念隨即登上各大主流媒體,并引發(fā)無(wú)數(shù)線上討論。
為了避免偏離初衷,這里必須強(qiáng)調(diào)——氛圍編程絕不等同于借助LLM編寫代碼,而是在不審查L(zhǎng)LM產(chǎn)出代碼的情況下構(gòu)建軟件。
「氛圍編程」可以你完全沉浸在氛圍中,擁抱指數(shù)級(jí)進(jìn)步,甚至忘記代碼本身的存在。這是因?yàn)長(zhǎng)LM(例如Cursor Composer搭配Sonnet)已經(jīng)變得足夠優(yōu)秀。我甚至可以只用SuperWhisper與Composer進(jìn)行對(duì)話,幾乎無(wú)需摸鍵盤。
我會(huì)提出最基礎(chǔ)的要求,比如「將側(cè)邊欄的內(nèi)邊距減半」。并且總是點(diǎn)擊「全部接受」,而不去查看代碼差異。遇到報(bào)錯(cuò),就直接復(fù)制到對(duì)話框中讓LLM去修復(fù)。代碼的復(fù)雜程度已超出我的日常認(rèn)知,真要理解必須逐行細(xì)讀。有時(shí)LLM無(wú)法修復(fù)bug,我就直接繞過(guò)或隨機(jī)調(diào)整直到問(wèn)題消失。
對(duì)于周末隨便做的項(xiàng)目來(lái)說(shuō),可謂是充滿趣味。只是觀察、口述、運(yùn)行、復(fù)制粘貼,結(jié)果居然大部分都能跑通。
作為天賦異稟的資深程序員,Andrej本無(wú)需AI輔助。他選擇這種編程方式,是因?yàn)閲L試瘋狂的創(chuàng)意充滿樂(lè)趣,且LLM的代碼生成速度比最頂尖的人類程序員快幾個(gè)數(shù)量級(jí)。
對(duì)于低風(fēng)險(xiǎn)的原型開發(fā),何不放手讓它發(fā)揮?
使用LLM寫代碼≠氛圍編程
與專業(yè)軟件工程師使用LLM的方式相比,這種「忘記代碼存在」的開發(fā)方式有著本質(zhì)差異。
首先,軟件工程師需要構(gòu)建的是符合多重標(biāo)準(zhǔn)的系統(tǒng)——不僅要可驗(yàn)證運(yùn)行,還需具備人類可讀性(及機(jī)器可解析性),并能支撐長(zhǎng)期迭代開發(fā)。
其次,軟件工程師需要在同時(shí)考慮顯性需求與隱性約束的情況下,從數(shù)十種潛在方案中篩選出最優(yōu)解,進(jìn)而實(shí)現(xiàn)性能、可訪問(wèn)性、安全性、可維護(hù)性、成本效益等指標(biāo)之間的平衡。
第三,軟件工程師還需要對(duì)代碼進(jìn)行審查。生產(chǎn)環(huán)境AI輔助開發(fā)鐵律是:任何無(wú)法向其他人精確解釋工作原理的代碼,都禁止進(jìn)入版本庫(kù)。
不難看出,當(dāng)LLM生成代碼后,軟件工程師會(huì)完整地執(zhí)行審查、測(cè)試,以及確??山忉屝赃@一系列流程。也就是說(shuō),這本質(zhì)上仍是傳統(tǒng)軟件開發(fā)范式。工具鏈中是否包含LLM,并不改變工程實(shí)踐的屬性。
氛圍編程的價(jià)值
雖然氛圍編程≠用LLM進(jìn)行編程,但這并不意味著它是一種不負(fù)責(zé)任的開發(fā)方式。
這種突破性的編程形式,實(shí)則蘊(yùn)含著改變世界的潛能——讓數(shù)百萬(wàn)沒(méi)有計(jì)算機(jī)學(xué)位或經(jīng)過(guò)編程培訓(xùn)的普通人,也能借助工具,讓計(jì)算機(jī)完成高度定制化任務(wù),打造屬于自己的個(gè)性化工具。
如此一來(lái),那些原本和編程沒(méi)什么交集的人可能會(huì)因此點(diǎn)燃熱情,并最終成長(zhǎng)為專業(yè)開發(fā)者。這個(gè)行業(yè)的最大壁壘——如同攀登懸崖般的初始學(xué)習(xí)曲線——將被氛圍編程徹底鏟平。
而資深的工程師們,也可以借此訓(xùn)練自己對(duì)模型能力邊界的認(rèn)知。正如此前所論述的,使用LLM編碼如同在暗藏技術(shù)雷區(qū)的迷宮中探索,需要持續(xù)積累直覺(jué)經(jīng)驗(yàn)。
一句話總結(jié)就是,「氛圍編程」值得所有「段位」的開發(fā)者親身投入體驗(yàn)。