第一個(gè) AI 程序員 Devin 的公司,已經(jīng)開始用 Devin 來構(gòu)建「Devin」了。
去年 12 月,Cognition 推出了全球首個(gè) AI 編碼程序員「Devin」,定位是一名無需人類干預(yù)、能獨(dú)立寫代碼并獨(dú)立完成整個(gè)項(xiàng)目的虛擬工程師,訂閱價(jià)格為 500 美元/月。
產(chǎn)品上線后的 6 個(gè)月內(nèi),Cognition 完成了數(shù)億美元的 A 輪融資,估值翻了一番,達(dá)到近 40 億美元,成為 AI 編程賽道的絕對(duì)明星公司。
目前 Cognition 的工程團(tuán)隊(duì)只有 15 人,但每位工程師都配備了一個(gè)由 5 個(gè) Devin 智能體組成的「虛擬團(tuán)隊(duì)」?,F(xiàn)在,Cognition 內(nèi)部約有四分之一的 Github Pull Request 由 Devin 完成。創(chuàng)始人 Scott Wu 預(yù)計(jì),一年后這一比例將提升至 50%。
在近期做客 Lenny’s Podcast 時(shí),Scott Wu 也更詳細(xì)地講述了 Devin 從一個(gè)概念走到能端到端執(zhí)行任務(wù)的「初級(jí)工程師伙伴」的過程,它如何融入現(xiàn)有的軟件開發(fā)流程,以及他如何思考 AI 浪潮下工程師的角色變化。
以下是全文:
核心內(nèi)容:
- 用 Devin 構(gòu)建 Devin:把 Devin 看作一個(gè)并肩作戰(zhàn)的初級(jí)搭檔。每位工程師在構(gòu)建 Devin 的過程中,都會(huì)大量用到 Devin 本身。
- Deivn 讓工程師從「砌磚工」變成「建筑師」:你可以給出高層級(jí)的指令,指定你想要的實(shí)現(xiàn)方式。這仍然需要你來掌控方向、定義規(guī)范,但你一天能完成的事情、能構(gòu)建的系統(tǒng),已經(jīng)完全不在一個(gè)量級(jí)了。
- 開發(fā)會(huì)越來越像異步寫協(xié)作:關(guān)鍵在于,明確你要解決的問題,定義你要構(gòu)建的系統(tǒng),其余的交給 Devin 異步處理。你只在需要專業(yè)判斷的節(jié)點(diǎn)介入。
- Devin 擅長處理清晰、具體的任務(wù):你應(yīng)該給 Devin 任務(wù),而不是問題。必要時(shí)多加引導(dǎo),確保它沿著對(duì)的方向走下去。
Devin 讓工程師的能力成倍增加
Lenny:讓我們先談?wù)?Devin,讓大家了解一下 Devin 到底是什么,這是你們公司的主要產(chǎn)品。理解 Devin 最簡單的方式是什么?
Scott Wu:Devin 是一個(gè)完全自主的軟件工程師,它能夠端到端地完成任務(wù)?,F(xiàn)在市面上有很多很棒的工具,覆蓋了 AI 編碼工作流的各個(gè)環(huán)節(jié)。Devin 的特別之處在于它是一個(gè)完整的異步工作流(Asynchronous workflow)。你可以在 Slack 的某個(gè)問題討論中 @Devin,或者在 Linear 里標(biāo)記 Devin,然后 Devin 就會(huì)在你的 GitHub 中創(chuàng)建 Pull Request。所以,它完全是為了與工程團(tuán)隊(duì)協(xié)作而設(shè)計(jì)的,就像你的初級(jí)工程師一樣。
Lenny:我記得你們剛推出這個(gè)產(chǎn)品的時(shí)候,宣傳語大概是「你的新 AI 工程師」。它在很多方面表現(xiàn)出色,但在其他方面還有待提高。從你們推出到現(xiàn)在大概一年了吧?
Scott Wu:是的。
Lenny:如果用工程師的資歷水平來衡量 Devin,你覺得剛推出時(shí)的 Devin 和現(xiàn)在的 Devin 大概處于什么級(jí)別?這是否是衡量 Devin 能力的一個(gè)好方法?
Scott Wu:一年前我們首次發(fā)布 Devin 時(shí),大家甚至覺得智能體很難實(shí)現(xiàn)。那是一個(gè)非常不同的時(shí)代。2024 年初,AI 模型的推理能力還處于相當(dāng)早期的階段。
從那時(shí)起,它有了顯著的發(fā)展。從實(shí)用技能方面來講,我們偶爾會(huì)做些比較,最開始的時(shí)候,它就像一個(gè)高中學(xué)計(jì)算機(jī)的學(xué)生,后來逐漸成長得更像一名大學(xué)實(shí)習(xí)生,而現(xiàn)在則相當(dāng)于一位初級(jí)工程師。
不過這些判斷標(biāo)準(zhǔn)比較粗略,因?yàn)槲液苜澩?「參差不齊的智能」 這個(gè)說法,它在某些領(lǐng)域比人類強(qiáng)出不少,可在另一些方面又不如人類。
在過去一年里,我們收獲了許多經(jīng)驗(yàn),不只是關(guān)于編碼智能體,更是關(guān)于智能體本身 —— 包括怎樣構(gòu)建智能體,以及如何將其融入工作流程,使之與人協(xié)同工作。
當(dāng)時(shí),Devin 還沒有 Slack、GitHub、Linear 集成,也沒有交互式的規(guī)劃階段,更沒辦法修改它生成的代碼。所以,從那時(shí)起我們開發(fā)的諸多產(chǎn)品功能,基本都是為了找到最佳方式,讓與 Devin 協(xié)作以及向 Devin 分派任務(wù)的體驗(yàn)盡可能順暢。
Lenny:所以很多工作不只是單純地提升 Devin 成為最優(yōu)秀的工程師,而是讓其更好地適應(yīng)與人的協(xié)同合作。
Scott Wu:我覺得這兩方面是各占一半的。一方面是 Devin 的能力有了顯著且可衡量的提升。另一方面是產(chǎn)品界面、工具等的優(yōu)化?,F(xiàn)在大家普遍知道如何使用聊天機(jī)器人并與其協(xié)作,但對(duì)于智能體,我認(rèn)為用戶仍需花費(fèi)一些時(shí)間和精力去學(xué)習(xí)如何使用它們并最大化地發(fā)揮其價(jià)值。所以,看到許多其他公司如今也紛紛在智能體領(lǐng)域投入精力,真的讓人感到很興奮,這是我們所有人在共同探索的方向。
Lenny:關(guān)于 Devin 目前的規(guī)模,你能分享一些信息嗎?任何你方便透露的都行。然后,你認(rèn)為一年后 Devin 的編碼能力會(huì)達(dá)到什么水平?
Scott Wu:我們與各種階段和規(guī)模的公司合作。最小的,有只有一兩個(gè)人的初創(chuàng)公司,他們使用 Devin 來構(gòu)建他們最初的原型或產(chǎn)品;大的有大型上市公司、財(cái)富 100 強(qiáng)公司或上市銀行等,他們?cè)谡麄€(gè)工程團(tuán)隊(duì)中使用 Devin。
總的來說,我們看到了非常廣泛的應(yīng)用場(chǎng)景。顯然,在一兩個(gè)人的初創(chuàng)公司所做的工程工作與在一家上市銀行所做的工作是非常不同的。
但貫穿始終的是,Devin 都是你那個(gè)能讓你更快行動(dòng)、真正放大你能力的初級(jí)伙伴。它可以通過讓你與自己的 Devin 團(tuán)隊(duì)協(xié)作,而不是必須完全同步地處理單個(gè)任務(wù),來放大你作為工程師的能力。
然后,它也像是在放大你的團(tuán)隊(duì)和團(tuán)隊(duì)的知識(shí)庫,因?yàn)?Devin 在與你團(tuán)隊(duì)的每個(gè)成員合作的過程中,確實(shí)積累了大量的知識(shí),并能將這些知識(shí)帶入每個(gè)新的會(huì)話中。
產(chǎn)品體驗(yàn)將從「文本補(bǔ)全」模式轉(zhuǎn)向「智能體」模式
Lenny:讓我們先回到旅程的起點(diǎn)。Devin 的起源故事是怎樣的?這一切是如何開始的?
Scott Wu:創(chuàng)始團(tuán)隊(duì)的大多數(shù)人認(rèn)識(shí)很多很多年了。對(duì)幾乎所有人來說,這是我們第一次一起工作,但我們認(rèn)識(shí)很久了。在過去十年左右的時(shí)間里,我們都在 AI 領(lǐng)域有著各自的探索。就我而言,在此之前我在做一家名為 Lunchclub 的公司,這是一個(gè)用于職業(yè)社交的 AI 產(chǎn)品,我做了大約五年。
我的聯(lián)合創(chuàng)始人之一 Steven,是 Scale AI 公司的首批工程師之一,這家公司顯然成長了很多,做得非常出色。
我的另一位聯(lián)合創(chuàng)始人 Walden,是 Cursor 的早期工程師,這家公司顯然也成長了很多,做得非常好。
我們整個(gè)團(tuán)隊(duì)差不多都是這樣,我們很多人是通過編程競(jìng)賽和數(shù)學(xué)競(jìng)賽認(rèn)識(shí)的,但在那之后的幾十年里,我們一直保持著非常密切的聯(lián)系,并且都有各自的發(fā)展。
我們有一個(gè)曾在 Nuro 負(fù)責(zé)團(tuán)隊(duì)的人,一個(gè)曾在 Waymo 工作的人,還有一個(gè)自己創(chuàng)辦了 YC 孵化的機(jī)器學(xué)習(xí)工具初創(chuàng)公司的人。
我們非常興奮能一起做點(diǎn)什么。這大約是在 2023 年底,也就是一年半前。剛開始時(shí),有幾件事我們堅(jiān)信不疑。其中之一是強(qiáng)化學(xué)習(xí)確實(shí)有效,并將成為能力上的下一個(gè)重大范式轉(zhuǎn)變。
當(dāng)時(shí) ChatGPT 于 2022 年首次推出,那些模型在 AI 領(lǐng)域,我們稱之為模仿學(xué)習(xí)(imitation learning)?;旧暇褪亲屇P烷喿x互聯(lián)網(wǎng)上所有能找到的文本,然后訓(xùn)練它像互聯(lián)網(wǎng)上的某個(gè)人那樣說話,這是最初做法的核心。它非常了不起,通過了圖靈測(cè)試,并且對(duì)很多事物擁有百科全書般的知識(shí)。
我們過去一年進(jìn)入的這個(gè)新范式,是真正高算力的強(qiáng)化學(xué)習(xí)。這是一個(gè)截然不同的范式:它能夠去執(zhí)行任務(wù)、整合事物,然后根據(jù)結(jié)果的正確與否進(jìn)行評(píng)估,并利用這些知識(shí)來決定下一步行動(dòng)并從中學(xué)習(xí)。我們堅(jiān)信這一定會(huì)發(fā)生。
對(duì)我們來說,代碼是很自然的選擇,有幾個(gè)原因。一是因?yàn)槲覀冏约憾际蔷幊虗酆谜?,所以代碼對(duì)我們來說再熟悉不過。另外,代碼本身就有一個(gè)完整的自動(dòng)化反饋循環(huán),你可以運(yùn)行代碼,這種自動(dòng)化反饋正是強(qiáng)化學(xué)習(xí)所需要的,也使得這些模型在編碼方面表現(xiàn)出色。
另一件我們堅(jiān)信不疑的事情是,產(chǎn)品體驗(yàn)將從「文本補(bǔ)全」模式轉(zhuǎn)向「智能體」模式。從根本上說,文本補(bǔ)全領(lǐng)域已經(jīng)有很多很棒的體驗(yàn)。它被用于市場(chǎng)營銷、客戶支持、教育和編碼,例如 GitHub Copilot 是那一波浪潮中真正的主導(dǎo)產(chǎn)品。
但我們真正預(yù)感到的重大轉(zhuǎn)變,是從這種文本到文本的模型,轉(zhuǎn)向一個(gè)能夠做決策、與現(xiàn)實(shí)世界互動(dòng)、接收反饋、迭代并采取多個(gè)步驟解決問題的真正自主系統(tǒng)。我們稱之為智能體,這正是我們當(dāng)時(shí)真正興奮的事情。所以,方向一直是編碼,一直是智能體。這看起來像是一開始就應(yīng)該很明確的,但即便如此,在過去一年半的時(shí)間里,在編碼智能體這個(gè)大方向內(nèi),我們感覺自己好像已經(jīng)調(diào)整了八次方向左右。
Lenny:我最近注意到,所有頂級(jí)的 AI 公司,不是所有,但很多公司的成功產(chǎn)品,其名稱都與公司名稱不同,這很不尋常。比如 Cursor 和 Anysphere,Bolt (bolt.new) 的 StackBlitz,你們是 Cognition AI,Vercel 的 v0。這告訴我,這些產(chǎn)品都是在公司發(fā)展后期出現(xiàn)的,他們嘗試了很多東西,然后發(fā)現(xiàn)「哦,這個(gè)東西成功了」。在這些頂級(jí)公司中,這種情況如此普遍,真的很有趣。
Scott Wu:是的,甚至還有 OpenAI 的 ChatGPT,Anthropic 的 Claude,Google 的 Gemini。這很有趣,是的,我同意。
所以,當(dāng)我們剛開始時(shí),它甚至算不上一個(gè)公司,更像是一個(gè)項(xiàng)目,或者說幾乎是一個(gè)黑客松。我們基本上在感恩節(jié)前后租了幾周 Airbnb,聚集了一群人,興奮地想做些項(xiàng)目,構(gòu)建一些酷的東西。
有趣的是,我們最初構(gòu)建的東西實(shí)際上更像是解決那些類似編程競(jìng)賽的問題,并使用一種智能體循環(huán)來在這些問題上做得更好。顯然,如果你在測(cè)試用例上運(yùn)行代碼,你可以進(jìn)行評(píng)估,這里面有很多智能體可以做的工作來嘗試做得更好。我們最初花了一些時(shí)間在這上面。
然后,我們公司整個(gè)的故事在某種意義上就是從一個(gè)黑客松到另一個(gè)黑客松。在那之后,我們又搞了一個(gè)黑客松,Devin 最初的一些想法就是在那時(shí)產(chǎn)生的,真正構(gòu)建一個(gè)軟件工程智能體,而不僅僅是一個(gè)編碼智能體,并讓它與許多這些工具互動(dòng)。但即便如此,還是有很多迭代。甚至,與 Devin 對(duì)話的想法,也是我們必須想出來的。
最初,它只是你交給他一個(gè)任務(wù),然后它工作,最后給你展示整個(gè)完成的代碼。而現(xiàn)在顯然是,你可以隨時(shí)介入,可以就計(jì)劃獲得反饋,你們可以一起確定任務(wù)范圍。當(dāng)你與 Devin 一起工作時(shí),很多這些東西我們都必須逐步開發(fā)出來。當(dāng)然,我們對(duì)使用場(chǎng)景、產(chǎn)品形態(tài)學(xué)到了很多,我們?cè)谀芰ι先〉昧撕芏嘀卮蟾倪M(jìn)和階躍式提升,Devin 使用工具、調(diào)試和做決策的能力都得到了提升。所以,這是一段有趣的旅程。
對(duì)我們來說,根本性的問題,也是我們一直在思考的問題,就是軟件工程的未來是什么樣的?我們應(yīng)該如何與 AI 合作來編寫代碼?因?yàn)闅w根結(jié)底,這才是我們所有產(chǎn)品決策的基礎(chǔ)。
Lenny:你們是什么時(shí)候開始嘗試著搗鼓開發(fā)的?Devin 是什么時(shí)候推出的?這期間有多長時(shí)間?
Scott Wu:我們是從 2023 年 11 月開始的,當(dāng)時(shí)還只是黑客松模式。我們?cè)?2024 年初正式成立了公司。然后我們的首次發(fā)布是在 3 月份。所以,那段時(shí)間簡直是馬不停蹄。實(shí)際上,在過去的 17 個(gè)月里一直都是這樣。從發(fā)布到與企業(yè)合作,再到大量開發(fā)產(chǎn)品,構(gòu)建它并使其適用于許多實(shí)際用例,然后在去年 12 月實(shí)現(xiàn)完全自助服務(wù),以及幾周前剛剛推出的 2.0 版本。對(duì)我們來說,這是一段非常忙碌的時(shí)期。
Lenny:簡直是世紀(jì)性的輕描淡寫。
用 Devin 來構(gòu)建 Devin
Lenny:將 Devin 視為一個(gè)「人」,為 Devin 創(chuàng)造個(gè)性的這個(gè)想法,這與其他任何 AI 應(yīng)用都不同。我覺得市面上沒有其他 AI 應(yīng)用會(huì)擁有名字,讓你把它當(dāng)作一個(gè)人來看待。你們當(dāng)初為何決定采用這種設(shè)計(jì)思路?又是如何設(shè)計(jì)它使其運(yùn)作良好的?
Scott Wu:這是我們相當(dāng)自豪的一個(gè)決定。市面上有很多不同的產(chǎn)品體驗(yàn)。而真正讓 Devin 在其所做的事情中獨(dú)一無二的是,你可以真正地把任務(wù)交給它。
我們?cè)絹碓蕉嗟乜吹?,向人們解?Devin 的體驗(yàn)的最好方式就是解釋說:「是的,這是你的初級(jí)伙伴?!惯@一點(diǎn)適用于流程的很多部分。
比如在 onboarding 階段,最初我們確實(shí)有很多用戶進(jìn)入界面后只看到空白屏幕,完全不知所措,或者他們會(huì)問「我打算對(duì)整個(gè)代碼庫進(jìn)行大規(guī)模重構(gòu)」。
而我們隨著時(shí)間推移學(xué)到的是,要引導(dǎo)用戶轉(zhuǎn)變思路,比如「等等,讓我們先搞定代碼庫的設(shè)置」。讓我們先給 Devin 分配幾個(gè)簡單的小任務(wù),讓它熟悉一下代碼庫。讓我們確保如果 Devin 需要能夠測(cè)試代碼、運(yùn)行 linter 或 CI 之類的東西,我們得確保 Devin 有自己的虛擬機(jī)設(shè)置好來做這些。
同樣地,用戶的使用模式起初也不清晰。顯然,你可以坐著看 Devin 一步步地執(zhí)行操作。但我們發(fā)現(xiàn),作為一個(gè)需要構(gòu)建大量東西的團(tuán)隊(duì),最佳的工作流是與多個(gè) Devin 協(xié)作,讓它們異步執(zhí)行任務(wù),啟動(dòng)它們,然后僅在你需要提供反饋或引導(dǎo)計(jì)劃時(shí)才介入。
從很多方面來看,Devin 這個(gè)名字,正是我們?cè)噲D捕捉產(chǎn)品靈魂的一種嘗試。它確實(shí)是被視作一個(gè)自主實(shí)體來對(duì)待,你可以把任務(wù)交給它,與它協(xié)作,并且在長期使用中教導(dǎo)它并與它一起學(xué)習(xí)。
Lenny:我想聊聊 Devin 對(duì)軟件工程的影響,以及軟件工程將如何改變。這個(gè)話題可以拆分為兩部分:以今年使用 Devin 的情況為例,對(duì)于那些企業(yè)而言,作為一名工程師,其從工作方式和構(gòu)建方式正在發(fā)生怎樣的變化?
Scott Wu:我們都是軟件工程師,我骨子里依然是個(gè)程序員。
從宏觀層面來看:計(jì)算機(jī)正變得越來越智能,能夠做的事情也越來越多。也許有一天,計(jì)算機(jī)真的能完成我們所做的一切,人類不再需要負(fù)責(zé)任何事情。
我不認(rèn)為這會(huì)很快到來。但在此之前,只要我們?nèi)祟愡€需要編程,最重要的任務(wù)之一,就是指導(dǎo)計(jì)算機(jī)我們想要什么、想構(gòu)建什么、想做什么。
所以從這個(gè)角度來看,我認(rèn)為隨著 AI 變得越來越強(qiáng)大,編程只會(huì)變得越來越重要。對(duì)我們來說真正令人興奮的是,看到這種迭代式的轉(zhuǎn)變。
目前的情況是,我們可以把 Devin 看作一個(gè)初級(jí)伙伴,或者一個(gè)由初級(jí)伙伴組成的團(tuán)隊(duì),你可以和他們一起工作。
我們團(tuán)隊(duì)里的每一位工程師,在構(gòu)建 Devin 的時(shí)候都會(huì)大量使用 Devin。因此,Devin 每個(gè)月會(huì)將數(shù)百個(gè) Pull Request 合并到 Devin 代碼庫的生產(chǎn)環(huán)境中。
我們整個(gè)團(tuán)隊(duì)只有大約 15 名工程師,所以 AI 輔助編碼在我們編寫的所有代碼中占了相當(dāng)大的比例。我們每個(gè)人都擁有自己的 Devin 團(tuán)隊(duì)。
如果你要處理各種問題、功能請(qǐng)求、bug,或者研究你想構(gòu)建的新范式,很自然地,會(huì)有很多交接點(diǎn)。在這些交界點(diǎn),你就可以 @Devin,然后告訴它:「現(xiàn)在情況是這樣的,你能幫忙處理一下嗎?」
有時(shí)候 Devin 能夠百分之百自主地完成任務(wù),直接創(chuàng)建 PR,然后你合并 PR;有時(shí)候,你可能需要自己介入,做 10% 或 20%的工作,也許在具體如何界定范圍或如何架構(gòu)這個(gè)功能方面有一些細(xì)節(jié)需要你處理,或者你可能想在最后自己去測(cè)試前端,確保它看起來完全符合你的要求,并在之后給出你的一兩句反饋。但在大多數(shù)時(shí)候,都是與 Devin 一起工作,讓它并行處理更多事情,構(gòu)建更多東西。
四分之一的 PR 由 Devin 完成
Lenny:目前你們的 PR 中,Devin 提交的和人類提交的比例分別是多少?
Scott Wu:我得查一下,但 Devin 大概占我們所有 PR 的四分之一左右。
Lenny:那六個(gè)月前是什么情況呢?
Scott Wu:相比六個(gè)月前,它在我們內(nèi)部呈指數(shù)級(jí)增長。Devin 的發(fā)展關(guān)乎兩個(gè)方面:能力和產(chǎn)品界面。
首先,它的智能水平提高了很多。
另一方面,我們也花了很多時(shí)間來研究如何構(gòu)建它的界面:在這個(gè)界面上,即使 Devin 只能完成 80% 或 90% 的任務(wù),你也能獲得 Devin 的價(jià)值。
Devin 顯然不是完美的,它會(huì)犯錯(cuò)。很多問題是,你最初如何與 Devin 一起初步確定任務(wù)范圍,然后讓 Devin 去做你想讓它做的事?你如何在最后階段介入審查并提供反饋?你如何確保 Devin 隨著時(shí)間的推移而學(xué)習(xí)?你如何能夠根據(jù)需要進(jìn)行檢查并在需要時(shí)糾正方向?
Lenny:今天你們大約四分之一的 PR 是由 Devin 提交的。你認(rèn)為到今年年底這個(gè)比例會(huì)達(dá)到多少?
Scott Wu:到今年年底,預(yù)計(jì)會(huì)超過一半。而且我們觀察到的一件事是,你能夠異步完成越來越多的工作,并且能夠交接越來越多的任務(wù)。
我認(rèn)為編程的靈魂、軟件工程的靈魂,無論是以前還是現(xiàn)在,無論你使用的是匯編語言、Pascal 語言,甚至在打孔卡時(shí)代,基本上就是定義你面臨的問題,并真正深入思考你想要的解決方案究竟是什么。思考架構(gòu),思考細(xì)節(jié),并在你的腦海中精確地規(guī)劃出你到底想構(gòu)建什么,以及你想讓你的計(jì)算機(jī)做什么。這是軟件工程的偉大之處,也是它最有趣的部分。
然而,這些工作可能只占普通軟件工程師大約 10% 的時(shí)間,其他 90% 的時(shí)間,你可能遇到了 Kubernetes 的錯(cuò)誤,你必須 debug,你必須找出問題所在,或者是系統(tǒng)崩潰了,或者你某個(gè)端口沒關(guān)導(dǎo)致了問題,又或者你需要遷移代碼,需要升級(jí)到新版本之類的,更多的是類似執(zhí)行層面的工作。
我們思考和構(gòu)建 Devin 的一種方式,就是真正讓工程師可以從「砌磚工」轉(zhuǎn)變?yōu)椤附ㄖ煛埂?/strong>很多時(shí)候,關(guān)鍵在于達(dá)到這樣一個(gè)程度:你可以進(jìn)行高層次的指導(dǎo),并且可以精確地指定你想要的方式。
我認(rèn)為這仍然非常需要由人來掌控,由人來進(jìn)行完整的規(guī)范定義,但同時(shí)極大地放大了你在一天、一小時(shí)或任何時(shí)長內(nèi)所能做的事情和所能構(gòu)建的東西的量級(jí)。
未來,軟件工程師仍需要學(xué)習(xí)寫代碼
Lenny:未來,假設(shè)有人想進(jìn)入軟件工程領(lǐng)域成為一名工程師。首先,你認(rèn)為人們是否還應(yīng)該學(xué)習(xí)編程?其次,對(duì)于今天的工程師來說,你認(rèn)為哪些技能會(huì)變得越來越重要,哪些會(huì)變得不那么重要?在我們討論從「砌磚工」到為「建筑師」的轉(zhuǎn)變時(shí)。
Scott Wu:我很喜歡這個(gè)問題。就「是否仍需學(xué)習(xí)編程」 這一問題而言,我的答案是絕對(duì)肯定的。
當(dāng)你上計(jì)算機(jī)科學(xué)課程,學(xué)習(xí)這些基礎(chǔ)知識(shí)時(shí),當(dāng)然你會(huì)學(xué)到一些關(guān)于特定語言如何工作的知識(shí)。但你學(xué)到的大部分內(nèi)容實(shí)際上是關(guān)于邏輯分解問題的能力;其次是對(duì)于計(jì)算機(jī)模型以及長期以來我們構(gòu)建的各種決策和抽象概念的理解,比如什么是數(shù)據(jù)庫?應(yīng)如何理解數(shù)據(jù)庫?什么是垃圾回收系統(tǒng),它們的運(yùn)作原理是什么?以及所有這些不同的組成部分。
我們?cè)诰幊填I(lǐng)域已經(jīng)經(jīng)歷過這些階段。未來的發(fā)展階段我覺得會(huì)更快、更大規(guī)模,但許多方面與當(dāng)下情況相似。比如,當(dāng)你現(xiàn)在使用 Python 時(shí),實(shí)際上已經(jīng)有很多內(nèi)容被抽象化了。50 年前的人可能已經(jīng)會(huì)說 Python 就是「你用英語解釋你想要什么,然后計(jì)算機(jī)就為你做了」。這非常強(qiáng)大,它打開了大門。我們現(xiàn)在的程序員數(shù)量顯然比以往任何時(shí)候都多,就是因?yàn)檫@個(gè)。
但當(dāng)你作為一名工程師培養(yǎng)技能時(shí),深入理解這些抽象概念并探究其底層原理非常有幫助。比如說,如果人們真的想對(duì)一段代碼進(jìn)行性能優(yōu)化,他們會(huì)使用匯編語言。為了構(gòu)建好的系統(tǒng)并理解這些東西,你肯定想要理解這些抽象概念,比如網(wǎng)絡(luò)是如何工作的?TCP/IP 到底是什么?或者這段 Python 代碼在被解釋時(shí)會(huì)發(fā)生什么?或者所有這些細(xì)節(jié)。
我們會(huì)達(dá)到一種狀態(tài),即使沒有任何經(jīng)驗(yàn)的人,也能夠憑借描述自己的需求來構(gòu)建一些很酷的產(chǎn)品,完成很了不起的工作。但同時(shí)我認(rèn)為,在相當(dāng)長的一段時(shí)間里,人們依然需要能夠精準(zhǔn)地思考細(xì)節(jié),揭開抽象的面紗,非常精確地定義想要構(gòu)建的東西以及構(gòu)建方式。
Lenny:你認(rèn)為對(duì)于工程師而言,哪些技能會(huì)變得愈發(fā)有價(jià)值,他們應(yīng)著重在哪些方面發(fā)力?
Scott Wu:我認(rèn)為是架構(gòu)方面的技能。工程領(lǐng)域已經(jīng)有「架構(gòu)師」這一術(shù)語,我覺得它在發(fā)展方向上是合理的。常規(guī)的實(shí)現(xiàn)、編寫樣板代碼等事情,AI 編程已經(jīng)讓我們?cè)谶@方面快了不少。
關(guān)鍵問題在于理解復(fù)雜的系統(tǒng),在整個(gè)公司的大背景下開展工作,思考正在構(gòu)建的產(chǎn)品或正在從事的工作,弄明白我們想要解決的問題是什么?應(yīng)如何解決這些問題?我們究竟想要構(gòu)建怎樣的解決方案?以及將要做出的關(guān)鍵決策和權(quán)衡是什么?
那些能夠出色完成這些工作的人,將會(huì)越來越多地發(fā)揮自己的影響力。所以,如果說有什么不同的話,我認(rèn)為幾年后,程序員和工程師的數(shù)量會(huì)比現(xiàn)在多很多。而且,成為程序員的具體形式顯然很快會(huì)發(fā)生改變。我們能構(gòu)建的東西將會(huì)多得多。
人們常常提及「杰文斯悖論」,軟件確實(shí)是杰文斯悖論的典型例證。我們?nèi)祟惿鐣?huì)總能找到越來越多的事物,為其構(gòu)建軟件、編寫更多代碼,真的還有很多事情可以去做。
Lenny:對(duì)于那些不知道杰文斯悖論的人,你能簡單解釋一下嗎?
Scott Wu:當(dāng)然可以。杰文斯悖論簡單來說就是,當(dāng)某樣?xùn)|西的價(jià)格下降時(shí),總支出反而可能上升。你可以用金錢、時(shí)間或資源來思考這個(gè)問題。但這里的直接版本是,隨著編程變得越來越容易,編程變得越來越有效,我們將擁有更多的程序員。
從一種零和博弈的角度來看,你可能會(huì)說,我們?cè)谲浖こ谭矫娴乃俣葘⑻岣?10 倍,這意味著我們需要的軟件工程師將減少 10 倍。但我認(rèn)為,實(shí)踐中真正會(huì)發(fā)生的是,我們實(shí)際上將構(gòu)建超過 10 倍的代碼量。因?yàn)槲覀兯龅乃泄ぷ黠@然都受限于我們實(shí)際構(gòu)建、執(zhí)行和迭代的能力,我們將會(huì)有如此多偉大的想法,如此多偉大的產(chǎn)品。人們將會(huì)構(gòu)建更多個(gè)性化的體驗(yàn),等等。將會(huì)有很多事情要做。
隨著技術(shù)能力不斷提升 ,開發(fā)工作會(huì)越來越向異步工作流轉(zhuǎn)變
Lenny:你說每位工程師都擁有一支 Devin「團(tuán)隊(duì)」。在你們公司,現(xiàn)在大多數(shù)工程師通常會(huì)同時(shí)與多少個(gè) Devin 一起工作?
Scott Wu:這個(gè)過程是異步的,你可以根據(jù)需要隨時(shí)啟動(dòng)和關(guān)閉 Devin。團(tuán)隊(duì)中的大多數(shù)人,通常會(huì)同時(shí)與多達(dá) 5 個(gè) Devin 一起工作。這是一種很好的工作流程,你有 5 件事要做,可以讓 Devin 1 號(hào)做第一件事,Devin 2 號(hào)做第二件事,以此類推。我們花了一些時(shí)間才真正適應(yīng)并達(dá)到這種狀態(tài),讓它對(duì)我們來說非常直觀。
這確實(shí)是一種不同的體驗(yàn),你可以將大部分事情異步地交接出去。你每個(gè)任務(wù)的目標(biāo)是在那些真正需要你專業(yè)知識(shí)的部分出現(xiàn),精確定義你正在解決的問題和你正在構(gòu)建的東西,或者在一些比較復(fù)雜的部分,你需要引導(dǎo) Devin 朝著你想要做的特定類型的更改方向發(fā)展。例如,我希望這個(gè)類別這樣設(shè)置,我們應(yīng)該去修改所有下游對(duì)這個(gè)的引用。但基本上是讓 Devin 異步地為你完成大部分工作。
Lenny:你們大概有多少工程師?
Scott Wu:我們現(xiàn)在的工程團(tuán)隊(duì)大約有 15 人。
Lenny:15 人?哇哦。每個(gè)人大約有五個(gè) Devin。所以 Devin 的數(shù)量是工程師的五倍。我喜歡這一點(diǎn)的原因是,這簡直就是向未來的一瞥。你們?cè)谑褂?AI 工程師方面遙遙領(lǐng)先于其他公司,所以觀察你們的運(yùn)作方式,基本上就能了解大多數(shù)公司最終將如何運(yùn)作。
Scott Wu:是的,而且我們自己已經(jīng)看到了這種轉(zhuǎn)變。在團(tuán)隊(duì)層面,大家不會(huì)花那么多時(shí)間僅僅編寫樣板代碼或者只是進(jìn)行純粹的功能實(shí)現(xiàn)。人們可以將更多的時(shí)間專注于思考真正核心問題,比如,我們?nèi)绾巫?Devin 變得更好?最合適的 Devin 交互界面是什么?什么樣的流程或功能組合才能真正讓 Devin 體驗(yàn)盡可能出色?這就是我們喜歡的方式。
Lenny:那么什么時(shí)候你們會(huì)達(dá)到這樣一個(gè)臨界點(diǎn),即 Devin 的發(fā)展速度遠(yuǎn)遠(yuǎn)超過其他所有人?比如,一旦你有足夠多的 Devin 在做所有這些事情,你就領(lǐng)先了 10 年、20 年、30 年、100 年。
Scott Wu:全球的工程師們,都將思考這個(gè)問題,圍繞這一方向開展開發(fā)工作,并逐步適應(yīng)這些新技術(shù)。隨著技術(shù)能力的不斷提升,即使在今天的穩(wěn)定狀態(tài)下,事情會(huì)越來越多地向這種異步流程轉(zhuǎn)變。
其中一個(gè)原因在于,你始終受到現(xiàn)實(shí)世界約束的限制??梢赃@樣理解(不過這些數(shù)字并非精確數(shù)據(jù)),最基本的邏輯是:能夠編寫文件、完成函數(shù)或某行代碼之類的任務(wù),已經(jīng)帶來了巨大幫助,使用體驗(yàn)也非常出色。但構(gòu)建軟件的很多部分幾乎完全不是這樣。
例如,當(dāng)你修復(fù)一個(gè) bug 時(shí),需要啟動(dòng)本地服務(wù)器,在前端點(diǎn)擊產(chǎn)品嘗試復(fù)現(xiàn)這個(gè) bug。一旦出現(xiàn)錯(cuò)誤,要去查看 Datadog 了解情況,并嘗試在日志中查找其他錯(cuò)誤。還要查看哪里出了問題,做一些修改,甚至重新運(yùn)行整個(gè)流程,以確保修改后的結(jié)果是正確的。這很大程度上就是作為一名軟件工程師意味著什么。這些過程都需要真實(shí)的時(shí)間。
隨著我們?cè)絹碓蕉嗟剞D(zhuǎn)向這種智能體工作流程,從某些方面來說,這就像未來幾年我們通過軟件工程來實(shí)現(xiàn) 200%、500% 甚至 1000% 增長的真正途徑。
Devin 的一大優(yōu)點(diǎn)是它總是充滿熱情
Lenny:讓我們向大家展示一下 Devin 的工作原理到底是什么樣子吧。
Scott Wu:好的,與 Devin 協(xié)作的整個(gè)過程顯然是異步進(jìn)行的。所以,我想我們可以實(shí)際觀看一下 Devin 的工作過程,然后我們可以看一些 Devin 完成的其他工作示例,或者 Devin 為我們團(tuán)隊(duì)所做的事情。然后我們可以異步地回來看看我們最初運(yùn)行的那個(gè) Devin。
我想強(qiáng)調(diào)的關(guān)鍵是,想想我們作為軟件工程師,或者工程團(tuán)隊(duì)、產(chǎn)品經(jīng)理等等,思考我們想要構(gòu)建什么,想要交接什么。所以,我們已經(jīng)用我們自己的 Devin 代碼庫設(shè)置好了 Devin。所以,我會(huì)為它啟動(dòng)一個(gè) Devin。我會(huì)說:
「嘿 @Devin,我和朋友 Lenny 在一起。你能修改一下 Devin 的 web 應(yīng)用,把 Lenny's Newsletter 作為 Devin 網(wǎng)站的一部分展示出來嗎?就在真實(shí)的 Devin 網(wǎng)站上吧?!?/p>
所以我們啟動(dòng)這個(gè)任務(wù)。如你所見,Devin 立刻開始工作并做出回應(yīng)。你可以異步地處理這個(gè),也可以同步處理。這次,我們就稍微深入一點(diǎn),看看具體發(fā)生了什么。但如你所見,Devin 正在瀏覽文件,查看很多東西。所以,我們可以根據(jù)需要在這里跟進(jìn),看看哪些是有意義的。你可以看到 Devin 已經(jīng)指出了幾個(gè)特定的部分。比如側(cè)邊欄,這是我們?cè)谇岸藢?shí)現(xiàn)的。那里有一些部分,我們將擁有一個(gè)新的組件,這個(gè)組件將鏈接到 Lenny 的網(wǎng)站。這聽起來都不錯(cuò)。Devin 在問我們是否有什么問題。同樣的情況,你可以讓 Devin 自己做決定并交接,或者你可以提出更多想法。比如按鈕應(yīng)該在新標(biāo)簽頁還是應(yīng)用程序內(nèi)打開? 我會(huì)說,「讓它在新標(biāo)簽頁中打開吧」。
Lenny:你可以在任何時(shí)候回答這些問題嗎?它是在等你嗎?
Scott Wu:你可以在任何時(shí)候回答這些問題把任務(wù)交出去,也可以再收回來。
Lenny:它不會(huì)說:「天哪,我剛寫成這樣,你為什么不早點(diǎn)告訴我?」
Scott Wu:沒錯(cuò)。關(guān)于 Devin 的一個(gè)重要優(yōu)點(diǎn)是,Devin 總是充滿熱情,總是準(zhǔn)備好投入時(shí)間。
我們會(huì)給 Devin 一點(diǎn)時(shí)間工作,它會(huì)瀏覽這些文件,然后為我們創(chuàng)建一個(gè) PR,我們會(huì)看看結(jié)果如何。但我覺得展示一些 Devin 在其他場(chǎng)景下的例子也很有趣。
其中一個(gè)例子是今天早上我剛用 Devin 做的,我讓 Devin 幫我復(fù)習(xí)一下關(guān)于這次播客的一些背景信息。顯然,我是這個(gè)播客和 Newsletter 的忠實(shí)粉絲。我問 Devin:「嘿,Devin,我要上播客了,你能幫我研究一下關(guān)于 Lenny 的所有信息,并為我制作一個(gè)漂亮的網(wǎng)站測(cè)驗(yàn),這樣我能確保自己掌握了事實(shí)嗎?」
所以 Devin 在今天早上做了這個(gè),我大概展示一下 Devin 做了什么??雌饋硭紫热チ司S基百科。不幸的是,維基百科上沒有 Lenny 的頁面,Lenny,我們得努力一下了,Devin 對(duì)你太不尊重了。我們需要一個(gè)頁面,然后,它去 Spotify 上找到了。
Lenny:所以你在實(shí)時(shí)觀看它研究的過程?
Scott Wu:是的。顯然這是今天早上的事情。
Lenny:這是 Devin 所做事情的回放。這是 Devin 的一部分功能,你可以回看它做了什么。
Scott Wu:是的。特別是當(dāng)你在構(gòu)建工程項(xiàng)目或類似的東西時(shí),你可以看到 Devin 采取的每一步。或者如果 Devin 在本地測(cè)試了代碼,你顯然希望能夠去看看 Devin 點(diǎn)擊了什么,測(cè)試了什么,或者類似的事情,它找到了 Newsletter,它正在查看這個(gè),將要閱讀所有這些內(nèi)容。
然后它說:「好吧,讓我們開始把代碼整合起來吧。我已經(jīng)研究了這些,正在寫所有這些,把應(yīng)用組合起來?!?它實(shí)際上自己玩了自己的測(cè)驗(yàn)。讓我們看看,看看我知道多少。
Lenny:播客的名字是什么?
Scott Wu:Lenny's Podcast。
Lenny:播客有多少訂閱者?
Scott Wu:一百萬。
Lenny:Lenny 關(guān)注的三個(gè)主要話題是什么?
Scott Wu:產(chǎn)品、增長和職業(yè)。
Lenny:非常好!這是個(gè)好測(cè)驗(yàn)。除了播客,Lenny 還做什么?
Scott Wu:我會(huì)說,寫作、天使投資和顧問。
Lenny:Lenny 多久發(fā)布一次?
Scott Wu:每周一次。我們可以完成所有這些。我當(dāng)然也做了這個(gè)測(cè)驗(yàn),以確保我準(zhǔn)備充分。但這只是其中一個(gè)比較有趣的例子。
Lenny:Scott,我的 newsletter 有多少訂閱者?
Scott Wu:超過一百萬。我再展示最后一個(gè)例子,之后也許我們可以回到我們最初運(yùn)行的那個(gè)任務(wù)。
Devin 的諸多功能旨在與現(xiàn)有代碼工作流程無縫協(xié)作。例如,我們當(dāng)時(shí)在 GitHub 探索 DeepSeek 代碼庫,將其導(dǎo)入 Devin 并建立獨(dú)立分支(fork)。
我想在這里展示幾件事。一是 Devin 會(huì)建立自己的 wiki,全方位呈現(xiàn)對(duì)代碼庫的深度理解。當(dāng) Devin 索引代碼庫時(shí),它會(huì)構(gòu)建代碼庫的表現(xiàn)形式、持續(xù)學(xué)習(xí)并優(yōu)化,這是其核心能力之一。
有意思的是,我們發(fā)現(xiàn)人類也渴望了解代碼庫的表示形式,所以推出了 Devin Wiki。你可以瀏覽各個(gè)部分,看到每一項(xiàng)不同的內(nèi)容。這里是 FP8 操作,這里是 SGLang 集成,有關(guān)于不同層如何構(gòu)建和組合的圖表,有部署操作,還有很多關(guān)于架構(gòu)的細(xì)節(jié)。你可以據(jù)此提問。
比如,你可詢問:「DeepSeek 如何處理為推測(cè)性解碼設(shè)計(jì)的多 token 預(yù)測(cè)?」 Devin 會(huì)搜索整個(gè)代碼庫,給出有理有據(jù)的回答。我們常常使用這項(xiàng)功能,尤其在規(guī)劃任務(wù)與提供初始提示時(shí),即便沒有特定任務(wù)也十分實(shí)用。
Deivn 擅長處理明確任務(wù)而非問題
Lenny:隨著我與越來越多做 AI 的公司和應(yīng)用交流,我了解到他們?cè)谀軌蚣啥啻蟮拇a庫方面存在很大差異。這對(duì)于現(xiàn)有公司、初創(chuàng)公司、以及那些擁有龐大現(xiàn)有代碼庫的公司來說都是個(gè)大問題。人們應(yīng)該如何看待 Devin 能夠接入什么樣的代碼庫?
Scott Wu:是的。所以我們要盡可能處理規(guī)模最大的代碼庫。作為工程師,我們思考大型代碼庫的方式通常是,更改或思考特定任務(wù)時(shí),不會(huì)一次性記住每一行代碼,而是先形成高層次抽象概念,審視后逐步聚焦,再獲取更清晰的細(xì)節(jié)。
Devin 的工作方式與此非常相似:它首先會(huì)梳理出代碼庫的高層架構(gòu),理解其功能用途等基本信息,然后針對(duì)每個(gè)組件,它也能深入挖掘并提供更詳細(xì)的分析。比如 FP8 到 vFloat16 的轉(zhuǎn)換機(jī)制具體是如何設(shè)置的,代碼庫的各個(gè)組成部分分別發(fā)揮什么作用等。同樣,我們?cè)谠O(shè)計(jì)時(shí)就確保了 Devin 的可擴(kuò)展性。
Lenny:這基本上又回到了工程師作為架構(gòu)師的觀點(diǎn),Devin 正協(xié)助你理解架構(gòu)。
Scott Wu:沒錯(cuò)。我們發(fā)現(xiàn)了一個(gè)有趣的用例,用戶經(jīng)常借助 Devin 來引導(dǎo)新加入團(tuán)隊(duì)的工程師。剛加入團(tuán)隊(duì)時(shí),你對(duì)代碼庫和程序設(shè)置充滿疑問,有時(shí)向?qū)熁蚪?jīng)理提問會(huì)稍顯尷尬,尤其擔(dān)心問題幼稚。此時(shí),直接詢問 Devin,瀏覽其生成的 wiki,理解內(nèi)部表示形式,就很有幫助。
Lenny:這很有趣,又回到了你的觀點(diǎn),Devin 不僅是初級(jí)工程師,而是具備「能力參差」的智能,像資深工程師一樣理解代碼庫。通常,你得詢問長期在此工作的工程師,這個(gè)東西是干啥的、在哪、怎么運(yùn)作,而 Devin 在這方面的表現(xiàn)得令人驚訝。
Scott Wu:是的,檢索和處理大量代碼與 token 正是語言模型的強(qiáng)項(xiàng),它能在你需要時(shí)提供幫助。
Devin Wiki 是我們上周剛推出的功能,與 Linear 完全集成。如果你在 DeepSeek 代碼庫有任務(wù),只需要添加 Devin 標(biāo)簽,Devin 就會(huì)給出對(duì)任務(wù)的看法。你可以查看每個(gè)特定文件,或它標(biāo)記的重要代碼片段。若認(rèn)可構(gòu)建內(nèi)容和結(jié)論,就可以啟動(dòng) Devin 會(huì)話,來實(shí)際完成任務(wù)。
Lenny:聽起來是個(gè)簡單想法,但本質(zhì)上,你在說 Linear 中有修復(fù)和功能任務(wù),現(xiàn)在 Devin 可以直接幫你搞定。
Scott Wu:這是個(gè)需要手動(dòng)操作的過程。當(dāng) Devin 規(guī)劃任務(wù)或提供想法時(shí),你當(dāng)然希望參與其中。Devin 還會(huì)告知它的把握程度,比如對(duì)某個(gè)部分的理解可能性,這有助于加快進(jìn)度。
正如你所說,很多產(chǎn)品經(jīng)理喜歡用 Devin 和 Linear 更好地理解事物、代碼庫等。例如,Launch Darkly 的 Claire Vo 是 Devin 的重度用戶,她喜歡規(guī)劃任務(wù),詢問數(shù)據(jù)相關(guān)問題,或者某個(gè)功能是否已合并到生產(chǎn)環(huán)境,又有多少人正在使用某個(gè)功能等。這是一種簡潔地獲取智能的方式。
Lenny:我喜歡它與 Linear 的集成,依然保持簡單。你可以添加一個(gè)小工單,比如將某個(gè)內(nèi)容鏈接到主頁,Devin 能精準(zhǔn)理解并展示。
Scott Wu:是的。Devin 看起來完成了工作。似乎 CI 方面出了點(diǎn)問題,它現(xiàn)在正在調(diào)試。但它已經(jīng)提交了最初的第一版 PR,我們可以看一下。這是 Devin 的網(wǎng)站,顯然是在這個(gè)自定義部署中。我們這里有 Lenny's Newsletter。
Lenny:把這個(gè)部署到生產(chǎn)環(huán)境吧!太神奇了。
Scott Wu:Devin 顯然可以訪問我們的 Devin 代碼庫,它在這里做了很多工作,所以它對(duì)這里的所有部分都非常熟悉。
Lenny:很漂亮。是的,我喜歡它的樣子。它會(huì)帶來一些不錯(cuò)的增長。你鏈接到我的網(wǎng)站,我們搞點(diǎn) PageRank。
Scott Wu:是的。
Lenny:我的 Newsletter 有一個(gè)多么漂亮的網(wǎng)站啊。這是否就是 Devin 非常擅長的那種事情的一個(gè)好例子?比如,「這里有一個(gè)非常具體的關(guān)于網(wǎng)站的修改需求」。
人們應(yīng)該如何看待 Devin 擅長的領(lǐng)域以及可能出問題的地方?
Scott Wu:我認(rèn)為 Devin 在處理明確任務(wù)時(shí)表現(xiàn)出色,你應(yīng)該給 Devin 分配任務(wù),而不是問題。比如快速的前端功能請(qǐng)求、bug 修復(fù)、添加測(cè)試和文檔等。
讓循環(huán)變得非常好的一個(gè)因素是能夠快速迭代和測(cè)試。例如,直接調(diào)出預(yù)覽查看鏈接是否有效,Devin 也很容易做到這一點(diǎn)。
Devin 經(jīng)常會(huì)登錄 Devin,啟動(dòng)一個(gè) Devin 會(huì)話,并確保它在我們自己的代碼庫上工作,這有點(diǎn)搞笑。但你通常想要一些容易驗(yàn)證和容易測(cè)試的東西,這是最主要的。你也可以處理更大的項(xiàng)目或更大的請(qǐng)求。但在那種情況下,你應(yīng)該預(yù)料到需要更多地引導(dǎo) Devin,以確保它朝著正確的方向前進(jìn)。
Lenny:這很有趣,因?yàn)檫@與人們談?wù)摵铣蓴?shù)據(jù)和強(qiáng)化學(xué)習(xí)的方式非常相似,創(chuàng)建那些非常容易有明確答案的數(shù)據(jù),是或否非常清晰。
在你們?cè)O(shè)計(jì)和構(gòu)建 Devin 的過程中,爭(zhēng)論最多的是什么?
Scott Wu:我想到了幾個(gè)例子。其中一個(gè)我想說的是一個(gè)我稱之為 「我們應(yīng)有多固執(zhí)己見」 的問題。
我們有各自常用的 Devin 工作流程,它能集成到 Slack 和 GitHub,在我們的代碼倉庫中為我們創(chuàng)建 Pull Request,響應(yīng)問題報(bào)告等。當(dāng)然,我們也會(huì)遇到很多其他各種各樣的情況,很多人在使用 Devin,創(chuàng)造出不同的用例,甚至有人用 Devin 點(diǎn) DoorDash 外賣。而且還有許多人從頭開始構(gòu)建很酷的網(wǎng)站,或者做類似的事情。
這對(duì)我們而言是一個(gè)有趣的權(quán)衡,我會(huì)這樣描述它:我們產(chǎn)品中構(gòu)建的大部分功能肯定是針對(duì)創(chuàng)建 Pull Request 和工程團(tuán)隊(duì)使用的用例。但我覺得,如果人們想將 Devin 用于其他目的,我們也會(huì)確保他們充分了解局限性以及可能遇到困難的地方。
生成式 AI 很有意思,我看到的最常見的創(chuàng)業(yè)建議之一是:專注于一個(gè)非常細(xì)分的群體,做那些無法規(guī)?;氖虑?,打造一個(gè)真正出色的用例,然后從那里開始拓展。我認(rèn)為這在各個(gè)方面都是很好的建議。
但是,對(duì)于生成式 AI 而言,你很自然地會(huì)看到很多產(chǎn)品體驗(yàn)最終會(huì)變得更通用。這是我們依然在反復(fù)思考的一個(gè)問題,我們也希望能夠做一些事情來支持其他類型的用例,來處理人們可能想用 Devin 去做的事情。
另一個(gè)問題是,Devin 應(yīng)該在多大程度上成為一個(gè)完整的綜合項(xiàng)目體驗(yàn),還是更像一套組合工具?我們有 Devin Search、Devin Wiki,還有 Linear 工單范圍界定功能,這些工具是相互作用的。但隨著時(shí)間的推移,我們?cè)絹碓綄⑵湟暈橐惶坠ぞ摺6椅艺J(rèn)為,構(gòu)建各種功能的智能體,即 Devin,是核心部分,這將永遠(yuǎn)是我們工作的真正特別之處。
然而,現(xiàn)實(shí)世界的軟件共享需要一套復(fù)雜的工具,有很多不同的流程和諸多不同的用例是合理的。例如,你可以向 Devin Search 和 Devin 提出相同的問題,Devin 可能會(huì)馬上開始運(yùn)作,但用戶有時(shí)更傾向于擁有控制權(quán)。
你可能正在設(shè)計(jì)一個(gè)編程任務(wù),但還不希望 Devin 馬上開始這個(gè)任務(wù)。你只想問問 Devin Search,了解代碼庫的哪些部分可能相關(guān),或者只提出看看相關(guān)代碼庫片段的請(qǐng)求,或者通過查看 wiki 了解現(xiàn)有的表示。所以,無論是在功能方面還是在用戶體驗(yàn)方面,我們都發(fā)現(xiàn)這些功能隨著時(shí)間的推移變得自然而然且十分有意義。
未來智能體編程的體驗(yàn)還會(huì)迭代 20 次
Lenny:在 AI 編碼領(lǐng)域,有多種不同的做法,你們?nèi)Υ蛟?AI 工程師,但也有 IDE 公司和構(gòu)建出色工程模型的公司?,F(xiàn)在連 OpenAI、Anthropic、Cursor 等都在構(gòu)建 agent。你們?nèi)绾味ㄎ蛔约?,又如何看待在這個(gè)領(lǐng)域取勝的關(guān)鍵?
Scott Wu:我認(rèn)為這些團(tuán)隊(duì)都很強(qiáng),它們由非常聰明和具有前瞻性思維的人組成,正在構(gòu)建許多優(yōu)秀的產(chǎn)品。而且,我認(rèn)為在未來幾年,隨著通用人工智能(AGI)逐漸實(shí)現(xiàn),還有很多事情要做。
我非常喜歡的一句話是:2017 年,如果你問我們是否擁有 AGI,答案是否定的;而到了 2025 年,如果你問我們是否擁有通用人工智能,答案則是,你必須定義通用人工智能,而且這取決于你的研究領(lǐng)域。
這里觸及到的一個(gè)核心問題是,現(xiàn)在正在發(fā)生很多真正令人驚嘆的事情,很容易讓我們低估這場(chǎng)變革的巨大程度。
在過去 10 年 - 30 年里,有很多很棒的產(chǎn)品,它們讓產(chǎn)品構(gòu)建生命周期中各種不同細(xì)分領(lǐng)域的各個(gè)環(huán)節(jié)都變得更容易了一些。
例如,有很棒的即時(shí)消息產(chǎn)品,日志記錄產(chǎn)品,計(jì)費(fèi)產(chǎn)品,各種不同的工具。這些領(lǐng)域都將以數(shù)倍的速度發(fā)展,這將是一個(gè)數(shù)量級(jí)的轉(zhuǎn)變。
從我們的角度來看,我們一直專注在一個(gè)領(lǐng)域,那就是自主編程 agent。
這里有很多問題需要解決,比如核心能力方面仍然有很多工作要做,我們經(jīng)常遇到這樣的情況:「Devin 為什么會(huì)做那個(gè)決定?任何人類工程師都不會(huì)那么做?!?/p>
在很多方面,比如產(chǎn)品界面,顯然有很多需要思考的地方,這不僅僅是我們正在努力實(shí)現(xiàn)的單一目標(biāo),而是會(huì)隨著每一次能力迭代而改變的東西,我估計(jì)未來智能體編碼的體驗(yàn)還會(huì)迭代 20 次。
我們將在幾年內(nèi)達(dá)到一個(gè)階段,那時(shí)你可能根本不需要看代碼,只需要查看并指定任務(wù),然后說:「我們?cè)谶@里加一個(gè)新的標(biāo)簽頁,應(yīng)該保存這些信息。啟動(dòng)一個(gè)數(shù)據(jù)庫表,并在 X、Y 和 Z 列上建立索引?!鼓銓⒛軌?qū)崟r(shí)地與你的產(chǎn)品交互,并讓你的智能體為你打造這些功能。
從現(xiàn)在到那時(shí),還會(huì)有很多代際更迭。但我認(rèn)為,產(chǎn)品體驗(yàn)本身每次都會(huì)改變,同時(shí)還有將其推廣到全世界的各種實(shí)際問題。所以,人們需要學(xué)習(xí)如何使用新技術(shù)。
同時(shí),在部署以及處理現(xiàn)實(shí)世界軟件的各種復(fù)雜情況方面,還有很多工作要做?,F(xiàn)在仍然有很多 COBOL、Fortran 這類「古老」的語言。人們已經(jīng)做了很多各種各樣的抽象和細(xì)節(jié)處理。
所以我們從一開始就一直專注于 coding agent。這是我們真正相信并為之設(shè)計(jì)的一件事,甚至延伸到了收入模式和基于使用量的設(shè)置,也融入了所有的產(chǎn)品體驗(yàn)。
比如,你想在哪里與 Devin 交談?你希望能夠在 Slack 中與 Devin 交談,你希望從你的問題跟蹤器中啟動(dòng)它,當(dāng)然還有能力方面。
所以我不認(rèn)為有一個(gè)簡單的答案,這是多種因素的結(jié)合。但這確實(shí)是我們過去一年半投入所有時(shí)間的領(lǐng)域,未來五到十年也將如此。
用戶粘性是關(guān)鍵「護(hù)城河」
Lenny:沿著這些思路,AI 領(lǐng)域一個(gè)普遍的難題是護(hù)城河和可防御性。當(dāng)構(gòu)建產(chǎn)品變得容易,而且很多東西都建立在自身發(fā)展如此迅速的模型之上時(shí),你如何思考在這個(gè)領(lǐng)域建立護(hù)城河?
Scott Wu:我認(rèn)為這通常更多關(guān)乎用戶粘性,而非護(hù)城河。通常人們所說的護(hù)城河是指某種能阻止競(jìng)爭(zhēng)對(duì)手進(jìn)入市場(chǎng)的東西。從宏觀層面來看,許多不同公司在 AI 譜系的不同層面,比如基礎(chǔ)模型實(shí)驗(yàn)室或應(yīng)用層等,我不認(rèn)為存在任何能夠阻止其他人進(jìn)入的硬性壁壘。
我認(rèn)為真正存在的是粘性,我會(huì)將其定義為:一旦你用上一個(gè)真正喜歡的產(chǎn)品體驗(yàn),是否會(huì)興奮地持續(xù)使用它?
或者是否存在一種效應(yīng),即從現(xiàn)在開始,切換到一個(gè)新的產(chǎn)品并學(xué)習(xí)它也同樣容易?從這個(gè)角度來看,我認(rèn)為編碼智能體有幾個(gè)尤其出色的方面。
首先,隨著時(shí)間的推移,存在很多固有的粘性和學(xué)習(xí)積累。把 Devin 比作人類工程師的話,第一天加入公司的工程師,與已經(jīng)在公司工作了五年、自己寫了一半代碼、接觸過每個(gè)文件、構(gòu)建過每個(gè)部分、且熟悉團(tuán)隊(duì)其他成員的工程師,他們的產(chǎn)出是不可相比的。
Devin 也會(huì)真正學(xué)習(xí)并構(gòu)建它對(duì)客戶的代碼庫、技術(shù)棧和流程的認(rèn)知,并隨著時(shí)間的推移能夠做更多的事情。
另一方面,我認(rèn)為非常令人興奮的是,我稱之為代碼的「多人協(xié)作」方面,確實(shí)有很多事情可做。這正是現(xiàn)實(shí)世界中很多事情的完成方式。
把 Devin 當(dāng)成一個(gè)工程師,自己使用,這是一種用法。另外我們也經(jīng)??吹?,一些工程師與 Devin 一起工作并調(diào)教 Devin,人們會(huì)讓 Devin 幫助新工程師入職,并向他們傳授知識(shí)?;蛘呶視?huì)在 Slack 中與 Devin 開始一個(gè)會(huì)話,我會(huì)說:「我們要做某某產(chǎn)品」;然后其他工程師會(huì)插話:「我們最初這么做的原因是 X 和 Y。Devin,當(dāng)你做這個(gè)更改時(shí),請(qǐng)確保仍然支持那個(gè)工作流程?!笵evin 會(huì)說:「好的」?;蛘?Devin 會(huì)創(chuàng)建一個(gè) PR,然后其他人會(huì)審查那個(gè) PR 或給出一些評(píng)論,Devin 也會(huì)進(jìn)行相應(yīng)的處理。
在軟件工程的各種場(chǎng)景里,Devin 為這樣一種體驗(yàn)奠定了基礎(chǔ):它能夠隨著時(shí)間的推移,為客戶整個(gè)工作提供的價(jià)值不斷增長。我們更多地思考的是:如何讓 Devin 在你使用得越多的時(shí)候,變得越來越有用?
Lenny:之前 Cursor 的 CEO Michael 也有類似觀點(diǎn),他認(rèn)為護(hù)城河或者說用戶黏性,就像 Google 做到的一樣:用戶切換成本低,關(guān)鍵在于做到最好。你是否認(rèn)為,如果能在此基礎(chǔ)上創(chuàng)造出更強(qiáng)的粘性,讓用戶因?yàn)楫a(chǎn)品太好用、積累了知識(shí)并與你的工作流程深度集成而難以離開,那會(huì)更進(jìn)一步?
Scott Wu:我認(rèn)為軟件工程這個(gè)領(lǐng)域的一個(gè)好處是,無論好壞,都有一個(gè)非常清晰的價(jià)值衡量標(biāo)準(zhǔn)。至少在未來一段時(shí)間內(nèi),總會(huì)有一個(gè)清晰的下一個(gè)目標(biāo)。
可能未來會(huì)有某個(gè)時(shí)刻,你可以對(duì) Devin 說,幫我搭建一個(gè)完整的 YouTube,它真的能完成。而現(xiàn)在的 YouTube 背后,是數(shù)億小時(shí)的人類工程時(shí)間,他們構(gòu)建了算法、基礎(chǔ)設(shè)施,以及每一個(gè)微小的細(xì)節(jié)。
而且,也許有一天 Devin 能以開箱即用的方式完成這個(gè)任務(wù),雖然那將是很久以后的事情。
我認(rèn)為開發(fā)者一個(gè)很酷的地方在于,他們真的愿意學(xué)習(xí)新的體驗(yàn),并投入努力,如果這意味著他們能夠獲得越來越高質(zhì)量的體驗(yàn)。
我們已經(jīng)度過了 AI coding 的拐點(diǎn)
Lenny:在不泄露商業(yè)機(jī)密的前提下,是什么讓你們能把 Devin 做得這么好?是因?yàn)槟硞€(gè)特定模型的突破嗎?有些人分享過,Claude sonnet 3.5 和 3.7 版本對(duì)他們的很多產(chǎn)品來說是一個(gè)巨大的突破。你們?cè)诩軜?gòu)或構(gòu)建 Devin 方面,使其如此出色運(yùn)作的關(guān)鍵是什么?
Scott Wu:我們很早就開始押注于智能體,我認(rèn)為智能體比大多數(shù)人想象的要更早地變得可行和實(shí)用。隨著整個(gè)社區(qū)真正圍繞它團(tuán)結(jié)起來,你可以在預(yù)訓(xùn)練中看到它的影響,你可以在很多與這些模型相關(guān)的工作中看到它的影響。
從我們的角度來看,我不認(rèn)為 Devin 的表現(xiàn)出現(xiàn)過任何單一的、階梯式的基礎(chǔ)模型轉(zhuǎn)變或其他任何導(dǎo)致天壤之別的變化。
但現(xiàn)在每周都會(huì)有新模型問世,這也對(duì)我們能做的事情產(chǎn)生了重大影響。在此基礎(chǔ)上,我們與基礎(chǔ)模型實(shí)驗(yàn)室的研究團(tuán)隊(duì)合作,在他們的基礎(chǔ)之上進(jìn)行我們的工作。
所以,我想在這里給出一個(gè)大膽的觀點(diǎn),我認(rèn)為在基礎(chǔ)智能方面,基本上已經(jīng)達(dá)到了我們的要求。我們不會(huì)自己預(yù)訓(xùn)練模型,不會(huì)去提高模型的基礎(chǔ)智商,而是更多地教會(huì)它現(xiàn)實(shí)世界工程中的所有特質(zhì)和細(xì)節(jié)。例如思考如何使用 Datadog,如何找出程序中的錯(cuò)誤,如何處理每一種情況,如何創(chuàng)建 GitHub PR。
我們每天所做的工作中,都有非常多的細(xì)節(jié)和特殊性,這更像是教會(huì)模型去反映現(xiàn)實(shí)世界的復(fù)雜性,而不是讓它達(dá)到某種更高的、根本性的解決問題的水平。
Lenny:你曾經(jīng)分享過一個(gè)關(guān)于以往顛覆性技術(shù)增長的觀點(diǎn),那些技術(shù)非常依賴硬件,并且其增長存在限制因素,而 AI 則不同。
Scott Wu:出于多種原因,我認(rèn)為 AI 將是我們一生中經(jīng)歷的最大的技術(shù)變革。
但我想說的一點(diǎn)是,過去 50 年我們經(jīng)歷的大多數(shù)重大科技革命,像個(gè)人電腦、互聯(lián)網(wǎng)和移動(dòng)電話,它們都有一個(gè)重要的硬件組成部分,這在推廣普及中扮演了重要角色。
互聯(lián)網(wǎng)最初只是一些大學(xué)之間相互通信,但隨著時(shí)間的推移,整個(gè)世界都接入了互聯(lián)網(wǎng),這花費(fèi)了很多很多年。
移動(dòng)電話也是如此,個(gè)人電腦也是如此。關(guān)于這一點(diǎn)特別有趣的是,我們已經(jīng)看到了這種影響:在這些硬件中,有很多事情取決于實(shí)時(shí)性。
所以,那些為這些行業(yè)開發(fā)產(chǎn)品的人,都親眼見證了他們的市場(chǎng)隨著手機(jī)用戶和互聯(lián)網(wǎng)接入人數(shù)的增加而逐年穩(wěn)步成長,很多企業(yè)都是從行業(yè)初期就開始發(fā)展起來的。
像 Apple 和 Microsoft 幾乎是在同一時(shí)間創(chuàng)立的,很多偉大的互聯(lián)網(wǎng)企業(yè)或其他企業(yè)也是如此。它是一個(gè)隨著時(shí)間的推移觸及了整個(gè)世界,或者說觸及了整個(gè)世界很大一部分的事物,產(chǎn)生了非常巨大的影響,但它花費(fèi)了數(shù)年時(shí)間才得以實(shí)現(xiàn)。
我認(rèn)為 AI 已經(jīng)顯現(xiàn)出的一大不同之處在于其技術(shù)的爆炸性增長潛力。
我認(rèn)為我們已經(jīng)穩(wěn)穩(wěn)地度過了 AI coding 的拐點(diǎn),也就是說,作為一名工程師,如果你完全不使用 AI,你會(huì)被甩在后面。這是一種每個(gè)人都應(yīng)該擁有和使用的技術(shù),而且沒有任何硬件分銷的阻礙。這意味著這個(gè)領(lǐng)域正以指數(shù)級(jí)速度增長。
Lenny:Michael Pollan 有個(gè)有趣的觀點(diǎn),陳詞濫調(diào)之所以是陳詞濫調(diào),是因?yàn)樗鼈兲鎸?shí)了。這就是為什么你會(huì)覺得,這個(gè)我聽過一百萬次了。我認(rèn)為人們聽到這個(gè)會(huì)想。但實(shí)際上正在發(fā)生的事情是瘋狂的。這就是你在這里幫助我們度過這個(gè)轉(zhuǎn)變的原因。
Scott Wu:這是一個(gè)有趣的時(shí)代,這將需要真正的投資和真正的工作。但是,從我們的角度來看,作為工程師,這意味著與正在發(fā)生的一切保持同步非常重要。不僅是你學(xué)習(xí)和使用這些技術(shù)的能力,而且還關(guān)乎你教會(huì) AI 關(guān)于你的代碼庫的知識(shí),以便讓它能夠真正有效地與你一起構(gòu)建,并做更多你想讓它做的事情。
把 Devin 當(dāng)作你的「新同事」
Lenny:對(duì)于正在聽播客的公司員工來說,他們可能會(huì)想,我們公司應(yīng)該使用 Devin。 你發(fā)現(xiàn)有哪些因素有助于幫助公司里的工程師獲得采納并能夠使用 Devin,無論是文化上還是操作上?
Scott Wu:我們經(jīng)??吹降囊环N模式是,團(tuán)隊(duì)中會(huì)有幾個(gè)人非常興奮,想要嘗試新事物,他們?cè)敢馔度霑r(shí)間和精力,并且非常興奮地想要把它搞起來。他們會(huì)完成所有的設(shè)置,他們會(huì)給 Devin 代碼庫的訪問權(quán)限,教 Devin 如何運(yùn)行 lint 和 CI 以及所有這些細(xì)節(jié)。他們會(huì)從分配最初的任務(wù)開始,基本上幫助 Devin 建立一個(gè)立足點(diǎn)。
隨著時(shí)間的推移,最終人們會(huì)看到,Devin 正在寫所有這些 PR,正在做這些事情。
Lenny:「那個(gè)剛加入公司的 Devin 簡直是在瘋狂地產(chǎn)出 PR。」
Scott Wu:他們看到這些,自然會(huì)加入并獲得一個(gè)賬戶。當(dāng)然,很酷的一點(diǎn)是,當(dāng)他們加入時(shí),Devin 已經(jīng)對(duì)他們正在使用的代碼庫有了相當(dāng)多的了解,并且正在與這些代碼庫協(xié)作。
所以,我們經(jīng)??吹降囊粋€(gè)非??岬氖虑槭牵?strong>那些早期采用者本身可以真正地為團(tuán)隊(duì)中的其他人鋪平道路。
我想指出的主要一點(diǎn)是,這是一種非常不同的產(chǎn)品體驗(yàn)。值得一提的是,我們?nèi)匀挥泻芏嗫梢宰龅氖虑椋瑏碜屗M可能直觀、清晰地告訴人們?nèi)绾问褂?Devin,正確的步驟是什么,以及如何真正地從 Devin 中最大化價(jià)值。
你需要投入精力去理解,到底需什么才能讓 Devin 成功。我們發(fā)現(xiàn)自己隨著時(shí)間的推移,每一次更新后,我們都越來越多地使用 Devin。
Lenny:如果你能坐在每個(gè)第一次使用 Devin 的新用戶旁邊,在他耳邊悄悄說幾句建議,幫助他們更好地使用 Devin,你會(huì)說些什么?
Scott Wu:我認(rèn)為最重要的一點(diǎn)是,真的把 Devin 當(dāng)作你的新初級(jí)工程師來對(duì)待。我認(rèn)為這是最重要的事情。
我認(rèn)為人們進(jìn)來,看到空白的頁面,會(huì)想到各種各樣他們想嘗試的東西。
通常我們看到的有效的操作是,你可以嘗試演示,你可以做一些事情。但很多時(shí)候是,我們弄清楚今天或這周我們想完成哪些任務(wù),讓 Devin 開始處理這些任務(wù)。
我們從比較容易的開始,然后與 Devin 合作,了解 Devin 需要設(shè)置哪些東西才能測(cè)試自己的代碼并做得很好,然后隨著時(shí)間的推移逐步擴(kuò)大規(guī)模。當(dāng)你與你的工程師(Devin)一起工作時(shí),你會(huì)更好地了解如何與他們溝通,或者哪些任務(wù)或項(xiàng)目適合讓他們參與進(jìn)來,這確實(shí)是我們的核心理念。
Lenny:假設(shè)工程師每人有 5-10 個(gè) Devin,他們就成了管理初級(jí)工程師的經(jīng)理,這不一定是世界上最好的工作,因?yàn)樗馕吨罅康膶彶楣ぷ?。至少你不必做績效評(píng)估和一對(duì)一談話。但這就像整天坐著檢查大量的 PR。
你成為了架構(gòu)師,這有點(diǎn)像每個(gè)工程師最終都想成為的樣子。他們都會(huì)想「我只想搞架構(gòu),不想修 bug」你如何讓生活變得愉快、有趣、享受,基本上作為一個(gè)管理著未來可能有 500 個(gè) Devin 的工程經(jīng)理?
Scott Wu:我認(rèn)為「砌磚工」與「建筑師」的對(duì)比更接近于體驗(yàn),而不是當(dāng)經(jīng)理。
管理當(dāng)中遇到的很多困難,或者說人們回避它的原因,更多的是很多像上下文、所有權(quán)、責(zé)任之類的東西,然后還有各種情感方面的東西。
我認(rèn)為與 Devin 合作更像是,擁有一個(gè)界面來交接任務(wù)和構(gòu)建任務(wù),找到合適的抽象層次,找到真正有效的工作流程。
我會(huì)做的類比是,當(dāng)我們發(fā)明 Python 時(shí),在很多方面,任務(wù)的描述和規(guī)劃,顯然是不同的范式。但我肯定認(rèn)為,這遠(yuǎn)非人們通常認(rèn)為的那種「管理官僚主義」。
對(duì)于 Devin,很多時(shí)候更像是,找到你可以與之協(xié)作的正確抽象層次,找到運(yùn)作良好的工作流程。你可以先讓 Devin 嘗試一下,如果效果很好,你就馬上合并。如果需要一些修改,你可以給出反饋。這更像是讓 Devin 成為你流程的一部分,而不是失去控制,我認(rèn)為這是人們?cè)诠芾矸矫孀詈ε碌氖虑椤?/p>
Lenny:你是否在考慮推出一個(gè)經(jīng)理 Devin,來管理其他 Devin?
Scott Wu:有考慮過,Devin 可以通過 API 啟動(dòng)其他 Devin,我們已經(jīng)見過這種用例了。
如果你有一些大的任務(wù)想做,Devin 會(huì)分塊,你需要給它們相應(yīng)的權(quán)限才能做到這一點(diǎn)。目前這還不是默認(rèn)啟用的功能,但隨著時(shí)間的推移,這種情況會(huì)越來越多。
對(duì)于人類,用技術(shù)術(shù)語來說,上下文(context)和線程(thread)之間存在一種耦合。我的意思是,每個(gè)人只能在他們所做的工作上單線程操作,并且他們有自己的一套上下文。其他人可以同時(shí)做其他事情,但他們有自己的上下文。
但對(duì)于智能體來說,你可以讓一個(gè)智能體同時(shí)進(jìn)行多條探索線,并且它們可以共享所有上下文。這還處于非常早期的階段,但未來我們會(huì)看到這一點(diǎn)。一旦我們達(dá)到那個(gè)階段,將會(huì)出現(xiàn)很多新的范式,等待我們?nèi)?gòu)建。
Lenny:你剛才提到的那個(gè)決定很有趣,是讓一個(gè) Devin、且只有一個(gè) Devin 做所有事情,它來分發(fā)任務(wù);還是你有五個(gè) Devin,每個(gè)都在做獨(dú)立的事情。這是一個(gè)非常有趣的決定。
Scott Wu:是的,當(dāng)然。
創(chuàng)業(yè):總有三到五件事情,要做得比想象中更極致
Lenny:到目前為止,在構(gòu)建 Devin 的過程中,你學(xué)到的最反直覺的事情是什么?那種與初創(chuàng)公司普遍認(rèn)知相悖的。
Scott Wu:最近在我們構(gòu)建 Devin 的過程中,我思考了很多。這其實(shí)不是我的第一家公司。對(duì)我們很多人來說,這都不是我們的第一家公司。我們團(tuán)隊(duì)總共有 26 或 27 人,其中大概有 18 個(gè)人在此之前創(chuàng)辦過自己的公司。
我想到的一件事是,有一些在初創(chuàng)公司里你經(jīng)常聽到的非常普遍的陳詞濫調(diào),比如你必須快速行動(dòng),或者你必須雇傭優(yōu)秀的人才??偸怯心敲慈轿寮虑楸环磸?fù)提及,它們是初創(chuàng)公司的普遍認(rèn)知。
我最初創(chuàng)業(yè)的時(shí)候,作為創(chuàng)始人,確實(shí)有這樣的想法。但是當(dāng)你真正深入其中,投入了很多年之后,你會(huì)學(xué)到成千上萬其他你需要學(xué)習(xí)的東西。在這些不同的事情上,你都會(huì)遇到很多小的細(xì)節(jié),包括團(tuán)隊(duì)建設(shè)、產(chǎn)品、戰(zhàn)略、工程決策、融資、銷售以及所有其他組成部分。
隨著時(shí)間的推移,我越來越覺得,要把公司做好,有時(shí)候僅僅是把那三到五件事情做得比你想象中還要極致。
每個(gè)人都說我們發(fā)展很快,但事實(shí)是,我們 2023 年 11 月辦了個(gè)黑客松,12 月又辦了一個(gè),2024 年 1 月份正式成立公司,2 月份就把原型產(chǎn)品給初始用戶試用了,3 月份我們發(fā)布了產(chǎn)品,4 月份就有了第一批客戶。
我們?cè)诿恳粋€(gè)地方都真正地加快步伐,這對(duì)我們來說真的產(chǎn)生了很大的影響。
是的,每個(gè)人總是說,你應(yīng)該雇傭優(yōu)秀的人才,我認(rèn)為背后的真理是,你應(yīng)該不惜一切代價(jià),去爭(zhēng)取那些你真正想引進(jìn)的人才。
我最喜歡分享的一個(gè)故事是,我們有一位候選人來面試。他是麻省理工學(xué)院(MIT)的大三學(xué)生,非常年輕。我們給他安排了面試,他的表現(xiàn)比我們以往面試過的幾乎所有全職候選人都要好得多。
所以我們說:「你覺得休學(xué)一段時(shí)間,和我們一起工作,構(gòu)建 Devin 怎么樣?我們認(rèn)為你從第一天開始就能產(chǎn)生巨大的影響?!?/p>
他考慮了一段時(shí)間回來后說:「我愿意,我想這么做,但我的父母希望我能從學(xué)校畢業(yè)。我不確定有什么辦法能行得通?!褂谑俏覀冋劻烁啵擦私饬饲闆r。
然后我們飛往北卡羅來納州,從機(jī)場(chǎng)直接去了他父母家,和他們以及他父母共進(jìn)晚餐,我們聊了很多,試圖了解他們需要什么。他們說:「這聽起來是個(gè)很好的機(jī)會(huì),但我們希望我們的兒子能夠畢業(yè)?!刮覀冏屑?xì)討論了這個(gè)問題,并想出了一個(gè)方案:他可以全職為我們工作,但同時(shí)參加他必須上的課程,并完成他需要做的事情來拿到文憑。我們討論了這個(gè)問題,然后達(dá)成了一個(gè)大家都滿意的方案。我們直接回到機(jī)場(chǎng),那是我第一次也是唯一一次去北卡羅來納州。
你雇傭優(yōu)秀的人是一回事,但真正永不放棄,并盡你所能為那些真正適合團(tuán)隊(duì)的人創(chuàng)造條件,這才是關(guān)鍵。
他已經(jīng)在我們團(tuán)隊(duì)工作一年多了,是一位非常棒的工程師,沒有他,我們走不到今天。
類似地,我們還有另一個(gè)人,同樣是非常有才華的候選人,非常年輕,在很多其他公司都有很好的 offer,他將來也想創(chuàng)辦自己的公司。我們和他談?wù)?,很多顯而易見的事情,比如讓他見我們的投資者,或者讓他接觸客戶,或者看到很多其他方面,這樣當(dāng)時(shí)候到了,他就有創(chuàng)辦自己公司所需的所有經(jīng)驗(yàn)。
但另一件重要的事情是,他已經(jīng)在和很多很棒的公司談了,他不想破壞任何關(guān)系。所以我們和他一起,基本上手寫了他給其他所有公司的拒信回復(fù),和他一起斟酌措辭,比如,「你應(yīng)該如何表達(dá),既表明你真的感謝他們付出的時(shí)間,又表明你顯然希望與他們保持密切聯(lián)系。」我們的工作是確保他足夠開心,以至于在不久的將來他不想離開。
你組建一個(gè)真正偉大的團(tuán)隊(duì)的方式,是通過真正地為對(duì)他們來說正確的事情而奮斗。
Lenny:這些故事太不可思議了,它們讓「雇傭最優(yōu)秀的人才」變得如此真實(shí)。這就是雇傭最優(yōu)秀的人聽起來的樣子,這就是所需要的代價(jià)。
Scott Wu:我們非常努力地從頭開始重新構(gòu)想事物,思考未來 5 到 10 年技術(shù)會(huì)走向何方?以及我們希望在未來扮演什么樣的角色?
Lenny:我在想,有一天人們會(huì)不會(huì)為了 Devin 而爭(zhēng)搶。
回到你說的三到五件事,這是非常棒的建議,你總是聽到要雇傭最好的人,快速行動(dòng),構(gòu)建人們想要的東西。
Scott Wu:是的,構(gòu)建人們想要的東西,盡可能地貼近你的客戶。
我認(rèn)為另一件事是,始終思考事情未來的走向,而不是它們今天的樣子,尤其是在 AI 領(lǐng)域,事情發(fā)展如此之快,有這么多優(yōu)秀的人才。所以不僅僅是思考 10 年后事情會(huì)怎樣,而是思考下周會(huì)發(fā)生什么。事情發(fā)展非常迅速,很難預(yù)測(cè)。你真的必須對(duì)自己非常嚴(yán)格,思考那些事情,并在那個(gè)視角下評(píng)估你做出的所有決定。
Lenny:這里的重點(diǎn)是保持專注,感覺好像有 1000 件事情你應(yīng)該做,但其實(shí)總是這 5 件事情。
在 AI 領(lǐng)域每個(gè)人都能成倍地放大自己的能力
Lenny:你還有什么想分享的嗎?還有什么想留給聽眾的?
Scott Wu:關(guān)于 AI 有很多不同的看法。我認(rèn)為基本上涵蓋了所有可能的情緒。有很多恐懼,也有很多懷疑。我們自己也是非常持懷疑態(tài)度的人,總是想親自嘗試一下,才能真正看到并相信它。
對(duì)我來說,最主要的事情是,我對(duì) AI 構(gòu)建的產(chǎn)品非常樂觀,不僅僅是代碼和 Devin,而是整個(gè)領(lǐng)域以及所有正在完成的事情。每個(gè)人都能成倍地放大自己的能力。
這就是我們一直以來的思考方式,是我們思考我們正在構(gòu)建的東西的方式。而且,我認(rèn)為世界上還有很多事情要做。我不太擔(dān)心我們會(huì)用盡可做的事情。從這個(gè)角度來看,我們一直最興奮的事情是,我們所有人如何能做得更多。
Lenny:帶著這份樂觀,我們來到了非常激動(dòng)人心的閃電問答環(huán)節(jié)。
第一個(gè)問題:你發(fā)現(xiàn)自己最常向他人推薦的兩三本書是什么?
Scott Wu:在非虛構(gòu)類方面,對(duì)于創(chuàng)業(yè)者來說,我非常喜歡的一件事就是學(xué)習(xí)和理解硅谷的歷史。我們思考的所有這些東西,都是有人發(fā)明的。就像有人發(fā)明了種子輪的概念,有人發(fā)明了風(fēng)險(xiǎn)投資的概念,有人發(fā)明了 PMF 的概念。所有這些我們談?wù)摰牟煌瓌t。
為此,有一本書叫《The Power Law》(風(fēng)險(xiǎn)投資史),作者是 Sebastian Mallaby,我非常喜歡。它基本上就是對(duì)過去硅谷六七十年里建立起來的許多偉大企業(yè)和偉大產(chǎn)品的一次巡禮。
至于虛構(gòu)類,我個(gè)人一直非常喜歡 F·斯科特·菲茨杰拉德的《了不起的蓋茨比》,這是我個(gè)人最喜歡的小說之一。
Lenny:你最近有沒有特別喜歡的電影或電視???
Scott Wu:我必須承認(rèn),我想不出最近看過的任何一部電影或電視劇。我期待著在 AGI 之后觀看很多很棒的作品。
Lenny:這必須放進(jìn)預(yù)告片里。太棒了。我喜歡這個(gè)。這也顯示了你工作有多么努力,有多少事情正在發(fā)生,一切進(jìn)展有多快。
你最近有沒有發(fā)現(xiàn)什么你真正喜歡的產(chǎn)品?可以是一個(gè)應(yīng)用,可以是一個(gè)實(shí)物,可以是一把牙刷。
Scott Wu:我想說一個(gè),我最近買了一個(gè) Aura 相框。它就是一個(gè)展示照片的相框,你可以每天、每小時(shí)或者每 15 分鐘展示一張新照片,或者隨便你喜歡。我實(shí)際上非常喜歡它。我認(rèn)為這是一種很好的方式,基本上就是一個(gè)能展示回憶照片的相框。
然后我想說的另一件作為通用物品的東西,它不是特別新,但我想說我認(rèn)為 AirPods 實(shí)際上制造得非常好,設(shè)計(jì)得也很好。我現(xiàn)在意識(shí)到,我基本上在各種情況下都用它們。我在散步時(shí)接電話用 AirPods,我顯然在電腦前工作時(shí)也戴著 AirPods。它在很多不同情況下都運(yùn)作得相當(dāng)好。它們非常舒適,非常穩(wěn)定。
Lenny:是的,我要再次強(qiáng)調(diào) Aura 相框。我也給我媽媽和岳母買了一個(gè),它們對(duì)于和家人分享你孩子的照片真的非常棒。人們可能聽說過數(shù)碼相框,但 Aura 就是做得非常好,添加照片非常容易,而且它們看起來真的很漂亮。
Scott Wu:你可以想象,不久之后,我們會(huì)有 Aura 相框,只不過它把你所有的照片都變成吉卜力工作室的風(fēng)格?;蛘咧皇窍胂笠恍┠阕鲞^的很酷的事情。
Lenny:酷。我相信它的拼寫是 A-U-R-A,如果大家想去看看的話。我們會(huì)鏈接它,非推廣。好的,還有兩個(gè)問題。
你有沒有最喜歡的人生格言,你經(jīng)常回顧并在工作或生活中覺得有用?
Scott Wu:是的,我經(jīng)常思考的一件事是,很多諺語實(shí)際上是相互矛盾的?比如,「物以類聚,人以群分」,然后你也有「異性相吸」。你覺得它們都是對(duì)的,而且它們通常都是對(duì)的。很多時(shí)候是關(guān)于理解為什么。
其中一個(gè)我覺得,尤其是在創(chuàng)業(yè)世界里,我?guī)缀跻恢痹谒伎嫉氖牵艺J(rèn)為專注和有驅(qū)動(dòng)力非常重要,真正地最大化你的潛力。同時(shí),不讓自己的個(gè)人情感與成功或失敗掛鉤也非常重要。
尤其對(duì)于初創(chuàng)公司來說,因?yàn)榭傆衅鹌鹇渎?,老?shí)說,即使是最成功的公司也是如此。這是一條崎嶇的道路,會(huì)發(fā)生很多事情,經(jīng)歷很多。我思考了很多的一件事是,你真的想盡力而為,付出你的一切,并盡你所能去做?;旧?,你想在場(chǎng)上傾盡所有。但同時(shí),你也要能夠接受勝利和失敗。你希望能夠繼續(xù)前進(jìn),每次都進(jìn)入下一個(gè)階段。
為了你自己的情緒狀態(tài)和精神狀態(tài),能夠做到這一點(diǎn)非常重要。我們犯過很多錯(cuò)誤,我的第一家公司顯然很酷,但那里有很多棘手的地方。然后在 Cognition 的過程中,感覺好像已經(jīng)把八年壓縮到了一年里,而且仍然以那個(gè)速度前進(jìn)。但不知何故,它實(shí)際上也讓你更成功。
如果你不把它與你個(gè)人的價(jià)值聯(lián)系起來,你就更能付出你的全力,做那些能帶來成功的事情。
Lenny:這太有趣了。我最近剛錄制了一期播客,采訪了一位高管教練 Jerry Colonna,那是他的重要建議之一。這是一種非常佛系的方法,就是不執(zhí)著、不依附于結(jié)果。
Scott Wu:是的。
Lenny:好的,最后一個(gè)問題。Devin 這個(gè)名字背后有故事嗎?或者是否有其他名字曾是這個(gè)智能體的候選?
Scott Wu:Devin 這個(gè)名字很早就定下來了。我們從一開始就對(duì)編碼智能體感興趣。例如,我的聯(lián)合創(chuàng)始人是 Steven 和 Walden,我們當(dāng)時(shí)有了這個(gè)想法。
我們?cè)谧畛鮿?chuàng)業(yè)時(shí),盡量擴(kuò)大范圍,讓每個(gè)人都能跳出思維定勢(shì),讓每個(gè)人先做一段時(shí)間自己的事情,然后我們?cè)僬?,吸取我們學(xué)到的所有東西。
Walden 制作了一個(gè)他的虛擬開發(fā)者版本,叫做 Dev Walden,然后 Steven 也做了一個(gè)他的版本,叫做 Dev Steven。我們把這些都整合到一起,它就是 Devin。
Devin 很早就確定了。我想說,我們確實(shí)有一個(gè)重大的決定,那就是 Devin 的形象應(yīng)該是什么。正如大家所知,有那個(gè)六邊形的標(biāo)志。實(shí)際上還有一只水獺,一只小水獺腿上放著一臺(tái)筆記本電腦,那也是 Devin。我們當(dāng)時(shí)就用什么、不用什么爭(zhēng)論了一番。已經(jīng)有一段時(shí)間了,但不知何故我們?nèi)匀煌瑫r(shí)保留著六邊形和水獺。
Lenny:你跳過了 Devin 的來源。
Scott Wu:Devin 它是一個(gè)開發(fā)者(dev),有點(diǎn)像當(dāng)我們整合所有名字時(shí),就很清楚了,這將是我們都喜歡與之合作的通用開發(fā)者(universal dev)。
Lenny:Scott,這次訪談太有趣了,我學(xué)到了很多。最后兩個(gè)問題,大家可以在哪里找到你或 Devin?還有什么你想告訴他們的嗎?聽眾如何能幫到你?
Scott Wu:我們的網(wǎng)址是 app.devin.ai。你也可以在 Twitter 或很多其他社交媒體上找到我們。我們非常希望聽到你對(duì) Devin 產(chǎn)品的任何反饋。有很多東西需要弄清楚。
就像我說的,我們距離軟件工程的未來都還有 20 步之遙。所以聽到大家在試用產(chǎn)品時(shí)的想法,對(duì)我們來說意義重大。所以,如果有任何我們可以做得更好的地方,請(qǐng)隨時(shí)告訴我們。
Lenny:Scott,非常感謝你來到這里。
Scott Wu:非常感謝邀請(qǐng)我,我度過了一段愉快的時(shí)光。
本文為專欄作者授權(quán)創(chuàng)業(yè)邦發(fā)表,版權(quán)歸原作者所有。文章系作者個(gè)人觀點(diǎn),不代表創(chuàng)業(yè)邦立場(chǎng),轉(zhuǎn)載請(qǐng)聯(lián)系原作者。如有任何疑問,請(qǐng)聯(lián)系editor@cyzone.cn。