編譯 | 傅宇琪
5 月 6 日,AI 編程黑馬 Cursor 的母公司 Anysphere 完成了一輪 9 億美元(約合人民幣約 65 億元)融資,估值增長(zhǎng)兩倍多,達(dá)到約 90 億美元(約合人民幣約 654 億元)。這款全球增長(zhǎng)最快的 AI 代碼編輯器,推出僅兩年便達(dá)到了 3 億美元的年經(jīng)常性收入,其背后成功的秘訣是什么?
最近,Anysphere 的聯(lián)合創(chuàng)始人兼首席執(zhí)行官 Michael Truell 在播客節(jié)目中,與主持人 Lenny 詳細(xì)回憶了 Cursor 構(gòu)建過(guò)程中的經(jīng)驗(yàn)教訓(xùn),團(tuán)隊(duì)搭建的心得,以及如何為即將到來(lái)的 AI 未來(lái)做好準(zhǔn)備的建議?;谠摬タ鸵曨l,InfoQ 進(jìn)行了部分增刪。
核心觀點(diǎn)如下:
未來(lái)工程師將更多地像是邏輯設(shè)計(jì)師,真正的工作將是明確表達(dá)你對(duì)軟件如何運(yùn)作的意圖。
成功的關(guān)鍵在于持續(xù)的焦慮和對(duì)改進(jìn)的不斷追求。
在模型開(kāi)發(fā)過(guò)程中,不要集中精力在基礎(chǔ)模型已表現(xiàn)優(yōu)秀的地方,而是要聚焦于它們的弱點(diǎn),并思考如何補(bǔ)充它們。
軟件的需求超出現(xiàn)有技術(shù),未來(lái)工程師的需求將更大。
Cursor 的構(gòu)建
Lenny:Cursor 正在改變?nèi)藗儤?gòu)建產(chǎn)品的方式、職業(yè)生涯、行業(yè)等等,這一切是如何開(kāi)始的呢?初期有沒(méi)有什么難忘的時(shí)刻?
Michael:最初,兩個(gè)關(guān)鍵時(shí)刻讓我們對(duì) AI 產(chǎn)品充滿興奮。其一是在使用 Copilot 測(cè)試版時(shí),我們感受到 AI 從虛擬演示轉(zhuǎn)變?yōu)榱苏嬲龑?shí)用的工具。另一個(gè)是 OpenAI 發(fā)布的關(guān)于技術(shù)擴(kuò)展的研究論文,表明了 AI 可以通過(guò)簡(jiǎn)單手段持續(xù)提升,如擴(kuò)大模型規(guī)模和增加輸入數(shù)據(jù)量等。
到了 2021 年底,我們對(duì) AI 技術(shù)的未來(lái)充滿期待,認(rèn)為它將變得更加成熟。我們意識(shí)到,盡管許多人在構(gòu)建模型,但很少有人思考 AI 如何改變知識(shí)工作領(lǐng)域。于是,我們開(kāi)始思考:隨著技術(shù)的成熟,哪些領(lǐng)域會(huì)變化?工作狀態(tài)如何?工具與模型如何演變?
我們最開(kāi)始的時(shí)候認(rèn)為編程領(lǐng)域已被充分探索,AI 將改變這一領(lǐng)域,但大家依然在關(guān)注。因此,我們把目光放在了一個(gè)較為冷門且發(fā)展緩慢的領(lǐng)域——機(jī)械工程。然而,最終我們意識(shí)到這并非我們的興趣所在。盡管編程領(lǐng)域已有積累,但變化不大。許多人未能意識(shí)到新模型將如何改變軟件開(kāi)發(fā)方式,這促使我們開(kāi)始構(gòu)建 Cursor。
Lenny:有時(shí)候人們會(huì)建議你進(jìn)入一個(gè)“無(wú)聊”的行業(yè),因?yàn)闆](méi)有人關(guān)注,反而有機(jī)會(huì)。這個(gè)方法有時(shí)確實(shí)有效,但我更喜歡你后來(lái)提出的想法:“實(shí)際上,我們應(yīng)該追求最熱門、最受關(guān)注的領(lǐng)域,比如 AI 編程和應(yīng)用構(gòu)建。”這最終帶來(lái)了成功。你提到,你沒(méi)有看到足夠的雄心,覺(jué)得很多事情還沒(méi)有完成。這似乎是一個(gè)有趣的教訓(xùn)。即使某個(gè)領(lǐng)域看起來(lái)已經(jīng)被占領(lǐng),例如 GitHub、Copilot 等產(chǎn)品已經(jīng)出現(xiàn),如果你發(fā)現(xiàn)這些產(chǎn)品缺乏雄心,或者它們的方式存在某些問(wèn)題,你依然可以看到巨大的機(jī)會(huì)。
Michael:我認(rèn)為 AI 的令人興奮之處在于,它在許多領(lǐng)域依然有巨大的潛力,技術(shù)上限非常高。擁有一個(gè)有如此高上限的空間,在是軟件領(lǐng)域的獨(dú)特之處。
Lenny:各大公司也在走不同的路線。一個(gè)是為工程師構(gòu)建一個(gè) IDE,并為其添加 AI 魔法;另一個(gè)是完全以 AI Agent 為基礎(chǔ)開(kāi)發(fā)產(chǎn)品;還有一個(gè)則是專注于構(gòu)建最優(yōu)秀的編碼模型。那么是什么讓你們決定選擇 IDE 路徑,并認(rèn)為這是最佳選擇呢?
Michael:從一開(kāi)始,專注于只做模型的團(tuán)隊(duì)是在追求端到端的自動(dòng)化編程,而我們關(guān)心的是讓人類掌控他們構(gòu)建的最終工具中的所有決策。那些團(tuán)隊(duì)傾向于設(shè)想一個(gè) AI 主導(dǎo)的未來(lái),而我們更傾向于保持現(xiàn)實(shí)主義態(tài)度。
我們一直強(qiáng)調(diào)“自我使用”,作為最終用戶參與其中,使我們對(duì)當(dāng)前技術(shù)有了更為現(xiàn)實(shí)的認(rèn)知,也促使我們相信人類應(yīng)該掌控一切,AI 不能做到所有事情。我們希望賦予人類這種控制權(quán),因此我們避開(kāi)了單純做模型的公司和沒(méi)有人類控制的端到端自動(dòng)化方式。
至于為何選擇做 IDE 而非插件,我們認(rèn)為編程將在這些模型的推動(dòng)下發(fā)生巨大變化,而現(xiàn)有編碼環(huán)境的可擴(kuò)展性極其有限。如果你認(rèn)為 UI 和編程方式將有重大變化,就必須對(duì)整個(gè)應(yīng)用程序擁有控制權(quán)。
Lenny:我很好奇,你認(rèn)為未來(lái)會(huì)有“AI 工程師”在 Slack 里為你做事嗎?這是 Cursor 未來(lái)的一部分嗎?
Michael:我認(rèn)為,未來(lái)你需要能夠在不同工作方式之間輕松切換。有時(shí)候,可能希望讓 AI 獨(dú)立運(yùn)行一段時(shí)間,然后再將其工作拉入并快速處理,之后可能再次讓它獨(dú)立運(yùn)行。因此,后臺(tái)與前臺(tái)的工作方式應(yīng)該在同一平臺(tái)上順暢運(yùn)作。后臺(tái)工作特別適合那些可以明確指定需求、且對(duì)正確性要求不高的編程任務(wù),例如修復(fù) bug,但這并不是編程的全部。
因此,我認(rèn)為 IDE 的定義會(huì)隨著時(shí)間的推移發(fā)生變化,我們選擇自己的編輯器方式也是基于這個(gè)前提:它必須不斷發(fā)展。這包括可以從不同平臺(tái)(如 Slack、問(wèn)題跟蹤器等)啟動(dòng)任務(wù),同時(shí),界面也會(huì)發(fā)生很大的變化。目前,我們主要將 IDE 視為構(gòu)建軟件的地方。
Lenny:我覺(jué)得,人們?cè)谡務(wù)?Agent 和這些 AI 工程師會(huì)為你做所有事情時(shí),往往沒(méi)有充分討論的一點(diǎn)是,我們實(shí)際上都在變成工程經(jīng)理,管理著很多不那么聰明的員工,需要做大量的審核、批準(zhǔn)和指定。你對(duì)此有什么看法?有沒(méi)有什么方法可以讓這一過(guò)程變得更輕松?
Michael:我們發(fā)現(xiàn)最成功的客戶在使用 AI 時(shí)其實(shí)比較保守,他們非常注重縮小交給 AI 處理的任務(wù)范圍。無(wú)論是來(lái)自 Agent 還是整體 AI,對(duì)于需要審查的代碼有兩種模式:第一種是,你在前期指定任務(wù),AI 完成后你再審查工作;另一種是,將任務(wù)拆分成多個(gè)小部分,先指定一些內(nèi)容,AI 寫(xiě)一些代碼并審查,接著繼續(xù)指定,AI 繼續(xù)寫(xiě)和審查,自動(dòng)補(bǔ)全通常是在這種模式下進(jìn)行的。我們看到最成功的用戶往往采取拆分任務(wù)并保持靈活性的方法。
Lenny:回到你們第一次構(gòu)建 Cursor 的時(shí)候,你們是在哪個(gè)時(shí)刻意識(shí)到這個(gè)產(chǎn)品已經(jīng)準(zhǔn)備好了?覺(jué)得現(xiàn)在是時(shí)候發(fā)布它了?
Michael:當(dāng)我們開(kāi)始構(gòu)建 Cursor 時(shí),我們對(duì)推向市場(chǎng)持謹(jǐn)慎態(tài)度,避免過(guò)早發(fā)布。最初,我們從零開(kāi)始構(gòu)建原型,并沒(méi)有以 VS Code 為基礎(chǔ)。我們必須自己開(kāi)發(fā)許多現(xiàn)代代碼編輯器所需的功能,包括多語(yǔ)言支持、語(yǔ)言間導(dǎo)航、錯(cuò)誤追蹤等,還需要集成命令行和遠(yuǎn)程服務(wù)器功能。
我們迅速投入到開(kāi)發(fā)工作中,五周后開(kāi)始完全使用自己的編輯器,放棄了之前的工具。當(dāng)我們發(fā)現(xiàn)它有用時(shí),就讓其他人試用,并進(jìn)行了短期測(cè)試。幾個(gè)月后,我們將其推向市場(chǎng),大約是在寫(xiě)出第一行代碼后的三個(gè)月。那時(shí)我們的心態(tài)是:“讓我們盡快發(fā)布這個(gè)產(chǎn)品,公開(kāi)構(gòu)建。”
令我們驚訝的是,我們本以為會(huì)長(zhǎng)時(shí)間為幾百個(gè)用戶開(kāi)發(fā),但一開(kāi)始就收到了大量興趣和反饋,這些反饋非常有幫助,并促使我們從手工構(gòu)建的編輯器轉(zhuǎn)向基于 VS Code 的版本。從那時(shí)起,我們就開(kāi)始在公開(kāi)環(huán)境中進(jìn)行迭代。
成功的秘訣是什么
Lenny:我覺(jué)得你們從零到一億的年經(jīng)常性收入(ARR)只用了大約一年到一年半的時(shí)間,這真是歷史性的成就。你認(rèn)為你們成功的秘訣是什么?
Michael:三個(gè)月的版本其實(shí)并不太好,所以我認(rèn)為成功的關(guān)鍵在于持續(xù)的焦慮和對(duì)改進(jìn)的不斷追求。我們始終意識(shí)到,產(chǎn)品有許多改進(jìn)的空間。我們的最終目標(biāo)是發(fā)明一種全新的編程方式,自動(dòng)化大部分當(dāng)前的編碼工作。盡管 Cursor 已經(jīng)取得了一些進(jìn)展,我們?nèi)匀挥X(jué)得離這個(gè)目標(biāo)很遠(yuǎn),仍有大量工作需要完成。
Lenny:你們構(gòu)建了一個(gè)自己作為工程師非常喜歡的優(yōu)秀產(chǎn)品,然后發(fā)布出去,人們喜歡它,再紛紛告訴別人。
Michael:我們也確實(shí)花時(shí)間做了很多其他工作,比如組建團(tuán)隊(duì)和支持輪換等。但一些通常在公司早期階段需要關(guān)注的問(wèn)題,我們選擇讓它們?cè)谝欢螘r(shí)間內(nèi)處于“燃燒狀態(tài)”,尤其是在銷售和市場(chǎng)營(yíng)銷方面。我們專注于產(chǎn)品,先打造一個(gè)自己和團(tuán)隊(duì)都喜歡的產(chǎn)品,然后再根據(jù)用戶反饋進(jìn)行調(diào)整。聽(tīng)起來(lái)簡(jiǎn)單,但實(shí)際上要做得好非常難。
有很多方向和路徑可以選擇,專注于正確的事物并有效排序優(yōu)先級(jí)是非常具有挑戰(zhàn)性的。在這個(gè)領(lǐng)域的另一個(gè)難點(diǎn)是,這種產(chǎn)品構(gòu)建方式非??鐚W(xué)科——我們既不是普通的軟件公司,也不是基礎(chǔ)模型公司,因?yàn)槲覀円獮閿?shù)百萬(wàn)用戶開(kāi)發(fā)產(chǎn)品。在保證產(chǎn)品質(zhì)量的同時(shí),還需要在合適的地方做更多的科學(xué)研究和模型開(kāi)發(fā)。因此,如何在這方面做到平衡,一直是一個(gè)挑戰(zhàn)。
Lenny:到目前為止,你在構(gòu)建 Cursor 和其他 AI 產(chǎn)品過(guò)程中,做過(guò)的最違背直覺(jué)的事情是什么?
Michael:最違背直覺(jué)的一點(diǎn)是,剛開(kāi)始時(shí)我們完全沒(méi)想到會(huì)進(jìn)行自己的模型開(kāi)發(fā)。進(jìn)入這個(gè)領(lǐng)域時(shí),已有公司專注于從零開(kāi)始訓(xùn)練模型,我們也計(jì)算過(guò)訓(xùn)練成本,知道這對(duì)我們來(lái)說(shuō)難以實(shí)現(xiàn)。外面已經(jīng)有很多優(yōu)秀的模型,尤其是在預(yù)訓(xùn)練方面,我們認(rèn)為不必重復(fù)做別人已經(jīng)完成的工作。
然而隨著發(fā)展,我們進(jìn)行了大量模型開(kāi)發(fā),并專門招聘了一個(gè)優(yōu)秀的團(tuán)隊(duì)。到目前為止,Cursor 中的每個(gè)“魔法時(shí)刻”都與自定義模型相關(guān),這個(gè)過(guò)程是逐步發(fā)展的。最初,我們訓(xùn)練自己的模型是因?yàn)闆](méi)有合適的大型基礎(chǔ)模型可用,結(jié)果非常成功。在模型開(kāi)發(fā)過(guò)程中,一個(gè)有幫助的策略是精心選擇合適的領(lǐng)域,不要集中精力在基礎(chǔ)模型已表現(xiàn)優(yōu)秀的地方,而是要聚焦于它們的弱點(diǎn),并思考如何補(bǔ)充它們。
Lenny:很多人聽(tīng)到你們有自己的模型時(shí)會(huì)感到驚訝。人們談?wù)?Cursor 和這個(gè)領(lǐng)域的其他公司時(shí),會(huì)認(rèn)為它們只是建立在 ChatGPT 或 Sonnet 之上。能談?wù)勀銈兊哪P捅澈蠹夹g(shù)堆棧的情況嗎?
Michael:我們確實(shí)在多個(gè)場(chǎng)景中使用了最大的基礎(chǔ)模型,它們是 Cursor 體驗(yàn)的重要組成部分。我們自己開(kāi)發(fā)模型的地方,通常是為了處理一些基礎(chǔ)模型因成本或速度原因無(wú)法滿足的用例。例如,自動(dòng)完成功能。在編碼中,有時(shí)你可以完全預(yù)測(cè)接下來(lái)的一段工作,就像寫(xiě)作時(shí)的自動(dòng)補(bǔ)全一樣。不同的是,編碼時(shí),下一步修改的內(nèi)容通??梢詮闹暗拇a中預(yù)測(cè)出來(lái)。
Cursor 的核心功能之一就是針對(duì)自動(dòng)完成功能的優(yōu)化,能夠預(yù)測(cè)你在多個(gè)文件或同一文件多個(gè)位置上的操作。要讓模型在這個(gè)用例中表現(xiàn)出色,首先需要解決速度問(wèn)題,模型必須在 300 毫秒內(nèi)提供自動(dòng)補(bǔ)全,并且要控制成本,因?yàn)槊看伟存I時(shí)都需要運(yùn)行大量模型并不斷調(diào)整預(yù)測(cè)。另一個(gè)特殊用例是代碼差異的自動(dòng)補(bǔ)全。我們訓(xùn)練了專門的模型,使其能夠精準(zhǔn)地預(yù)測(cè)代碼庫(kù)中的變化,包括刪除和添加部分。
此外,我們還使用自有模型來(lái)輔助像 Sonnet、Gemini 或 GPT 這樣的基礎(chǔ)模型,作用于輸入和輸出端。在輸入端,我們的模型遍歷整個(gè)代碼庫(kù),找出與大模型相關(guān)的部分,像一個(gè)專門的小型搜索引擎;在輸出端,我們獲取大模型的修改建議,并通過(guò)我們自己的模型填補(bǔ)細(xì)節(jié)。這樣,我們能夠?qū)⒏邔哟蔚男薷霓D(zhuǎn)化為完整的代碼差異,極大地提升了產(chǎn)品的質(zhì)量和速度。
Lenny:我之前在播客上采訪了 OpenAI 的首席產(chǎn)品官 Kevin Weil,他稱之為“模型集成”,就是以這種方式運(yùn)作——利用每個(gè)模型的最佳特性,并且如你所說(shuō),使用成本更低的模型帶來(lái)的優(yōu)勢(shì)。其他模型是指基于 Llama 之類的開(kāi)源模型嗎?
Michael:是的。我們從現(xiàn)有的最優(yōu)秀的預(yù)訓(xùn)練模型開(kāi)始,通常是開(kāi)源的,有時(shí)也會(huì)與這些大模型提供商合作,盡管他們并不公開(kāi)分享模型的權(quán)重,因?yàn)槲覀冏铌P(guān)心的不是逐行讀取權(quán)重矩陣來(lái)獲得特定的輸出。我們更關(guān)心的是能夠訓(xùn)練這些模型,并進(jìn)行后訓(xùn)練。
Lenny:這引出了一個(gè)很多 AI 創(chuàng)始人和投資者總是思考的話題,那就是護(hù)城河(moats)和 AI 領(lǐng)域的防御能力。你如何看待定制模型的長(zhǎng)期防御能力,特別是知道有其他公司,不斷發(fā)布新產(chǎn)品,試圖搶占你的市場(chǎng)份額?
Michael:我們處于一個(gè)必須不斷努力構(gòu)建最好產(chǎn)品的領(lǐng)域,這對(duì)我們和整個(gè)行業(yè)都是如此。天花板非常高,無(wú)論構(gòu)建什么樣的壁壘,都有可能被超越。尤其是在搜索領(lǐng)域,增加分發(fā)渠道能幫助改進(jìn)產(chǎn)品,因?yàn)榭梢愿鶕?jù)用戶反饋調(diào)整算法和學(xué)習(xí)方式。
我認(rèn)為,這種動(dòng)態(tài)同樣適用于我們的市場(chǎng)。雖然這對(duì)我們公司來(lái)說(shuō)可能是令人沮喪的事實(shí),但對(duì)世界而言卻是令人興奮的,那就是:有許多可以超越的機(jī)會(huì),還有更多有用的東西等待被構(gòu)建。我們離能夠在未來(lái) 5 到 10 年內(nèi)完全競(jìng)爭(zhēng)還有很長(zhǎng)的路要走,而我們的責(zé)任就是保持這個(gè)進(jìn)步。
Lenny:持續(xù)做到最好,讓人們一直使用你的產(chǎn)品,而不是通過(guò)創(chuàng)建“鎖定”機(jī)制之類的方式來(lái)留住用戶,像 Salesforce 通過(guò)與整個(gè)公司簽訂合同,迫使他們使用你的產(chǎn)品。
Michael:我認(rèn)為,如果你所在的領(lǐng)域很快就會(huì)耗盡創(chuàng)新機(jī)會(huì),那就不太適合。但如果你處在一個(gè)需要大量投資,并且通過(guò)讓更多優(yōu)秀的人在正確的路徑上工作來(lái)不斷創(chuàng)造價(jià)值的領(lǐng)域,你就能獲得研發(fā)規(guī)模的經(jīng)濟(jì)效益,并推動(dòng)技術(shù)朝著正確方向發(fā)展,最終形成競(jìng)爭(zhēng)壁壘。盡管如此,我相信最關(guān)鍵的還是要打造出最好的產(chǎn)品。
關(guān)于未來(lái)是否會(huì)有主導(dǎo)者,我認(rèn)為這個(gè)市場(chǎng)非常龐大。我們面臨的挑戰(zhàn)是自動(dòng)化大量繁瑣的知識(shí)工作,真正提升各領(lǐng)域的效率和生產(chǎn)力,遠(yuǎn)遠(yuǎn)超出了為開(kāi)發(fā)者提供構(gòu)建工具的市場(chǎng)規(guī)模。我相信會(huì)有多個(gè)不同的解決方案出現(xiàn),最終會(huì)有一家公司構(gòu)建一個(gè)通用工具,能夠構(gòu)建幾乎所有軟件。但同時(shí),市場(chǎng)中也會(huì)有細(xì)分領(lǐng)域,你可以為特定市場(chǎng)或開(kāi)發(fā)生命周期中的特定環(huán)節(jié)提供解決方案。總體來(lái)看,編程將從單純的編程語(yǔ)言轉(zhuǎn)向更高層次的工作,最終會(huì)有一個(gè)主導(dǎo)者,這將是一個(gè)巨大的商業(yè)機(jī)會(huì)。
Lenny:沿著這個(gè)思路,微軟實(shí)際上最早站在了這一切的中心,推出了一個(gè)令人驚嘆的產(chǎn)品,擁有出色的分發(fā)渠道。然而,微軟似乎并沒(méi)有贏得這場(chǎng)競(jìng)爭(zhēng),反而感覺(jué)有些落后了。你覺(jué)得這是怎么回事?
Michael:我認(rèn)為,Copilot 沒(méi)有完全達(dá)到一些人預(yù)期的原因,既有市場(chǎng)問(wèn)題,也有特定的歷史原因。首先,微軟顯然是我們工作的一個(gè)重要靈感來(lái)源,通常他們做了很多出色的工作,我們也是許多微軟產(chǎn)品的用戶,但我認(rèn)為這個(gè)市場(chǎng)對(duì)現(xiàn)有公司(incumbent)并不友好。
對(duì)現(xiàn)有公司友好的市場(chǎng)通常是那些有一定局限并很快商品化的市場(chǎng),你可以將產(chǎn)品捆綁銷售,且不同產(chǎn)品之間的投資回報(bào)率差異不大。在這種情況下,可能并不值得購(gòu)買創(chuàng)新的解決方案,而是選擇與其他產(chǎn)品捆綁的東西。
另一個(gè)有利于現(xiàn)有公司的市場(chǎng)是那種一開(kāi)始就將所有內(nèi)容集中在一個(gè)地方,且轉(zhuǎn)換成本非常高的市場(chǎng),無(wú)論是好是壞。而在我們的情況下,你可以嘗試不同的工具,決定哪個(gè)產(chǎn)品更好。所以,這對(duì)現(xiàn)有公司并不友好,反而是對(duì)那些擁有創(chuàng)新產(chǎn)品的公司更有利。
至于歷史原因,參與 Copilot 第一版開(kāi)發(fā)的團(tuán)隊(duì)大多已經(jīng)轉(zhuǎn)向其他項(xiàng)目。我認(rèn)為,協(xié)調(diào)涉及這個(gè)項(xiàng)目的不同部門和團(tuán)隊(duì)一直存在一些困難。
Lenny:如果你可以坐在每個(gè)第一次使用 Cursor 的新用戶旁邊,悄悄告訴他們一兩個(gè)成功的秘訣,讓他們能更好地使用 Cursor,你會(huì)說(shuō)什么?
Michael:成功使用 Cursor 的關(guān)鍵之一是了解模型的能力。用戶需要明白模型能處理的任務(wù)復(fù)雜度,了解需要多大程度上指定任務(wù)給模型,同時(shí)也要認(rèn)識(shí)到模型的質(zhì)量、局限性以及它能做什么和不能做什么。
為了幫助用戶培養(yǎng)這種“taste”,我有兩個(gè)建議。第一個(gè)是避免一開(kāi)始就直接對(duì)模型說(shuō):“嘿,做這個(gè)任務(wù)”,然后看輸出結(jié)果,結(jié)果要么失望,要么直接接受。我建議將任務(wù)拆分成小塊,分步指定,這樣可以逐步獲得反饋,而不是一次性給出一個(gè)大任務(wù)。這樣做能更有效地利用模型,避免可能的負(fù)面效果。
第二個(gè)建議更適合副項(xiàng)目,而非正式工作。我鼓勵(lì)開(kāi)發(fā)者,尤其是那些習(xí)慣傳統(tǒng)開(kāi)發(fā)流程的人,嘗試“跌倒”,在安全環(huán)境下探索模型的極限。大膽地使用 AI,很多人低估了 AI 的能力,所以在安全環(huán)境中進(jìn)行大膽嘗試,你可能會(huì)驚訝于模型的表現(xiàn)。
Lenny:要培養(yǎng)對(duì)模型能做什么的直覺(jué),了解它能帶領(lǐng)一個(gè)想法走多遠(yuǎn),而不是只是引導(dǎo)它走一段路。我敢打賭,每當(dāng)有新的模型發(fā)布時(shí),你就需要重新建立這種直覺(jué),譬如當(dāng) 4.0 版本發(fā)布時(shí),你就得重新做一次。這種說(shuō)法對(duì)嗎?
Michael:是的。過(guò)去幾年,這個(gè)問(wèn)題并不像人們第一次接觸一些大型模型時(shí)那樣顯著。這也是我們希望能更好地解決的問(wèn)題,減輕用戶的負(fù)擔(dān)。
Lenny:人們總是會(huì)爭(zhēng)論,像 Cursor 這樣的工具對(duì)初級(jí)工程師更有幫助,還是對(duì)高級(jí)工程師更有幫助?你認(rèn)為今天誰(shuí)從 Cursor 中受益最大?
Michael:這兩類人群都從 Cursor 中受益匪淺,很難確切說(shuō)哪個(gè)群體更受益。
初級(jí)工程師往往有點(diǎn)過(guò)度依賴 AI,幾乎依賴它做所有事情,而目前我們還沒(méi)有達(dá)到能夠在專業(yè)工具中完全依賴 AI、與數(shù)十人、數(shù)百人合作并且在長(zhǎng)期維護(hù)的代碼庫(kù)中工作的階段。至于高級(jí)工程師,我認(rèn)為平均而言,高級(jí)工程師往往低估了 AI 對(duì)他們的幫助,仍然堅(jiān)持他們現(xiàn)有的工作流程。因此,比較這兩者的相對(duì)受益是有些困難的,我認(rèn)為他們都陷入了不同的反面做法。
Lenny:這就像是光譜的兩端——一端期待過(guò)多,另一端則期望不足。
Michael:是的,也許是處于兩者中間地帶的高級(jí)工程師受益更大。
Cursor 招聘什么樣的人
Lenny:如果你可以見(jiàn)到剛開(kāi)始做 Cursor 時(shí)的 Michael,你會(huì)給他什么建議?
Michael:許多寶貴的知識(shí)往往是潛在的,且難以用語(yǔ)言表達(dá)。生活中的一個(gè)遺憾是,在某些領(lǐng)域,你確實(shí)需要“跌倒”才能學(xué)到正確的東西,或者需要身邊有一個(gè)在某一領(lǐng)域非常出色的榜樣。
對(duì)我們來(lái)說(shuō),能夠組建一支世界級(jí)的工程師和研究團(tuán)隊(duì)來(lái)共同打造 Cursor 至關(guān)重要。引入合適的人才,可能是我們最為關(guān)注的事之一, 我們因此等了很長(zhǎng)時(shí)間才擴(kuò)展團(tuán)隊(duì)。我認(rèn)為許多成功的公司都面臨“招聘過(guò)快”的問(wèn)題,而我們一開(kāi)始確實(shí)招聘得太慢了。我們?cè)谡衅高^(guò)程中經(jīng)歷了許多關(guān)于如何找到合適的候選人、如何判斷他們是否符合團(tuán)隊(duì)條件、偉大是什么樣子的,以及如何激發(fā)他們興趣的教訓(xùn)。
Lenny:哪些是你們的經(jīng)驗(yàn)教訓(xùn)?有什么是你們錯(cuò)過(guò)或?qū)W到的?
Michael:一開(kāi)始,我們?cè)谡衅笗r(shí)過(guò)于偏向?qū)ふ摇懊.厴I(yè)、非常年輕、在名校環(huán)境中做過(guò)高認(rèn)可項(xiàng)目”的典型人選。實(shí)際上,我們運(yùn)氣很好,在早期找到了愿意和我們一起做這件事的非常出色的人,他們已經(jīng)有了一定的職業(yè)經(jīng)驗(yàn)。我們花了很多時(shí)間尋找那些可能不完全符合我們需求的候選人,部分原因是資歷問(wèn)題,另一部分則是興趣和經(jīng)驗(yàn)問(wèn)題。
另外,我們的面試流程逐步演化,現(xiàn)在我們有一套自定義的面試問(wèn)題,核心環(huán)節(jié)是讓候選人到現(xiàn)場(chǎng)待兩天,和我們一起做工作測(cè)試項(xiàng)目。這種方法非常有效,我們也越來(lái)越傾向于這種方式。此外,我們?cè)诹私夂蜻x人真正興趣方面也做得越來(lái)越好,我們學(xué)會(huì)了如何展示機(jī)會(huì)并展開(kāi)對(duì)話。
Lenny:你有沒(méi)有一個(gè)最喜歡的面試問(wèn)題?
Michael:我們最初認(rèn)為這兩天的工作測(cè)試無(wú)法擴(kuò)展到更多人參與,但它卻出乎意料地有效。它讓候選人完成從頭到尾的真實(shí)項(xiàng)目工作,而不是使用現(xiàn)成的項(xiàng)目清單。這種方式也不需要占用其他團(tuán)隊(duì)太多時(shí)間,你可以將原本需要半天或一天的面試安排,分散到兩天內(nèi),給候選人足夠的時(shí)間展示工作成果,幫助面試流程擴(kuò)展。
這個(gè)測(cè)試還幫助驗(yàn)證你是否愿意和這個(gè)人一起工作,因?yàn)槟銈儗⒐餐冗^(guò)兩天,甚至共享幾頓飯。我們?cè)緵](méi)想到這會(huì)持續(xù)下去,但它在我們的價(jià)值觀和流程中變得非常重要,尤其是在公司早期階段。當(dāng)時(shí),產(chǎn)品還不成熟,用戶也不多,唯一能吸引人的就是團(tuán)隊(duì)成員。通過(guò)這兩天的相處,我們給候選人機(jī)會(huì)了解我們。這個(gè)做法出乎意料,更像是一次前置面試,而不是傳統(tǒng)的面試問(wèn)題。
Lenny:你給候選人安排一個(gè)任務(wù),比如“在我們的實(shí)際代碼庫(kù)中構(gòu)建這個(gè)功能,并和團(tuán)隊(duì)一起編碼、發(fā)布”?
Michael:對(duì)的,在我們的代碼庫(kù)中,我們會(huì)給候選人安排一個(gè)真實(shí)的小型兩天項(xiàng)目。基本上,候選人會(huì)被單獨(dú)安排,當(dāng)然也有協(xié)作的部分。而且,我們公司是一個(gè)相對(duì)封閉的公司,幾乎所有的情況都是候選人實(shí)際坐在辦公室里和我們一起工作。
Lenny:你們現(xiàn)在有多少人?
Michael:我們現(xiàn)在大約有 60 人。
Lenny:對(duì)于如今的規(guī)模和影響力來(lái)說(shuō),60 人還是很少的。我猜工程師占了最大比例吧?
Michael:是的。未來(lái)我們的一大任務(wù)是組建一個(gè)更大、更出色的團(tuán)隊(duì),繼續(xù)改進(jìn)產(chǎn)品和提升我們提供給客戶的服務(wù)。但這個(gè)數(shù)字目前較小的部分原因是,我們公司內(nèi)工程、研究和設(shè)計(jì)的比例非常高。許多軟件公司,如果有大約 40 名工程師,通常員工總數(shù)會(huì)超過(guò) 100 人,因?yàn)橛泻芏噙\(yùn)營(yíng)工作,且通常從一開(kāi)始就非常依賴銷售。而我們從產(chǎn)品驅(qū)動(dòng)、非常精簡(jiǎn)的起點(diǎn)出發(fā),現(xiàn)如今已經(jīng)服務(wù)了大量的市場(chǎng)客戶,并且在不斷擴(kuò)大團(tuán)隊(duì)。
Lenny:AI 領(lǐng)域每天都有新的東西發(fā)布,作為一家位于風(fēng)暴中心的公司,如何幫助你的團(tuán)隊(duì)保持專注,低頭做事,而不被這些閃亮的新事物分心?
Michael:如果你能招到心態(tài)正確的人,許多問(wèn)題都能迎刃而解。我們?cè)谶@方面做得不錯(cuò)。我們注重招聘那些專注于高質(zhì)量工作、保持冷靜的人,他們情緒波動(dòng)小,有助于保持專注。此外,更多討論這個(gè)話題,并通過(guò)以身作則非常重要。我們見(jiàn)證著 AI 領(lǐng)域技術(shù)的興起與消逝,形成了免疫機(jī)制,知道哪些事件會(huì)真正影響我們。
Lenny:你認(rèn)為人們?cè)诶斫?AI 的發(fā)展方向時(shí),最常誤解或沒(méi)有完全掌握的是什么?尤其是在構(gòu)建和改變世界的過(guò)程中
Michael:我認(rèn)為人們對(duì)技術(shù)變革的看法有些偏激,要么覺(jué)得一切會(huì)發(fā)生得非???,要么覺(jué)得這只是炒作。我認(rèn)為我們正處于一個(gè)深遠(yuǎn)的技術(shù)變革中,這場(chǎng)變革將比互聯(lián)網(wǎng)和任何自計(jì)算機(jī)出現(xiàn)以來(lái)的技術(shù)變革都要重要。這是一個(gè)跨越幾十年的過(guò)程,許多不同群體將推動(dòng)這一進(jìn)程。
為了實(shí)現(xiàn)計(jì)算機(jī)能做更多事情的目標(biāo),仍有許多問(wèn)題需要解決,其中一些與科學(xué)相關(guān),如如何讓模型理解不同類型的數(shù)據(jù),使其更快、更便宜、更智能,能在現(xiàn)實(shí)中行動(dòng)。另一些則與人與計(jì)算機(jī)的交互、如何控制技術(shù)有關(guān)。
我相信,這將是幾十年的長(zhǎng)期過(guò)程。特別重要的是,那些致力于自動(dòng)化和增強(qiáng)特定知識(shí)領(lǐng)域的公司,它們不僅要為該領(lǐng)域構(gòu)建底層技術(shù),還要整合各方最佳技術(shù),并創(chuàng)造相應(yīng)的產(chǎn)品體驗(yàn)。這些公司,特別是在軟件領(lǐng)域,將變得極為重要。它們不僅能為用戶提供價(jià)值,還將推動(dòng)技術(shù)進(jìn)步,創(chuàng)造龐大的企業(yè)。
Lenny:我知道你們現(xiàn)在在招聘。你們目前在尋找哪些職位?有沒(méi)有特別急需填補(bǔ)的職位?如果有人感興趣,他們應(yīng)該了解什么?
Michael:我們團(tuán)隊(duì)還沒(méi)有完全準(zhǔn)備好做所有事情。首先,如果你覺(jué)得某個(gè)職位沒(méi)有開(kāi)設(shè),可能應(yīng)該主動(dòng)聯(lián)系我們,實(shí)際上我們可能還沒(méi)有意識(shí)到需要這個(gè)職位。
總的來(lái)說(shuō),今年我們最重要的目標(biāo)是:擁有行業(yè)最好的產(chǎn)品,并將其發(fā)展壯大。我們現(xiàn)在處于“領(lǐng)土爭(zhēng)奪”階段,全球許多人還沒(méi)有使用像我們這樣的工具,或者正在使用發(fā)展較慢的工具。所以,擴(kuò)展 Cursor 是一個(gè)重要目標(biāo)。我們尤其需要優(yōu)秀的工程師、設(shè)計(jì)師和研究員,同時(shí)也需要各個(gè)業(yè)務(wù)領(lǐng)域的人才。
Lenny:“AI 會(huì)寫(xiě)我們的所有代碼”,但是大家還是在瘋狂招聘工程師。你認(rèn)為工程師職位會(huì)在某個(gè)臨界點(diǎn)上開(kāi)始放緩嗎?工程師的需求會(huì)越來(lái)越大,還是最終會(huì)有很多像 Cursor 這樣的 Agent 為我們構(gòu)建代碼?
Michael:這個(gè)過(guò)程是漫長(zhǎng)而復(fù)雜的,不會(huì)立刻跳躍到把所有工作交給工程團(tuán)隊(duì)完成。我們希望編程方式逐步演變,人類始終主導(dǎo),即使在最終階段,專業(yè)人士仍需控制軟件的方向。我曾為生物技術(shù)公司構(gòu)建內(nèi)部工具,現(xiàn)有工具無(wú)法滿足需求,遠(yuǎn)超我能完成的工作。盡管計(jì)算機(jī)性能強(qiáng)大,但當(dāng)前仍有許多摩擦。我認(rèn)為對(duì)軟件的需求超出現(xiàn)有技術(shù),未來(lái)工程師的需求將更大。
代碼之后是什么
Lenny:你提到過(guò)一個(gè)非常有趣的概念——“代碼之后(what comes after code)”,你對(duì)從代碼到其他東西的轉(zhuǎn)變有什么愿景?
Michael:當(dāng)前社會(huì)中存在幾種不同的愿景。一些人認(rèn)為未來(lái)的軟件構(gòu)建將與現(xiàn)在類似,依然是文本編輯和正式的編程語(yǔ)言,如 TypeScript、Go、C 和 Rust。另一種觀點(diǎn)認(rèn)為,未來(lái)的軟件構(gòu)建將是與聊天機(jī)器人進(jìn)行對(duì)話式編程,你可以讓它幫你構(gòu)建一些東西,之后再要求它修改你正在構(gòu)建的內(nèi)容。
我們認(rèn)為這兩種愿景都有一定問(wèn)題。我們想象的“代碼之后”的世界,是一個(gè)能夠以更接近自然語(yǔ)言的方式來(lái)表示軟件邏輯的世界,寫(xiě)下的軟件邏輯可以以類似偽代碼的形式展示,也可以在高層次上進(jìn)行編輯和指引。那時(shí),軟件不再是幾百萬(wàn)行難以理解的代碼,而是更加簡(jiǎn)潔、易于理解的內(nèi)容。我們正在朝著這個(gè)目標(biāo)努力,使得那些復(fù)雜且難以理解的符號(hào)逐漸發(fā)展成更具可讀性和可編輯性的形式,讓軟件構(gòu)建過(guò)程變得更加人性化。
Lenny:也就是說(shuō),你所設(shè)想的是人們將擺脫直接用代碼編程,取而代之的是一種抽象的形式——本質(zhì)上是偽代碼,用英語(yǔ)句子描述代碼執(zhí)行的功能。
Michael:我們認(rèn)為最終會(huì)發(fā)展成這樣,而且我們堅(jiān)信這個(gè)過(guò)程肯定是以人為主導(dǎo),人在整個(gè)軟件構(gòu)建中依然擁有極大的控制權(quán)。同時(shí),人類也將具備快速做出改變的能力,能夠在短時(shí)間內(nèi)進(jìn)行調(diào)整,而不是依賴后臺(tái)運(yùn)行的緩慢系統(tǒng),花費(fèi)數(shù)周時(shí)間才完成工作。
Lenny:對(duì)于那些目前是工程師、考慮成為工程師、設(shè)計(jì)師或產(chǎn)品經(jīng)理的人來(lái)說(shuō),在“代碼之后”的世界里,哪些技能將變得越來(lái)越有價(jià)值?
Michael:我認(rèn)為“taste(品味)”將變得越來(lái)越有價(jià)值。當(dāng)人們談到軟件領(lǐng)域的“taste”時(shí),往往會(huì)想到視覺(jué)效果,諸如流暢的動(dòng)畫(huà)、色彩搭配、UI、UX 等設(shè)計(jì)方面,但定義軟件的另一半是它的邏輯和功能。我們目前擁有出色的工具來(lái)定義軟件的視覺(jué)效果,但一旦涉及到軟件如何運(yùn)作的邏輯,實(shí)際上,代碼是目前最好的表現(xiàn)方式。
因此,我認(rèn)為未來(lái)工程師將更多地會(huì)像邏輯設(shè)計(jì)師,真正的工作將是明確表達(dá)你對(duì)軟件如何運(yùn)作的意圖。這將更多是關(guān)于“做什么”,而不那么關(guān)心“如何實(shí)現(xiàn)”。
Lenny:這讓我想到了“vibe coding(氛圍編碼)”,你是指不必過(guò)多關(guān)注細(xì)節(jié),而是更傾向于順其自然,跟著感覺(jué)走的那種方式嗎?
Michael:我覺(jué)得“vibe coding”正好描述了這種創(chuàng)造狀態(tài)。這種狀態(tài)比較有爭(zhēng)議,雖然你在生成大量代碼,但并沒(méi)有真正理解細(xì)節(jié)。這種創(chuàng)造狀態(tài)會(huì)帶來(lái)很多問(wèn)題,因?yàn)槿绻悴涣私獯a背后的細(xì)節(jié),你很快就會(huì)遇到限制,創(chuàng)造出一些大到無(wú)法修改的東西。
因此,我們正在探索的一個(gè)問(wèn)題是:人們?nèi)绾卧诓焕斫獯a的情況下,依然能夠持續(xù)控制所有細(xì)節(jié)。這對(duì)于現(xiàn)在從事 vibe coding 的人來(lái)說(shuō)是非常關(guān)鍵的。
Lenny:你說(shuō)的“taste”具體指什么?
Michael:我指的是擁有正確的構(gòu)建理念。未來(lái),用戶將會(huì)更容易地把“想要構(gòu)建的內(nèi)容、希望一切如何運(yùn)作、希望它看起來(lái)如何”這些想法無(wú)縫轉(zhuǎn)化為現(xiàn)實(shí)。有了構(gòu)建的藍(lán)圖后,用戶能夠在計(jì)算機(jī)上輕松實(shí)現(xiàn)這一點(diǎn),不再需要艱苦地將其轉(zhuǎn)化為計(jì)算機(jī)可以理解和執(zhí)行的格式。
https://www.youtube.com/watch?v=En5cSXgGvZM
聲明:本文為 InfoQ 整理,不代表平臺(tái)觀點(diǎn),未經(jīng)許可禁止對(duì)全文或部分內(nèi)容進(jìn)行轉(zhuǎn)載。
AICon 2025 強(qiáng)勢(shì)來(lái)襲,5 月上海站、6 月北京站,雙城聯(lián)動(dòng),全覽 AI 技術(shù)前沿和行業(yè)落地。大會(huì)聚焦技術(shù)與應(yīng)用深度融合,匯聚 AI Agent、多模態(tài)、場(chǎng)景應(yīng)用、大模型架構(gòu)創(chuàng)新、智能數(shù)據(jù)基建、AI 產(chǎn)品設(shè)計(jì)和出海策略等話題。即刻掃碼購(gòu)票,一同探索 AI 應(yīng)用邊界!
熱門跟貼