国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

從拒絕 AI 到一切先問(wèn) Agent,DHH:這是我最爽的編程時(shí)刻之一,但程序員黃金時(shí)代到頭了

0
分享至


整理 | 蔡芳芳

策劃 | Tina

六個(gè)月前,Ruby on Rails 作者、37signals 聯(lián)合創(chuàng)始人兼 CTODavid Heinemeier Hansson(DHH)還在訪談中明確表示:他不會(huì)用 AI 寫代碼,所有代碼仍然親手完成。短短半年之后,這一狀態(tài)已經(jīng)發(fā)生了翻天覆地的變化。

在最近的一場(chǎng)訪談對(duì)話中,DHH 詳細(xì)介紹了他如何從最初對(duì)自動(dòng)補(bǔ)全式 AI 工具的排斥,轉(zhuǎn)向如今的Agent-First 編程工作流——現(xiàn)在的大多數(shù)新項(xiàng)目,他已經(jīng)不再?gòu)氖謱懘a開始,而是先讓 Agent 生成實(shí)現(xiàn)草稿,再由自己審閱與調(diào)整。

不過(guò),這種變化并不是理念轉(zhuǎn)變,而是工具能力躍遷帶來(lái)的結(jié)果。當(dāng)模型開始能夠穩(wěn)定生成可直接合并的代碼時(shí),AI 才真正進(jìn)入他的日常開發(fā)流程。而與此同時(shí),他對(duì)代碼質(zhì)量、設(shè)計(jì)審美以及“代碼工匠精神”的標(biāo)準(zhǔn)并沒(méi)有降低,反而變得更加重要。

在訪談中,DHH 還討論了多個(gè)值得開發(fā)者關(guān)注的變化趨勢(shì):

  • 為什么 Ruby on Rails 可能因?yàn)?AI 再次迎來(lái)復(fù)興

  • 為什么設(shè)計(jì)能力正在成為軟件工程核心競(jìng)爭(zhēng)力之一

  • 為什么資深工程師比初級(jí)工程師更容易從 AI 中獲益

  • 為什么 CLI 正在成為最適合 Agent 的接口形態(tài)

  • 為什么傳統(tǒng)“兩個(gè)月一個(gè)功能周期”的開發(fā)節(jié)奏正在失效

  • 為什么程序員的“黃金時(shí)代”可能要走到頭了

更重要的是,這次對(duì)話展示了一種不同于常見 AI 敘事的立場(chǎng):AI 并不會(huì)削弱工程判斷力的重要性,反而正在放大它的價(jià)值。在 Agent 可以快速生成代碼的時(shí)代,真正稀缺的能力不再只是實(shí)現(xiàn)功能,而是決定應(yīng)該構(gòu)建什么、如何構(gòu)建,以及什么才是值得合并進(jìn)系統(tǒng)的代碼。

下面是本次訪談的完整內(nèi)容,由 InfoQ 翻譯整理,力求完整呈現(xiàn)出 DHH 對(duì) Agent-First 編程實(shí)踐、設(shè)計(jì)審美、團(tuán)隊(duì)結(jié)構(gòu)變化,以及軟件工程未來(lái)形態(tài)的系統(tǒng)性思考,也希望能把他在訪談中展現(xiàn)出的充沛能量同樣傳遞給你。

主持人:David,很高興你來(lái)到節(jié)目。最近這段時(shí)間你主要在忙些什么?

DHH:我一直在做各種各樣的東西。事實(shí)上,我已經(jīng)在互聯(lián)網(wǎng)上持續(xù)構(gòu)建軟件快三十年了。我大概是在 1994 年第一次接觸互聯(lián)網(wǎng),從那之后基本就沒(méi)有停下來(lái)過(guò)。

在過(guò)去六個(gè)月里,我做了不少項(xiàng)目,其中之一是一個(gè)新的 Linux 發(fā)行版,叫Omarchy。大概兩年多前我開始切換到 Linux,當(dāng)時(shí)先用了 Ubuntu,用得挺開心,但后來(lái)我意識(shí)到其實(shí)更想從零開始構(gòu)建一個(gè)完全屬于自己的系統(tǒng),于是就在 Arch 和 Hyprland 之上搭建了 Omarchy。

這個(gè)項(xiàng)目最初只是一個(gè)夏季的小項(xiàng)目,當(dāng)時(shí)我在參加勒芒 24 小時(shí)耐力賽,那一周其實(shí)有不少空閑時(shí)間,于是我就順手開始寫這個(gè)系統(tǒng),結(jié)果很快就發(fā)展起來(lái)了。最讓我感到振奮的是,即便在 Linux 發(fā)行版這樣一個(gè)極度擁擠的市場(chǎng)里——大約有 7000 個(gè)發(fā)行版,其中很多歷史悠久,而且不少理念彼此相似——依然存在創(chuàng)造新東西的空間。

這再次提醒我:即使世界上的想法看起來(lái)都已經(jīng)被做過(guò)了,也沒(méi)關(guān)系,因?yàn)槟愕膶?shí)現(xiàn)方式仍然是獨(dú)特的。我只是按照自己的方式重新構(gòu)建了 Linux,打造了一個(gè)對(duì)我來(lái)說(shuō)理想的計(jì)算機(jī)系統(tǒng)。而每當(dāng)我做出真正滿足自己需求的東西時(shí),總會(huì)發(fā)現(xiàn)還有成千上萬(wàn)的人和我有類似需求,他們同樣會(huì)從中獲得樂(lè)趣。無(wú)論是 Ruby on Rails、Kamal,還是“下云”的實(shí)踐,這種模式一直在重復(fù)出現(xiàn)。

主持人:Rails 當(dāng)年其實(shí)也是這樣誕生的,對(duì)吧?你只是為了解決自己的需求寫了一些組件,然后把它們開源出來(lái)。

DHH:基本上是這樣。我是在 2000 年代初接觸 Ruby 的,而真正開始深入使用它是在 2003 年,當(dāng)時(shí)我們開始開發(fā) Basecamp。此前我都是幫客戶做項(xiàng)目,而客戶通常會(huì)指定技術(shù)棧,比如他們會(huì)說(shuō):“我們用 PHP,因?yàn)閳F(tuán)隊(duì)里有人會(huì)這個(gè)。”于是你就必須用 PHP。

但 Basecamp 是我們自己的產(chǎn)品,我終于可以自由選擇技術(shù)方案,于是我選擇了 Ruby。當(dāng)時(shí) Ruby 在 Web 應(yīng)用開發(fā)方面幾乎沒(méi)有成熟工具,所以我不得不把相關(guān)工具全部自己寫出來(lái),而這些工具后來(lái)就演變成了 Ruby on Rails,而且直到今天它仍然發(fā)展得很好,我也仍然深度參與其中。

從某種意義上說(shuō),我覺得Rails 現(xiàn)在甚至正在經(jīng)歷一次新的復(fù)興,因?yàn)樗菢?gòu)建 Web 應(yīng)用時(shí)最節(jié)省 token 的技術(shù)棧之一,這一點(diǎn)在當(dāng)前 agent 工作流環(huán)境下非常重要。當(dāng)然這種優(yōu)勢(shì)未必會(huì)永遠(yuǎn)持續(xù),也許過(guò)不了多久 agent 就開始直接寫機(jī)器碼或者匯編語(yǔ)言了,那時(shí)情況可能又會(huì)變化。但至少在當(dāng)前階段,token 效率仍然重要,而且 agent 生成的代碼仍然需要人類能夠閱讀和驗(yàn)證。

這些“為了解決自己?jiǎn)栴}而構(gòu)建”的項(xiàng)目能夠吸引越來(lái)越多社區(qū)成員參與進(jìn)來(lái),這件事本身就非常令人興奮。比如 Omarchy 這個(gè)項(xiàng)目才發(fā)布六個(gè)月左右,現(xiàn)在已經(jīng)有大約 400 名貢獻(xiàn)者提交了代碼,而且還有數(shù)以萬(wàn)計(jì)的人把它作為日常系統(tǒng)使用。

我一直很喜歡這種體驗(yàn):發(fā)現(xiàn)某種新的、有趣的、令人興奮的技術(shù),比如當(dāng)年的 Ruby。甚至 Linux 也可以算是一種“重新發(fā)現(xiàn)”,因?yàn)楹芏嗳艘郧皬奈丛趥€(gè)人電腦上使用過(guò)它,現(xiàn)在才第一次接觸。如果我能夠幫助一批新的 Linux 用戶——甚至未來(lái)的 Linux 愛好者——更容易開始使用它,比如降低入門門檻,讓默認(rèn)安裝環(huán)境看起來(lái)就已經(jīng)很好用,而不是需要投入 100 個(gè)小時(shí)去調(diào)整配置,這本身就是一件非常有成就感的事情。

當(dāng)然,更有意思的一點(diǎn)是,無(wú)論是 Ruby on Rails 還是 Omarchy,它們都不僅僅是興趣項(xiàng)目。我一直很喜歡做興趣項(xiàng)目,也會(huì)持續(xù)做下去,但我同樣希望這些項(xiàng)目能夠服務(wù)于實(shí)際業(yè)務(wù)。

在 37signals,我們已經(jīng)基于 Ruby 和 Rails 構(gòu)建了一整套業(yè)務(wù)體系,持續(xù)運(yùn)行了 20 多年。現(xiàn)在公司里大多數(shù)開發(fā)者機(jī)器也已經(jīng)切換到 Linux,因?yàn)槲覀冇辛俗约旱陌l(fā)行版。

主持人:所以大家還是可以自由選擇系統(tǒng)嗎?

DHH:某種程度上是這樣,但后來(lái)我們發(fā)現(xiàn)繼續(xù)保持完全自由選擇其實(shí)已經(jīng)沒(méi)有太大意義了。就像在 37signals,如果有人說(shuō):“我要用 Django,用 Python 寫這個(gè)系統(tǒng)”,那顯然也說(shuō)不過(guò)去,因?yàn)槲覀円呀?jīng)有 Ruby 和 Rails 了。

所以最開始我只是邀請(qǐng)大家嘗試 Linux,說(shuō)如果你感興趣可以試試看。但當(dāng) Omarchy 項(xiàng)目逐漸成熟之后,我就決定讓所有技術(shù)崗位全面切換過(guò)去——當(dāng)然 iOS 開發(fā)者除外——凡是做 Web、Ruby 或 DevOps 的人,都應(yīng)該使用 Linux。

首先,這是因?yàn)槲覀兊纳a(chǎn)環(huán)境一直運(yùn)行在 Linux 上,從公司成立第一天起服務(wù)器端就是 Linux。因此讓開發(fā)環(huán)境更接近生產(chǎn)環(huán)境本身就是一個(gè)明顯優(yōu)勢(shì)。同時(shí)我們也正在構(gòu)建自己的發(fā)行版,自然希望有更多人參與進(jìn)來(lái)幫助完善它。再加上我是公司的 CTO,我本來(lái)就需要負(fù)責(zé)技術(shù)方向,而這正是我希望推動(dòng)的方向。

37signals 是如何構(gòu)建軟件的

主持人:能不能簡(jiǎn)單快速地介紹一下 37signals,比如這些年大致是怎么發(fā)展的,現(xiàn)在整體處于什么階段?你們一直在持續(xù)發(fā)布各種新產(chǎn)品,而且都挺有意思,比如最近的 Fizzy。

DHH:37signals 成立于 1999 年,最初是一家網(wǎng)頁(yè)設(shè)計(jì)公司。我是在兩年后的 2001 年加入的,之后和 Jason 一起做了幾年咨詢項(xiàng)目。到了 2003 年,我們開始開發(fā) Basecamp,并在 2004 年正式發(fā)布。

有個(gè)挺有意思的小巧合是,Basecamp 上線時(shí)間和 Facebook 幾乎是前后腳——不是早一天就是晚一天,算是同一批時(shí)代的產(chǎn)物。大約一年之后,我們意識(shí)到這個(gè)產(chǎn)品開始真正起飛,于是決定全面轉(zhuǎn)型,從咨詢公司變成一家軟件公司。

到現(xiàn)在差不多已經(jīng)過(guò)去 22 年了。這期間我們發(fā)布了很多產(chǎn)品,其中 Basecamp 是第一個(gè),也是至今最重要的一個(gè)產(chǎn)品。這其實(shí)挺反直覺的,因?yàn)楹芏嗳藭?huì)以為隨著經(jīng)驗(yàn)增長(zhǎng),你會(huì)越來(lái)越聰明、越來(lái)越容易做出更好的產(chǎn)品。但現(xiàn)實(shí)是,對(duì)很多人來(lái)說(shuō),第一個(gè)想法反而就是最好的那個(gè)。

我完全不避諱地說(shuō),從商業(yè)角度來(lái)看,Basecamp 就是我們做過(guò)最好的產(chǎn)品。而且它已經(jīng)持續(xù)發(fā)展了二十多年,依然保持活力,這一點(diǎn)讓我非常自豪。真正能做到這種生命周期的軟件產(chǎn)品其實(shí)非常少見。當(dāng)然這些年我們也嘗試了很多其他項(xiàng)目,也取得了一些不錯(cuò)的成績(jī)。比如 2020 年我們發(fā)布了郵件服務(wù) HEY.com,現(xiàn)在回頭看,這其實(shí)是一個(gè)相當(dāng)瘋狂的決定。

因?yàn)殡娮余]件市場(chǎng)幾乎被 Google 的 Gmail 完全統(tǒng)治了。雖然 Gmail 已經(jīng) 17 年幾乎沒(méi)什么變化,但它依然是一個(gè)非常穩(wěn)定、可靠的產(chǎn)品,而且很多人用得挺滿意的。甚至很多人同時(shí)抱著一種奇怪的矛盾心理:一邊說(shuō)“我討厭郵件”,一邊卻完全沒(méi)有意識(shí)到自己其實(shí)是在討厭 Gmail。

但我們還是決定做一個(gè)真正意義上的競(jìng)爭(zhēng)產(chǎn)品。而這個(gè)領(lǐng)域的市場(chǎng)集中度可能是我能想到所有軟件類別里最高的之一。在美國(guó),Gmail 的郵件流量占比大概接近 85%,也可能是 80%,總之就是極高——基本就是 Gmail 加上一點(diǎn)點(diǎn)其他服務(wù)的組合。

我自己從 Gmail 發(fā)布不久后就開始使用它,當(dāng)時(shí)還需要邀請(qǐng)碼,那其實(shí)是一次非常聰明的發(fā)布策略。從那之后我差不多用了 17 年 Gmail。在這段時(shí)間里,我逐漸積累了大量對(duì)它“不太滿意”的地方,于是我們把這些想法全部投入到了一個(gè)全新的產(chǎn)品里。

我們花了接近兩年時(shí)間開發(fā) HEY,投入了數(shù)百萬(wàn)美元研發(fā)資金,并在 2020 年夏天正式上線——順便說(shuō)一句,那真不是一個(gè)發(fā)布新產(chǎn)品的理想年份。我們當(dāng)時(shí)甚至在想:“能不能找一周,全世界稍微正常一點(diǎn)?”結(jié)果最后終于挑了一周上線,然后立刻迎來(lái)了和 Apple 的一場(chǎng)正面沖突。

主持人:我記得那件事。Apple 當(dāng)時(shí)拒絕批準(zhǔn)你們的應(yīng)用上線。

DHH:沒(méi)錯(cuò)。他們要求我們必須支付 30% 的“過(guò)路費(fèi)”,否則就不允許進(jìn)入 App Store。對(duì)于一個(gè)郵件產(chǎn)品來(lái)說(shuō),這幾乎等于判了死刑——因?yàn)槟惚仨毚嬖谟谑謾C(jī)平臺(tái)上,而且更具體地說(shuō),是必須存在于 iPhone 上。

直到今天,大多數(shù) HEY 的付費(fèi)用戶仍然是 iPhone 用戶,因?yàn)槊绹?guó)既是最大的高收入市場(chǎng),而 iPhone 又是這個(gè)市場(chǎng)最主流的平臺(tái)。所以如果不能進(jìn)入 iPhone,這個(gè)業(yè)務(wù)根本不可能成立。

我們和 Apple 來(lái)回拉扯了兩周,最終時(shí)間點(diǎn)剛好卡在 WWDC 前后。Apple 大概也不太希望在開發(fā)者大會(huì)期間看起來(lái)像是一個(gè)巨人碾壓小開發(fā)者,于是最后他們調(diào)整了規(guī)則,讓我們得以上線。

這當(dāng)然算不上徹底勝利,但至少讓我們活了下來(lái)。而且結(jié)果挺有意思:HEY 最終獲得了巨大成功,其中一個(gè)重要原因反而是 Apple 給了我們整整兩周的“全媒體曝光”。

現(xiàn)在回頭看,如果當(dāng)時(shí)讓我重新選擇,我可能不會(huì)冒這個(gè)險(xiǎn)。因?yàn)榱硪环N可能的結(jié)局是:Apple 拒絕上線,我們只獲得 200 個(gè)用戶,然后產(chǎn)品直接死亡。但現(xiàn)實(shí)情況是,他們反而給了我們一次價(jià)值數(shù)百萬(wàn)美元級(jí)別的免費(fèi)宣傳,我們?cè)谧畛鯉字芫瞳@得了數(shù)萬(wàn)用戶注冊(cè)。那是一段瘋狂但又非常令人滿足的經(jīng)歷。

更重要的是,我自己真的非常喜歡 HEY。我每天都在用它。Web 應(yīng)用里我用得最多的是 Basecamp——那是我們協(xié)作工作的核心平臺(tái)。但排在第二位的幾乎總是 HEY,甚至很多時(shí)候它是第一位,因?yàn)槲颐刻齑罅繒r(shí)間都在處理郵件、寫郵件、溝通事情。

當(dāng)郵件環(huán)境變得舒適而愉快時(shí),整個(gè)工作體驗(yàn)都會(huì)改變。而 Gmail 的一個(gè)問(wèn)題是:世界上任何陌生人都可以直接讓你的手機(jī)震動(dòng),只要默認(rèn)通知開啟。這件事在我看來(lái)其實(shí)非?;闹嚒扔谑侨魏稳硕伎梢酝阕钪匾娜蝿?wù)列表里插入內(nèi)容。

HEY 的設(shè)計(jì)理念正好相反。它有一個(gè) Screener 機(jī)制,在你明確允許之前,沒(méi)有人可以進(jìn)入你的收件箱。而且大多數(shù)時(shí)候,我其實(shí)都會(huì)選擇拒絕。流程很簡(jiǎn)單:點(diǎn)個(gè) 我愿意聽這個(gè)人的郵件;點(diǎn)個(gè) 以后永遠(yuǎn)別再聯(lián)系我。

主持人:我就是這么聯(lián)系到你的。我不確定我們是不是在 X 上互相關(guān)注,但我直接給你發(fā)郵件,然后 Screener 給了我通過(guò)。

DHH:因?yàn)?Screener 就是我本人在看,并沒(méi)有 AI 替我判斷是否要回復(fù)誰(shuí)。事實(shí)證明,每天花一點(diǎn)時(shí)間處理 Screener 并不麻煩,因?yàn)槭澜缟险嬲枰貜?fù)的人其實(shí)沒(méi)有那么多。如果你把那些煩人的銷售郵件擋在外面——那些在 Gmail 里可以連續(xù)給你發(fā)七封郵件的人——工作量馬上就下降了,而且體驗(yàn)會(huì)變得非常愉快。

以前我用 Gmail 時(shí),經(jīng)常會(huì)被一種銷售策略“套住”:比如你禮貌地回復(fù)一句“謝謝,不感興趣”,對(duì)方就會(huì)繼續(xù)發(fā)第二封郵件。這時(shí)候你就開始猶豫:我是不是還得再回復(fù)一次?很多時(shí)候你甚至真的會(huì)回復(fù)。但就算你不回復(fù),他們依然可以繼續(xù)聯(lián)系你——因?yàn)樗麄兊姆蛛A段式營(yíng)銷(Drip Campaign) 從來(lái)就不是一封郵件,而是七封起步。如果你表現(xiàn)出任何一點(diǎn)回應(yīng)跡象,那可能就變成 52 封。

而在 HEY 里,我只需要點(diǎn)一次 ,就永遠(yuǎn)不會(huì)再收到這個(gè)人的郵件。這種體驗(yàn)非常爽,就像把花園里的雜草一下清理干凈,剩下的全是花。突然之間,郵件不再是負(fù)擔(dān),而變成你愿意打開的東西。

這其實(shí)就是我們開發(fā) HEY 的核心目標(biāo):讓人重新愛上郵件。

很多人討厭郵件,并不是因?yàn)猷]件本身,而是因?yàn)楝F(xiàn)有系統(tǒng)太糟糕了。最初電子郵件協(xié)議設(shè)計(jì)時(shí)的假設(shè)是:這是大學(xué)里的科學(xué)家之間互相通信的工具,而科學(xué)家通常都很有禮貌,不會(huì)給你發(fā) 52 封銷售郵件。但當(dāng)它進(jìn)入現(xiàn)實(shí)世界之后,你很快就發(fā)現(xiàn)事情不是這樣——尤其當(dāng)銷售人員出現(xiàn)之后,你就需要更強(qiáng)的防御機(jī)制。

對(duì)我們來(lái)說(shuō),HEY 就是這種防御機(jī)制,它讓人可以重新喜歡郵件。而且我認(rèn)為擁有一個(gè)強(qiáng)大的“為什么要做這件事”的理由非常重要。這可以追溯到 Viktor Frankl 的觀點(diǎn):當(dāng)你找到“為什么”,就更容易忍受過(guò)程中的困難。構(gòu)建軟件本身很多時(shí)候確實(shí)既冷冰冰又麻煩又令人沮喪,但如果你知道自己為什么在做這件事,一切就會(huì)變得更容易堅(jiān)持。

主持人:如果換個(gè)角度,從開發(fā)者視角來(lái)看,你能具體講講 HEY 當(dāng)時(shí)是怎么構(gòu)建出來(lái)的嗎?你剛才提到花了兩年時(shí)間,那最開始是不是只有一兩個(gè)人在做?我猜你們肯定大量使用了 Ruby on Rails,也可能有一些原生開發(fā)部分。

但兩年這個(gè)時(shí)間聽起來(lái)還是挺長(zhǎng)的,尤其考慮到你們公司規(guī)模不大,而且團(tuán)隊(duì)又很強(qiáng)。很多開發(fā)者第一反應(yīng)可能是:“兩年?一個(gè)高手團(tuán)隊(duì)?這不是周末項(xiàng)目嗎?”——這幾乎是 Hacker News 評(píng)論區(qū)的經(jīng)典句式,比如當(dāng)年 Dropbox 發(fā)布時(shí)也有人說(shuō)“我周末就能寫一個(gè)”。所以我挺好奇,到底是什么讓這個(gè)過(guò)程花了這么久?

DHH:我完全理解這種反應(yīng),因?yàn)槲易约阂灿羞@種本能。開發(fā)者常常會(huì)覺得自己無(wú)所不能,好像任何東西都能很快做出來(lái)。事實(shí)上,你確實(shí)可以很快做出一個(gè)原型——今天甚至不用一個(gè)周末,幾個(gè)小時(shí)就夠了,啟動(dòng)一個(gè) agent 就能搞定。

但真正耗時(shí)間的,從來(lái)不是“能不能做出來(lái)”,而是到底應(yīng)該做什么。而要把一個(gè)東西打磨到值得發(fā)布的程度,往往還需要更長(zhǎng)時(shí)間。至少對(duì)我們來(lái)說(shuō)是這樣,我覺得所有認(rèn)真做產(chǎn)品的人大概都是這樣。

HEY 最初的技術(shù)實(shí)現(xiàn)其實(shí)只有我一個(gè)人參與。事實(shí)上,我們大多數(shù)重要產(chǎn)品都是這樣開始的:要么只有我一個(gè)開發(fā)者,要么再加一個(gè)人,總之都是一個(gè)非常非常小的團(tuán)隊(duì),先把產(chǎn)品的形狀摸出來(lái),把架構(gòu)方向搞清楚,然后才逐步擴(kuò)大規(guī)模。

我一直覺得,如果方向還不清晰,就往項(xiàng)目里堆人,反而會(huì)讓進(jìn)度變慢。因?yàn)楫?dāng)你不知道自己要做什么時(shí),再多的人也幫不上忙。你必須先弄清楚目標(biāo)是什么。

當(dāng)然,這一點(diǎn)最近因?yàn)?AI 的進(jìn)步正在發(fā)生變化——現(xiàn)在確定“我要做什么”這件事的速度正在明顯提升。但在 HEY 當(dāng)時(shí)的階段,最初是我,然后是 Jason,再加上一兩位設(shè)計(jì)師,一個(gè)非常小的團(tuán)隊(duì),一起慢慢摸索產(chǎn)品形態(tài)。

如果你要挑戰(zhàn) Gmail,就不能只是做一個(gè)“藍(lán)色版本的 Gmail”。那沒(méi)有人會(huì)感興趣。你必須做出真正新的東西,而且不僅要新,還必須好——要解決那些用戶甚至還沒(méi)意識(shí)到自己存在的問(wèn)題。

很多人說(shuō)“我討厭郵件”,但正如我們前面討論過(guò)的,我的判斷是:他們其實(shí)討厭的是 Gmail,以及所有那種默認(rèn)任何人都能直接進(jìn)入你收件箱的舊式郵件系統(tǒng)。找到這個(gè)真正的問(wèn)題形態(tài),本身就需要時(shí)間,而這個(gè)探索過(guò)程其實(shí)也挺有意思,因?yàn)槟闶窃谫Y源有限的情況下不斷試探邊界。

Basecamp 當(dāng)年也是一樣的路徑——技術(shù)上最初只有我一個(gè)人參與。這里面其實(shí)也體現(xiàn)了一些 Shape Up( Basecamp 提出的產(chǎn)品開發(fā)方法論)的思路:設(shè)計(jì)師不僅要決定產(chǎn)品長(zhǎng)什么樣,還要決定它應(yīng)該怎么運(yùn)作。產(chǎn)品必須是漂亮的、獨(dú)特的、有吸引力的,而這些都需要時(shí)間。

更重要的是,要找到產(chǎn)品的“重心”在哪里,最核心的部分是什么,然后圍繞這個(gè)核心不斷拆解結(jié)構(gòu)。我們所有大型產(chǎn)品基本都是這樣開始的:一個(gè)開發(fā)者,加一兩個(gè)設(shè)計(jì)師,先持續(xù)推進(jìn),一點(diǎn)一點(diǎn)打磨,直到某一刻突然出現(xiàn)“對(duì)了,就是這個(gè)”的感覺。

一旦進(jìn)入這個(gè)階段,我們才會(huì)逐步增加人手。當(dāng)項(xiàng)目大約完成到 80% 左右時(shí),整體地形已經(jīng)清晰了,這時(shí)候再讓更多人加入,推進(jìn)速度反而會(huì)明顯加快。

主持人:這點(diǎn)其實(shí)挺有意思,而且很多人可能不會(huì)意識(shí)到它的重要性。因?yàn)樵诖蠖鄶?shù)融資型創(chuàng)業(yè)公司,或者像 Uber、Facebook 這樣的公司里,項(xiàng)目通常是產(chǎn)品經(jīng)理先寫 spec,可能配一個(gè)設(shè)計(jì)師,然后開發(fā)者后期才加入。但你們的方式是:一兩個(gè)設(shè)計(jì)師加一個(gè)開發(fā)者,從一開始就一起推進(jìn)。而且你們最近還剛招了一位設(shè)計(jì)師 Zoltan,我也跟他聊過(guò),他很厲害。我感覺你們對(duì)設(shè)計(jì)師的理解方式和行業(yè)主流其實(shí)挺不一樣的。

DHH:確實(shí)不一樣。在 37signals,設(shè)計(jì)師不是來(lái)“把 spec 做漂亮”的,而是來(lái)決定 spec 應(yīng)該是什么的。

某種意義上,他們其實(shí)也是產(chǎn)品經(jīng)理。他們負(fù)責(zé)回答“為什么這樣做”和“應(yīng)該怎么做”這些問(wèn)題。有時(shí)候這些判斷來(lái)自用戶反饋,有時(shí)候來(lái)自直覺,但最終都會(huì)被提煉成:我們到底要做什么,以及這個(gè)東西應(yīng)該如何運(yùn)作。

除此之外,他們還直接參與實(shí)現(xiàn)。他們負(fù)責(zé)寫 CSS,寫 HTML,經(jīng)常也會(huì)參與 JavaScript,甚至 Ruby 代碼。現(xiàn)在有了 agent 加速之后,他們甚至可以直接完成完整實(shí)現(xiàn)流程——至少可以做出一個(gè)接近最終形態(tài)的版本。

不過(guò)我也承認(rèn),我們?cè)谶@一點(diǎn)上確實(shí)比較特殊。因?yàn)楹芏鄟?lái)自其他公司的設(shè)計(jì)師,并不習(xí)慣同時(shí)戴三頂帽子:產(chǎn)品經(jīng)理、設(shè)計(jì)師和實(shí)現(xiàn)者。但當(dāng)一個(gè)人同時(shí)兼具這三種角色時(shí),他就會(huì)真正了解自己所使用的“材料”——知道它們能如何延展,知道“接縫”該怎么裁,于是也就能更自然地順應(yīng)互聯(lián)網(wǎng)的底層肌理來(lái)工作。

如果你直接寫 CSS、直接寫 HTML,你對(duì)這個(gè)媒介的理解就會(huì)完全不同。這就像珠寶設(shè)計(jì)師必須了解黃金的物理特性,建筑師必須理解結(jié)構(gòu)受力原理一樣。雖然他們不會(huì)親自澆筑混凝土,但理解材料本身會(huì)極大影響設(shè)計(jì)質(zhì)量。

DHH:順便說(shuō)一句,這也是為什么像 Daring Fireball 的 Gruber 這樣的老派 Mac 用戶會(huì)對(duì) Apple 最近的發(fā)展方向感到失望。因?yàn)?Apple 曾經(jīng)代表的是那種極致精致的原生 Mac 應(yīng)用,而這種東西現(xiàn)在幾乎已經(jīng)消失了。

現(xiàn)在很多應(yīng)用都是 Electron,本質(zhì)上就是“把網(wǎng)頁(yè)裝進(jìn)一個(gè)盒子里”。當(dāng)然 Electron 也被罵得太狠了——很多問(wèn)題其實(shí)是實(shí)現(xiàn)質(zhì)量的問(wèn)題,而不是技術(shù)本身的問(wèn)題。但大家真正失望的是:原生應(yīng)用那種“真實(shí)感”正在消失。

一個(gè)應(yīng)用到底是“原生的”還是“合成的”,用戶其實(shí)是能感覺出來(lái)的。而今天越來(lái)越多東西看起來(lái)都是合成出來(lái)的,而不是自然生長(zhǎng)出來(lái)的。

Web 世界稍微好一點(diǎn),因?yàn)檫@是一個(gè)更大的平臺(tái),也有更多人關(guān)注質(zhì)量。但在大型公司里,這種設(shè)計(jì) - 實(shí)現(xiàn)一體化的模式仍然非常少見。不過(guò)我覺得這種情況正在改變,因?yàn)?agent 加速正在讓設(shè)計(jì)師具備更強(qiáng)的實(shí)現(xiàn)能力。

DHH:其實(shí)程序員這邊也是一樣的。當(dāng)年我說(shuō) Basecamp 發(fā)布時(shí)只有我一個(gè)開發(fā)者,很多人覺得這不現(xiàn)實(shí),甚至有人覺得這是在吹?!麄冋J(rèn)為沒(méi)有大團(tuán)隊(duì)就不可能做出真正重要的產(chǎn)品。

但我的判斷從一開始就是:那只是因?yàn)槟氵€沒(méi)用過(guò) Ruby on Rails,還沒(méi)體驗(yàn)過(guò)更好的工具帶來(lái)的加速效果。而現(xiàn)在大家終于意識(shí)到:如果再疊加 agent 加速,一個(gè)人確實(shí)可以構(gòu)建非常有價(jià)值的軟件系統(tǒng)。

看到整個(gè)行業(yè)慢慢朝“小團(tuán)隊(duì)更高效”的方向轉(zhuǎn)變,其實(shí)挺有意思的。因?yàn)楫?dāng)溝通成本按指數(shù)級(jí)增長(zhǎng)時(shí),小團(tuán)隊(duì)的優(yōu)勢(shì)會(huì)越來(lái)越明顯。而 agent 加速正在改變的其中一個(gè)關(guān)鍵變量,就是初級(jí)工程師和高級(jí)工程師之間原有的協(xié)作關(guān)系。

“懷疑 AI”的軟件手藝人為什么開始擁抱 AI 工作流

主持人:我想先順著剛才的話題往前走一步。在深入討論之前,我其實(shí)有個(gè)感覺:你顯然非常重視軟件工程作為一種“手藝”(craft),這一點(diǎn)很明顯。但與此同時(shí),我也感覺你同樣非常重視設(shè)計(jì)本身——包括用戶體驗(yàn)、軟件設(shè)計(jì),甚至是那種“做出來(lái)的東西用起來(lái)是否舒服”的整體感覺。無(wú)論是軟件還是硬件,你似乎都把這些當(dāng)作一種手藝來(lái)看待,而且你在主動(dòng)尋找這種品質(zhì)。我這樣理解對(duì)嗎?

DHH:完全正確。我非常認(rèn)同這一點(diǎn)。在我看來(lái),美感本身就意味著某種程度上的“正確”。當(dāng)一個(gè)東西是美的,它往往也是對(duì)的。這一點(diǎn)在數(shù)學(xué)里成立,在物理里成立,在很多領(lǐng)域里都成立。當(dāng)你抵達(dá)一種正確的審美狀態(tài)時(shí),往往意味著你已經(jīng)接近某種更深層的正確性。

我們其實(shí)都有一種直覺,會(huì)引導(dǎo)我們走向這種美,因?yàn)檫@種美通常同時(shí)意味著正確、意味著高貴,也意味著值得追求。而且我還相信,美本身會(huì)讓人更幸福。被設(shè)計(jì)良好、運(yùn)行順暢、外觀優(yōu)雅的物品包圍,是幸福感的重要來(lái)源之一。

反過(guò)來(lái)說(shuō)也是成立的:當(dāng)你周圍的一切都運(yùn)轉(zhuǎn)糟糕時(shí),那種焦慮和挫敗感會(huì)迅速累積。比如系統(tǒng)卡頓、觸控失靈、設(shè)備動(dòng)不動(dòng)就要重啟;又比如你打電話給旅行代理,對(duì)方卻說(shuō)系統(tǒng)不支持,因?yàn)楹笈_(tái)還是一套古老又僵硬的 COBOL 系統(tǒng)——這樣的世界其實(shí)到處都是。

現(xiàn)實(shí)世界里不僅存在“劣化”(原本不錯(cuò)的系統(tǒng)變?cè)悖?,還存在大量從一開始就很糟糕的系統(tǒng)。我認(rèn)為這其實(shí)已經(jīng)成為一種文明層面的倦怠來(lái)源。如果我們身邊能有更多設(shè)計(jì)優(yōu)美的物件、更多結(jié)構(gòu)優(yōu)雅的系統(tǒng),人類整體的幸福感真的會(huì)提高。

而這里說(shuō)的“美”,不僅指外在視覺層面的美,同樣也包括內(nèi)部結(jié)構(gòu)層面的美。對(duì)我來(lái)說(shuō),這兩者通常是統(tǒng)一的。Steve Jobs 當(dāng)年為什么那么在意電路板布局?因?yàn)樗庇X上知道:在意電路板布局的人,也一定會(huì)在意用戶界面的細(xì)節(jié),也一定會(huì)在意打開外殼時(shí)的手感和體驗(yàn)。所以我覺得,如果你本身對(duì)這種審美敏感——而我認(rèn)為幾乎所有人其實(shí)都有,只是意識(shí)程度不同——那你自然會(huì)希望讓一切都變得更優(yōu)雅、更協(xié)調(diào)、更美。

對(duì)我來(lái)說(shuō),Ruby 就是一門非常關(guān)鍵的語(yǔ)言,因?yàn)樗軐懗鑫艺J(rèn)為最優(yōu)雅的代碼。說(shuō)實(shí)話,在這方面幾乎沒(méi)有什么競(jìng)爭(zhēng)對(duì)手。確實(shí)也有一些語(yǔ)言在某種意義上是優(yōu)雅的,比如 Smalltalk,我就非常欣賞它的極簡(jiǎn)之美,但它不是我想長(zhǎng)期居住的“房子”。Ruby 才是我愿意住進(jìn)去的那棟房子。它既有審美上的一致性,同時(shí)又不像很多語(yǔ)言那樣被僵硬的理念束縛住。這其實(shí)是非常罕見的一種特質(zhì)。

當(dāng)然,這種對(duì)美的執(zhí)著通常也有代價(jià)。很多人在這方面走得很深之后,會(huì)變得有些狹隘,這是一種常見的副作用。但我覺得 Ruby 在這里取得了一種很難得的平衡:既保持開放的表達(dá)空間,同時(shí)又高度關(guān)注代碼本身的優(yōu)雅結(jié)構(gòu)。

總體來(lái)說(shuō),我認(rèn)為我們必須使用美的工具,也必須創(chuàng)造美的系統(tǒng),還必須設(shè)計(jì)流暢自然的交互體驗(yàn)。這正是我們作為“手藝人”應(yīng)該追求的目標(biāo)——不斷打磨它,直到?jīng)]有任何毛刺為止。

主持人:我們正好可以聊聊這個(gè)話題。不過(guò)在進(jìn)入之前,我其實(shí)想先問(wèn)一個(gè)更基礎(chǔ)的問(wèn)題:AI 到底是怎么改變你的工作方式的?它又是如何影響你對(duì)軟件這門“手藝”的理解?

畢竟你在 37signals 招的人,也和你一樣,既重視設(shè)計(jì)、又重視軟件開發(fā)這門手藝的質(zhì)量。我很好奇,AI 有沒(méi)有改變你從這門“手藝”里得到的東西?AI 在哪些方面讓這件事變得更好了,哪些方面有可能讓它變差了?我想先從你的看法變化聊起。

你上一次比較系統(tǒng)地談這個(gè)問(wèn)題,還是在 Lex Fridman 的播客里。當(dāng)時(shí)你對(duì) AI 其實(shí)還是挺懷疑的——當(dāng)然那時(shí)候工具也確實(shí)不夠成熟。但現(xiàn)在情況已經(jīng)明顯不一樣了。

DHH:這個(gè)問(wèn)題其實(shí)有點(diǎn)微妙,甚至可能聽起來(lái)像是在替自己辯護(hù),但我真的覺得:我的觀點(diǎn)本身并沒(méi)有改變,改變的是現(xiàn)實(shí)條件和客觀事實(shí)。

從 ChatGPT 發(fā)布那一刻起,我就已經(jīng)意識(shí)到我們面對(duì)的是一種全新的東西,而且它注定會(huì)改變很多事情?;仡^看計(jì)算機(jī)科學(xué)的發(fā)展時(shí)間線,我認(rèn)為 ChatGPT 的發(fā)布顯然屬于那種必須標(biāo)記出來(lái)的重要節(jié)點(diǎn)之一——那種“以后回頭看一定會(huì)說(shuō),這是轉(zhuǎn)折點(diǎn)”的事件。

第一次看到人們可以用這種方式與計(jì)算機(jī)交互,而且還能看到它們進(jìn)行某種形式的“推理”(雖然這個(gè)詞是否準(zhǔn)確仍有爭(zhēng)議),對(duì)我來(lái)說(shuō)已經(jīng)足夠說(shuō)明問(wèn)題:這些系統(tǒng)真的非常聰明,在很多方面甚至比我更聰明。至于這種聰明來(lái)自權(quán)重、來(lái)自數(shù)據(jù)、還是來(lái)自別的什么,其實(shí)并不重要。我們甚至都還搞不清楚人類意識(shí)和智慧是怎么工作的,所以沒(méi)必要對(duì)“什么才算智能”下過(guò)于武斷的定義。

但問(wèn)題在于早期模型的使用方式讓我非常不舒服。那時(shí)候主流形態(tài)還是自動(dòng)補(bǔ)全,比如 Copilot 或 Cursor 在編輯器里不斷猜你下一步要寫什么字符。這種體驗(yàn)對(duì)我來(lái)說(shuō)非常煩躁,就像我們正在對(duì)話,而你卻一直打斷我:“是不是這個(gè)意思?是不是這個(gè)意思?”我當(dāng)時(shí)的反應(yīng)基本就是:能不能讓我先把一句話說(shuō)完?

即使它偶爾確實(shí)能提升效率,但錯(cuò)誤率太高了,這種“加速”反而更像是一種干擾。哪怕整體算下來(lái)可能是正收益,對(duì)我來(lái)說(shuō)也完全談不上愉快體驗(yàn)?;蛘咭部赡苁俏曳艞壍锰?,但無(wú)論如何,我當(dāng)時(shí)并不喜歡這種方式。我覺得模型還不夠好,而自動(dòng)補(bǔ)全這種交互方式本身也很糟糕。甚至有一段時(shí)間,我還短暫地對(duì)整個(gè)行業(yè)的發(fā)展方向產(chǎn)生了一點(diǎn)悲觀情緒。我以為未來(lái)大家都會(huì)變成那種不停按 Tab 鍵的人,而我真的不想變成那樣。

主持人:我記得 Cursor 當(dāng)時(shí)還送過(guò)一個(gè)“Tab 鍵”周邊。

DHH:對(duì),那感覺真的挺反烏托邦的。我當(dāng)時(shí)甚至想起《辛普森一家》里有一集:Homer 把一只機(jī)械小鳥放在鍵盤上,讓它不斷幫自己按回車鍵。結(jié)果突然出現(xiàn)核反應(yīng)堆過(guò)載警報(bào),小鳥還是繼續(xù)按回車,最后整個(gè)系統(tǒng)爆炸了。那一刻我真的覺得:這畫面太貼切了?!缎疗丈患摇饭皇裁炊碱A(yù)言到了。

但無(wú)論如何,我當(dāng)時(shí)并不喜歡這種使用方式。雖然我依然對(duì)整體發(fā)展方向保持樂(lè)觀,因?yàn)樗_實(shí)令人驚嘆。最早讓我真正感到價(jià)值的,其實(shí)是把 ChatGPT 當(dāng)作導(dǎo)師或者結(jié)對(duì)編程伙伴使用——不是替我寫代碼,而是幫我理解代碼。

比如我可以問(wèn)它:“這段代碼為什么這樣工作?”、“這里的問(wèn)題在哪里?”這其實(shí)就是我一直以來(lái)使用互聯(lián)網(wǎng)的方式。從 Google 時(shí)代開始就是這樣:看到報(bào)錯(cuò)信息就去搜索,在 Stack Overflow 上找答案,有時(shí)候還能看到一些帶點(diǎn)攻擊性的評(píng)論,但最終總能找到解決方案。而 ChatGPT 的不同之處在于,它往往能給出非常好的解釋。

主持人:我之前和游戲開發(fā)者 Jonas Tyroller 聊過(guò)類似問(wèn)題。他當(dāng)時(shí)的做法是直接關(guān)閉 IDE 里的自動(dòng)補(bǔ)全,只在需要時(shí)主動(dòng)去 ChatGPT 提問(wèn)。這樣他就能保持一整天都在“專注區(qū)”,只有真正需要幫助時(shí)才切換模式。聽起來(lái)你當(dāng)時(shí)的體驗(yàn)也很類似。

DHH:完全一樣。我當(dāng)時(shí)確實(shí)擔(dān)心未來(lái)大家都會(huì)變成那只不停按鍵的小鳥,而我并不想成為那只小鳥。我甚至一度想:那我是不是應(yīng)該改行去種土豆?畢竟丹麥在這方面?zhèn)鹘y(tǒng)悠久。

不過(guò)后來(lái)事情發(fā)生了變化,而且是兩個(gè)關(guān)鍵變化:

  • 一是 Agent 模式的出現(xiàn),逐漸成熟并開始真正形成影響力。隨著 Agent Harness 的出現(xiàn),AI 不再只是回答問(wèn)題,而是獲得了工具:它可以調(diào)用 bash,可以操作終端,可以訪問(wèn)互聯(lián)網(wǎng),可以主動(dòng)獲取上下文信息。這時(shí)我們才真正從“AI”進(jìn)入“Agent”階段。

  • 二是模型能力本身的躍遷。對(duì)我來(lái)說(shuō),像 Opus 4.5 這樣的模型是另一個(gè)明顯的時(shí)間節(jié)點(diǎn)。那是第一個(gè)讓我持續(xù)、穩(wěn)定地被輸出質(zhì)量震驚的模型。無(wú)論是分析能力,還是在模糊輸入條件下生成代碼的能力,都達(dá)到了新的水平。更關(guān)鍵的是,它生成的代碼往往可以直接合并進(jìn)項(xiàng)目,而幾乎不需要修改。即使需要調(diào)整,只要我告訴它一次,它下次就不會(huì)再犯同樣的錯(cuò)誤。

這兩個(gè)變化疊加在一起,才真正構(gòu)成了轉(zhuǎn)折點(diǎn)。

當(dāng)然,對(duì)我來(lái)說(shuō)還有一個(gè)額外門檻,因?yàn)槲业臉?biāo)準(zhǔn)本來(lái)就很高。我們剛才也討論過(guò),我對(duì)代碼的審美要求非常嚴(yán)格。如果 Agent 生成的 Ruby 代碼達(dá)不到我的水平,我是不會(huì)合并的,就像我不會(huì)合并一個(gè)還沒(méi)完全掌握?qǐng)F(tuán)隊(duì)風(fēng)格的初級(jí)工程師寫的代碼一樣。

早期模型確實(shí)能生成可運(yùn)行的軟件,而且已經(jīng)很驚人了。我記得第一次讓它生成一個(gè)貪吃蛇游戲時(shí),我真的震驚了——那是我從六歲開始就想做的事情,而它只花了三十秒就完成了。復(fù)制 HTML、運(yùn)行、完成,簡(jiǎn)直像魔法一樣。但即便如此,真正適合長(zhǎng)期使用的工作形態(tài),其實(shí)花了一段時(shí)間才出現(xiàn)。對(duì)我來(lái)說(shuō),真正的轉(zhuǎn)折點(diǎn)就是基于終端界面的 Agent Harness 出現(xiàn)的時(shí)候。從那一刻開始,它不再只是“一個(gè)可以聊聊天的工具”,而變成了“我真的愿意讓它寫代碼的工具”。

深度使用 Agent-First 工作流

DHH:現(xiàn)在我開始任何新項(xiàng)目,默認(rèn)都是Agent-First。這是一個(gè)非常巨大的變化,而且?guī)缀跏窃谝凰查g發(fā)生的。對(duì)我來(lái)說(shuō),大概就是 Opus 4.5 發(fā)布那一天,也就是去年 11 月 27 日左右。

當(dāng)然,也有人認(rèn)為轉(zhuǎn)折點(diǎn)其實(shí)來(lái)得更早,比如從 Opus 4.0 或 Sonnet 3.7 開始。但總體來(lái)說(shuō),行業(yè)內(nèi)確實(shí)存在某種共識(shí):真正的轉(zhuǎn)折點(diǎn),大概出現(xiàn)在去年 11 月底到 12 月初。

當(dāng)時(shí)正值冬季假期,大多數(shù)科技公司基本都停擺了兩周。很多人開始拿那些一直擱置、始終沒(méi)做完的 side project 來(lái)試這些新工具。本來(lái)想著反正也做不完,結(jié)果卻突然發(fā)現(xiàn):居然真做出來(lái)了。那種感覺就像電影里突然響起一段磁帶倒轉(zhuǎn)聲——“等等,剛才發(fā)生了什么?”

某種意義上,這是一場(chǎng)分散發(fā)生、卻又高度同步的集體震驚。每個(gè)人都是單獨(dú)經(jīng)歷到它的,但感受到的沖擊卻出奇一致。等到一月份大家回到公司,尤其是那些原本已經(jīng)不怎么在一線寫代碼的 CTO 和資深工程師,也開始上手體驗(yàn)這些工具,然后回來(lái)直接說(shuō):“你們必須用這個(gè)。我已經(jīng)看見未來(lái)了?!?/p>

那種感覺有點(diǎn)像新一代硬件剛出現(xiàn)的時(shí)候:別人把設(shè)備遞到你手里,對(duì)你說(shuō),“你得親自試一下,不然你不會(huì)信?!倍@種體驗(yàn)本身,確實(shí)很難用語(yǔ)言準(zhǔn)確傳達(dá)。如果你還沒(méi)經(jīng)歷過(guò)那個(gè)“啊哈時(shí)刻”,光聽別人講其實(shí)是很難被說(shuō)服的。你得自己坐下來(lái),用一個(gè) Agent Harness——比如 OpenCode——配上一個(gè)前沿模型,親手試一次。

如果還有人沒(méi)試過(guò),我會(huì)建議他們現(xiàn)在就去試,而且不需要有那種“如果我現(xiàn)在還沒(méi)學(xué)會(huì) AI 就落后了”的焦慮。那種焦慮完全沒(méi)有必要。就算你現(xiàn)在開始學(xué),三周時(shí)間就足夠補(bǔ)上進(jìn)度。這其實(shí)也是 AI 時(shí)代一個(gè)很神奇的地方——很多過(guò)去必須按時(shí)間線逐步學(xué)習(xí)的東西,現(xiàn)在可以直接跳躍式跨越。比如去年春天大家都在討論 MCP,而現(xiàn)在你完全可以直接跳到 CLI 和 Agent 工作流。

當(dāng)然,我也承認(rèn)有些人確實(shí)更早看到了這一切。比如 Shopify 的 Toby Lütke,就是我認(rèn)識(shí)的人里最早意識(shí)到變化規(guī)模的人之一。他一直不斷給我發(fā)消息:“你看看這個(gè),你看看這個(gè)?!鄙磉呌羞@樣的人其實(shí)很重要。有些人的視線總是看得更遠(yuǎn),而我的視線通常更貼近眼前的路。有時(shí)候他們會(huì)看錯(cuò)方向,但這一次 Toby 看得非常準(zhǔn)確——兩年前就已經(jīng)看清趨勢(shì)了。而我是等到去年 12 月才真正意識(shí)到。

更有意思的是,在這之前我其實(shí)一直在說(shuō):“等模型足夠好之后,一切都會(huì)變得非常驚人?!敝皇俏耶?dāng)時(shí)以為這個(gè)時(shí)間點(diǎn)可能還要等 18 個(gè)月、兩年,甚至五年。誰(shuí)也很難預(yù)測(cè)這種拐點(diǎn)什么時(shí)候出現(xiàn)。甚至整個(gè)行業(yè)本身也沒(méi)預(yù)測(cè)到。但它就是發(fā)生了。而從那之后,我的日常工作方式完全改變了?,F(xiàn)在我的工作默認(rèn)就是Agent-First。

主持人:那你現(xiàn)在具體是怎么工作的?

DHH:現(xiàn)在幾乎所有事情我都是先從 Agent 開始。

我主要使用的是 OpenCode,偶爾也會(huì)用 Claude Code。不過(guò)他們因?yàn)樵缙趦?yōu)勢(shì)形成了一些生態(tài)鎖定,比如如果你想用 Max 訂閱,就必須使用他們自己的 harness。我覺得這其實(shí)是個(gè)錯(cuò)誤決定,不過(guò)先不展開說(shuō)這個(gè)。不管怎樣,我們還是應(yīng)該承認(rèn)一點(diǎn):Opus 現(xiàn)在確實(shí)是最強(qiáng)模型。對(duì)我來(lái)說(shuō),4.5 就是關(guān)鍵拐點(diǎn),而 4.6 也很不錯(cuò)。正因?yàn)樗@么強(qiáng),也激發(fā)了整個(gè)行業(yè)的競(jìng)爭(zhēng)。大家都在試圖追趕甚至超越它。

看看 Anthropic 的收入增長(zhǎng)就知道了:年初還是 9 億美元規(guī)模,幾周后變成 14 億,現(xiàn)在已經(jīng)接近 19 億。這種增長(zhǎng)速度幾乎是火箭級(jí)別的,自然會(huì)吸引大量資本進(jìn)入這個(gè)領(lǐng)域,這是一件好事。

當(dāng)然,我也并不是完全喜歡他們所有決策,就像我對(duì) Apple 也有很多意見一樣。但與此同時(shí),我始終還戴著另一頂帽子:我首先只是一個(gè)喜歡計(jì)算機(jī)的人。比如他們的新 Neo,我甚至可能會(huì)買一臺(tái)來(lái)試試;再比如 Opus 每月 500 美元的訂閱費(fèi),我也完全愿意付,因?yàn)樗_實(shí)值這個(gè)價(jià)。

實(shí)際上,現(xiàn)在只要遇到特別困難的問(wèn)題,我第一反應(yīng)就是:交給 Opus。當(dāng)然,我也不會(huì)只用一個(gè)模型。我現(xiàn)在的工作流通常是同時(shí)運(yùn)行兩個(gè)模型,而且速度不同、職責(zé)不同。

我的工作環(huán)境是這樣的:在 Omarchy 里我有一個(gè)布局模板,左側(cè)是 NeoVim 編輯器,右側(cè)是兩個(gè) Agent 窗口。上面運(yùn)行的是 OpenCode + Kimi K2.5,下面運(yùn)行的是 Claude Code + Opus。底部再留一條終端窗口。

我通常會(huì)先把任務(wù)交給其中一個(gè) Agent,讓它生成實(shí)現(xiàn)草稿,然后切回 NeoVim,看 diff。如果結(jié)果正確,我直接提交;如果不滿意,就自己修改。

真正讓我震驚的是這個(gè)比例變化的速度。去年 11 月初的時(shí)候,我的工作方式還是完全Code-First:先打開編輯器自己寫代碼,寫一段時(shí)間,如果卡住了或者想聽第二意見,再去問(wèn)模型?,F(xiàn)在已經(jīng)完全不是這樣了。我是先讓 Agent 寫草稿,然后我審閱草稿,必要時(shí)再修改。而就在最近,這個(gè)比例甚至又進(jìn)一步變化了。

比如我們現(xiàn)在正在為 Basecamp 開發(fā)一個(gè) CLI,讓 Agent 可以完整訪問(wèn) Basecamp——這件事本身就非常驚人。不過(guò)讓我稍微往前倒一點(diǎn)說(shuō):當(dāng)我真正意識(shí)到 Agent 已經(jīng)這么強(qiáng)大之后,我的第一反應(yīng)其實(shí)是抬頭往更遠(yuǎn)處看——我們是不是甚至不需要 MCP?不需要 CLI?什么都不需要?Agent 自己能不能搞定一切?

于是我安裝了 OpenClaw,在一臺(tái)虛擬機(jī)上跑起來(lái),然后開始做實(shí)驗(yàn)。我想看看它到底能做到什么程度。

我先試了一個(gè)最簡(jiǎn)單的想法:把它當(dāng)成一個(gè)普通用戶一樣邀請(qǐng)進(jìn)我們的產(chǎn)品里。我對(duì)它說(shuō):“去 fizzy.do 注冊(cè)一個(gè)賬號(hào)?!睕](méi)有給它任何工具,沒(méi)有 MCP,沒(méi)有 CLI,就只是告訴它網(wǎng)址。它開始執(zhí)行,然后回來(lái)告訴我:“注冊(cè)需要郵箱地址?!蔽也乓庾R(shí)到,對(duì),它沒(méi)有郵箱。于是我又說(shuō):“那你先去 hey.com 注冊(cè)一個(gè)郵箱。”

我當(dāng)時(shí)心想,這一步肯定失敗。結(jié)果它過(guò)了一會(huì)兒回來(lái)告訴我:“我已經(jīng)注冊(cè)好了,這是密碼,請(qǐng)保存好。我也已經(jīng)完成了 Fizzy 注冊(cè),并收到了確認(rèn)郵件。接下來(lái)要做什么?”

我當(dāng)時(shí)真的愣住了。它居然可以一次性完成整個(gè)瀏覽器注冊(cè)流程。當(dāng)然,也許這種能力在更早的模型里就已經(jīng)存在,比如 Sonnet 3,我也不確定。但當(dāng)你親眼看到它在你自己的環(huán)境里完成這些事情,那種沖擊是完全不同的。于是我繼續(xù)測(cè)試:既然它能注冊(cè) HEY,也能注冊(cè) Fizzy,那能不能讓它加入 Basecamp?

我給它發(fā)了一封邀請(qǐng)郵件,讓它加入我們 AI Labs 項(xiàng)目,并讓它介紹一下自己。它進(jìn)去之后寫了一段話:“大家好,我是 David 的助手,很高興認(rèn)識(shí)大家。我看了一些之前的討論,發(fā)現(xiàn)大家對(duì)這些事情都很興奮?!?/p>

我當(dāng)時(shí)又是一句:“等等,什么?”

雖然整個(gè)過(guò)程花了大概七分鐘——在 Agent 世界里,這已經(jīng)算挺久了——但它確實(shí)完成了。這讓我意識(shí)到一個(gè)可能的終局狀態(tài):未來(lái)的 Agent 不需要任何專門為它們準(zhǔn)備的接口,也不需要所謂“無(wú)障礙通道”。它們不會(huì)坐著輪椅進(jìn)來(lái),而是踩著仿生腿跑進(jìn)來(lái),而且速度可能是我們的五倍。

當(dāng)然,這個(gè)階段還沒(méi)到來(lái)。但我也不能坐在那里等 AGI 出現(xiàn)。所以我們要為“今天”構(gòu)建系統(tǒng)。這就是為什么我們現(xiàn)在在給 Basecamp 做 CLI,也會(huì)給 HEY 做 CLI,還會(huì)給 Fizzy 做 CLI,甚至可能包括一些老產(chǎn)品。

我之所以特別喜歡 CLI,一個(gè)重要原因是,它再次驗(yàn)證了 Unix 自 1971 年以來(lái)那套樸素卻強(qiáng)大的理念:把工具做小,再通過(guò)管道把它們組合起來(lái)。這其實(shí)就是 Unix 哲學(xué)的核心。真正的魔力并不在于“Basecamp 有了 CLI 之后更好用了”,而在于 GitHub 也有 CLI,Sentry 也許沒(méi)有 CLI,但有 MCP。于是,這些原本分散的系統(tǒng)就能夠被真正串聯(lián)起來(lái)。

現(xiàn)在,你可以直接對(duì) Agent 說(shuō):去 Sentry 看看報(bào)錯(cuò),寫一份分析報(bào)告發(fā)到 Basecamp,再去 GitHub 提交一個(gè) PR;做完之后,再回到 Basecamp 更新狀態(tài)。這樣一來(lái),Basecamp 就成了一個(gè)中央控制臺(tái),我們可以實(shí)時(shí)看到 Agent 正在推進(jìn)的整個(gè)工作流,而它則在后臺(tái)自動(dòng)查資料、寫代碼、推動(dòng)任務(wù)往前走。

這種體驗(yàn)其實(shí)很難只靠語(yǔ)言解釋清楚?,F(xiàn)在 YouTube 上已經(jīng)有不少 OpenClaw 的演示視頻,至少可以讓你先“坐在副駕上”感受一下。但最好的方式,還是親自上手:拿你自己的項(xiàng)目、你自己的任務(wù)、你自己的 prompt,完整跑一遍。

只要真正體驗(yàn)過(guò)一次,你幾乎一定會(huì)被“洗腦”——而且是同時(shí)生出兩種情緒:一方面會(huì)非常興奮,因?yàn)槲覀兙谷徽娴脑斐隽诉@樣的系統(tǒng);但另一方面,你也會(huì)隱約感到一絲焦慮,因?yàn)槟汩_始意識(shí)到,未來(lái)的變化可能會(huì)快得驚人。如果過(guò)去三個(gè)月已經(jīng)徹底改變了我對(duì)計(jì)算機(jī)能力的理解,那未來(lái)三個(gè)月會(huì)發(fā)生什么?九個(gè)月之后呢?十八個(gè)月之后呢?

AI 絕大多數(shù)收益流向資深工程師

主持人:我其實(shí)很長(zhǎng)時(shí)間都和你一樣,對(duì)預(yù)測(cè)未來(lái)保持謹(jǐn)慎態(tài)度。我更愿意相信已經(jīng)發(fā)生的事情,而不是推測(cè)未來(lái)。比如當(dāng)年大家都說(shuō)摩爾定律會(huì)永遠(yuǎn)持續(xù)下去,但后來(lái)它確實(shí)失效了——至少在單核層面上。

DHH:沒(méi)錯(cuò),不過(guò)后來(lái)大家只是換了一種方式繼續(xù)推進(jìn),比如開始做多核,現(xiàn)在 AMD 的芯片已經(jīng)可以做到 256 核了。即使單核性能增長(zhǎng)放緩,我們?nèi)匀煌ㄟ^(guò)功耗優(yōu)化、尺寸優(yōu)化等方式繼續(xù)推進(jìn)性能提升。所以現(xiàn)在確實(shí)很難說(shuō)“增長(zhǎng)就會(huì)停在這里”。訓(xùn)練規(guī)模還在持續(xù)擴(kuò)大,而且目前為止這種路徑仍然有效。

還有一篇我覺得特別值得一讀的文章,叫 《The Bitter Lesson》。這篇文章其實(shí)很短,但影響極大。它講的是一個(gè)許多人未必愿意輕易接受的事實(shí):我們總希望相信,自己的知識(shí)、經(jīng)驗(yàn)和訓(xùn)練方式是獨(dú)特且不可替代的;但現(xiàn)實(shí)往往并不完全如此。

不過(guò)有意思的是,在當(dāng)前這個(gè)時(shí)間點(diǎn)上,這種情況又呈現(xiàn)出一種新的分化:在 37signals 內(nèi)部,我看到利用 Agent 加速工作最成功的反而是最資深的工程師。因?yàn)樗麄兙邆渑袛嗄芰?,能夠判?Agent 生成的代碼是否真的適合部署到面向數(shù)百萬(wàn)用戶的系統(tǒng)中。

就在昨天還有一條新聞,說(shuō) Amazon 發(fā)生了一次比較嚴(yán)重的系統(tǒng)故障,而他們內(nèi)部的分析基本已經(jīng)得出一個(gè)結(jié)論:不能再允許初級(jí)程序員把 Agent 生成的代碼未經(jīng)審查直接部署到生產(chǎn)環(huán)境。

我覺得這其實(shí)正是整個(gè)行業(yè)現(xiàn)在普遍開始意識(shí)到的一件事:對(duì)于那些關(guān)鍵系統(tǒng)來(lái)說(shuō),目前我們還不能完全依賴 Agent,而初級(jí)工程師也還不具備足夠能力判斷 Agent 輸出是否可靠。于是初級(jí)工程師的角色在短短六個(gè)月里突然變得更加不穩(wěn)定了。

相反,資深工程師正在獲得巨大的加速能力。因?yàn)樗麄儾粌H可以同時(shí)和多個(gè) Agent 并行工作,更重要的是,他們能夠判斷 Agent 輸出的質(zhì)量,并對(duì)其是否適合上線形成高度可靠的判斷。如果方向不對(duì),他們還能及時(shí)糾正。

這其實(shí)正是他們之所以成為資深工程師的原因:他們擁有長(zhǎng)期經(jīng)驗(yàn)、系統(tǒng)視角以及架構(gòu)理解能力。他們本來(lái)就是在指導(dǎo)初級(jí)工程師,而現(xiàn)在,他們是在指導(dǎo) Agent。而 Agent 在執(zhí)行指令和接受修正方面,比人類初級(jí)工程師要快得多。

于是突然之間,一個(gè)資深工程師的個(gè)人產(chǎn)出能力可能提升 5 倍、10 倍。接下來(lái)就會(huì)出現(xiàn)一個(gè)二階效應(yīng):如果你把一個(gè)資深工程師的效率提升 10 倍,那么這個(gè)人每小時(shí)的價(jià)值也幾乎提升了 10 倍。

那接下來(lái)問(wèn)題來(lái)了——這一個(gè)小時(shí)應(yīng)該怎么用?是繼續(xù)用來(lái)驅(qū)動(dòng) Agent 寫更多代碼?還是像過(guò)去一樣,用來(lái)培養(yǎng)初級(jí)工程師?現(xiàn)在這個(gè)方程式正在發(fā)生變化,而它最終會(huì)如何收斂,目前還沒(méi)有答案。

當(dāng)然,也有一種可能性是:未來(lái) Agent 會(huì)變得足夠可靠,不再犯這些錯(cuò)誤,從能力上變成“資深工程師級(jí)別”的代碼生產(chǎn)者。

如果從更長(zhǎng)時(shí)間尺度來(lái)看,我覺得這其實(shí)是一個(gè)合理的猜測(cè)。因?yàn)轭愃频氖虑橐呀?jīng)發(fā)生在自動(dòng)駕駛領(lǐng)域?,F(xiàn)在 Tesla 的自動(dòng)駕駛,在平均意義上已經(jīng)比人類司機(jī)更安全了——不是所有人、不是所有場(chǎng)景,但總體來(lái)說(shuō)確實(shí)如此。如果我們已經(jīng)愿意把這種級(jí)別的風(fēng)險(xiǎn)——每天坐在高速移動(dòng)的金屬盒子里、任何一個(gè)錯(cuò)誤都可能致命——交給 Agent,那么它們遲早也能學(xué)會(huì)寫代碼。

我認(rèn)為這一天一定會(huì)到來(lái),只是不知道什么時(shí)候、以什么方式到來(lái)。但在當(dāng)前這個(gè)階段,絕大多數(shù)收益確實(shí)正在流向最資深的工程師。

主持人:我一直在想,這件事的發(fā)展路徑,可能和自動(dòng)駕駛有些相似。比如對(duì)一家還沒(méi)有用戶的創(chuàng)業(yè)公司來(lái)說(shuō),很多東西其實(shí)可以直接 one-shot 發(fā)布,就算系統(tǒng)崩了,代價(jià)也相對(duì)有限。但在 Uber 這樣的公司里,情況就完全不同了。

我最近正好了解了一些他們內(nèi)部采用 AI 的細(xì)節(jié)。他們其實(shí)已經(jīng)部署了很多工具,比如 Claude Code 之類的。問(wèn)題在于,公司內(nèi)部系統(tǒng)實(shí)在太復(fù)雜:有 monorepo,有 ticket 系統(tǒng),有 Slack,有 RFC 文檔,有設(shè)計(jì)規(guī)范,還有大量微服務(wù)架構(gòu)歷史遺留下來(lái)的復(fù)雜依賴。后來(lái)他們不得不專門構(gòu)建一整套內(nèi)部系統(tǒng),為 Agent Harness 提供足夠的上下文支持,之后整體效果才明顯提升。

這又讓我想到另一件事:如果一個(gè)資深工程師從 Uber 跳到 Google,他在相當(dāng)長(zhǎng)一段時(shí)間里也未必能保持原來(lái)的效率,因?yàn)樗紫鹊弥匦吕斫庹紫到y(tǒng)架構(gòu)。于是我就在想,軟件工程會(huì)不會(huì)也像自動(dòng)駕駛一樣——只有當(dāng)整個(gè)環(huán)境被充分“地圖化”之后,Agent 才能真正發(fā)揮出最大的能力?

畢竟,自動(dòng)駕駛也是花了將近十年,才一步步走到今天??晌耶?dāng)年還在 Uber 的時(shí)候,大家都在說(shuō)“明年方向盤就要消失了”,仿佛司機(jī)這個(gè)職業(yè)很快就會(huì)不復(fù)存在。

DHH:是的,而且這件事本身其實(shí)很有意思,因?yàn)樗『谜f(shuō)明了 Elon 當(dāng)年的信念到底有多強(qiáng)。2017 年他宣布自動(dòng)駕駛即將完成時(shí),背后的系統(tǒng)其實(shí)仍然是大約 50 萬(wàn)行手寫 C++。沿著那條技術(shù)路線走下去,根本不可能實(shí)現(xiàn)真正意義上的完全自動(dòng)駕駛??杉幢闳绱?,他依然堅(jiān)信方向本身是對(duì)的。直到后來(lái) AI 真正進(jìn)入系統(tǒng),一切才開始發(fā)生根本性的變化。當(dāng)模型能夠在數(shù)十億小時(shí)的真實(shí)道路數(shù)據(jù)上訓(xùn)練之后,它確實(shí)開始變得比大多數(shù)人類司機(jī)更安全。

我自己也算是一個(gè)還不錯(cuò)的司機(jī),但當(dāng)我把車交給 Tesla 自動(dòng)駕駛時(shí),它幾乎已經(jīng)像是世界上最好的司機(jī)之一:加速很平順,減速也非常精準(zhǔn),比我開得好,可能也比你開得好,甚至也許比英國(guó)女王的專職司機(jī)還要好。在這個(gè)非常具體的任務(wù)上,它幾乎已經(jīng)表現(xiàn)出了某種接近 AGI 的能力。

更有意思的是,這種能力躍遷發(fā)生得極快。真正基于 AI 的 FSD 系統(tǒng),并不是花了十年才達(dá)到今天這個(gè)水平。真正的質(zhì)變,其實(shí)是在最近短短 18 個(gè)月里發(fā)生的。比如在早期的 13.1 版本上,你會(huì)覺得:“這已經(jīng)挺不錯(cuò)了,但我還是得盯著方向盤?!苯又?13.2、14.0、14.2……然后突然有一天,你開始忍不住懷疑:如果它已經(jīng)開成這樣了,那方向盤為什么還在?

很多人今天看待編程 Agent,其實(shí)也是類似的心態(tài):如果在當(dāng)下,資深工程師仍然必須審核代碼,否則 AWS 就可能出現(xiàn)嚴(yán)重故障,那么一年之后又會(huì)是什么樣?

當(dāng)然,你也完全可能因?yàn)檫@些問(wèn)題陷入過(guò)度焦慮。我自己在過(guò)去一年里,其實(shí)也經(jīng)歷過(guò)那個(gè)階段。但后來(lái)我決定:與其不斷試圖預(yù)測(cè) 12 個(gè)月之后會(huì)不會(huì)出現(xiàn) AGI,我更愿意把注意力放在今天能做什么、今天能享受什么。

Agent 帶來(lái)的開發(fā)加速體驗(yàn)

主持人:從軟件工程師的角度來(lái)看,這多少有點(diǎn)讓人不安。很明顯行業(yè)正在朝這個(gè)方向前進(jìn),大量公司會(huì)圍繞這個(gè)方向建立,大量風(fēng)險(xiǎn)投資也會(huì)投入進(jìn)去,而這些公司最終要么成功,要么失敗,但無(wú)論如何,這條路徑都會(huì)繼續(xù)推進(jìn)。

那在 37signals 內(nèi)部呢?你們團(tuán)隊(duì)里大多數(shù)都是資深工程師,但也確實(shí)有初級(jí)工程師。他們的工作方式發(fā)生了什么變化?工作的滿足感有沒(méi)有變化?畢竟現(xiàn)在也有人擔(dān)心,這些工具會(huì)不會(huì)讓開發(fā)者變得更不快樂(lè)。

DHH:對(duì)我來(lái)說(shuō),最大的驚喜其實(shí)不是 Agent 的能力,而是使用它們時(shí)的愉悅感。

去年夏天我在 Lex Fridman 的播客上說(shuō)過(guò),我不想變成 Agent 的項(xiàng)目經(jīng)理。因?yàn)楫?dāng)時(shí)我腦子里的“項(xiàng)目經(jīng)理”模型是:遠(yuǎn)離生產(chǎn)一線、遠(yuǎn)離代碼、只負(fù)責(zé)協(xié)調(diào)別人做事。而那不是我想要的狀態(tài)。我希望自己仍然在代碼里動(dòng)手。

但后來(lái)我發(fā)現(xiàn),真正使用 Agent 的體驗(yàn)完全不是那樣。它更像是穿上了一套超級(jí)機(jī)甲外骨骼。突然之間,我不再只有兩只手,而是有十二只手;我可以同時(shí)盯著七個(gè)屏幕、操作五個(gè)鍵盤。雖然我沒(méi)有逐字符敲代碼,但我仍然是在寫程序,只是能力被極大放大了。

這仍然是一種程序員體驗(yàn),只是換了一種形態(tài)。而且當(dāng)我寫 Ruby 代碼時(shí),那種審美關(guān)聯(lián)仍然存在。同時(shí),我還能在更多任務(wù)上保持高效率推進(jìn)。甚至在問(wèn)題分析能力上,這種提升也非常明顯。

一個(gè)讓我真正“頓悟”的時(shí)刻發(fā)生在 Omarchy 3.4 發(fā)布之前。當(dāng)時(shí) GitHub 上大概有 250 個(gè)待處理 PR,我看了一眼就嘆了口氣——如果每個(gè) PR 花 15 分鐘,那得花多久?于是我決定換個(gè)方法試試,我直接把 PR 的 URL 丟給 Claude,讓它來(lái)做 review。

結(jié)果在大約 90 分鐘內(nèi),我處理了 100 個(gè) PR。當(dāng)然,并不是所有 PR 都能直接合并。實(shí)際上大概只有 10% 可以直接合并;另外約 20% 的情況是,Claude 發(fā)現(xiàn)的問(wèn)題本身是對(duì)的,但原始實(shí)現(xiàn)方式并不理想。于是我就讓它按照項(xiàng)目現(xiàn)有風(fēng)格,重新從頭實(shí)現(xiàn)一版,它幾乎立刻就完成了,而且代碼風(fēng)格和整個(gè)項(xiàng)目保持得非常一致。剩下大約 25% 的 PR,我看完之后覺得其實(shí)不應(yīng)該合并;還有約 25%,則屬于 Claude 對(duì)問(wèn)題方向的判斷可能沒(méi)錯(cuò),但實(shí)現(xiàn)路徑不夠理想,同時(shí)也看不到特別明確的改進(jìn)空間。

90 分鐘處理 100 個(gè) PR——這原本至少是一周的工作量。更驚人的是,其中至少一半 PR 涉及的內(nèi)容是我原本并不熟悉的領(lǐng)域,而 Claude 的分析明顯比我自己更專業(yè)、更準(zhǔn)確。不是說(shuō)我做不到,而是我根本不會(huì)投入那么多時(shí)間去研究它。這也是這些 PR 之前一直堆在那里沒(méi)有處理的原因之一。

這種 Agent 加速體驗(yàn),對(duì)我來(lái)說(shuō)絕對(duì)是可以排進(jìn)個(gè)人編程生涯前二十的重要時(shí)刻之一。

主持人:聽起來(lái) Agent 特別適合處理那些“本來(lái)應(yīng)該做,但又不太想做”的任務(wù)。而這些任務(wù)如果交給團(tuán)隊(duì)成員處理,未必更快,甚至可能更慢。另外我還在想,我們經(jīng)常討論 AI 是否提升效率,比如 PR 數(shù)量增加多少,但還有一個(gè)更重要的問(wèn)題:它是不是讓我們開始做以前根本不會(huì)做的事情?

DHH:正是這樣。真正關(guān)鍵的變化不是效率提升,而是問(wèn)題空間在爆炸式擴(kuò)大。

現(xiàn)在我們內(nèi)部啟動(dòng)了大量以前根本不會(huì)考慮的項(xiàng)目。比如有一次性能優(yōu)化項(xiàng)目,通常大家關(guān)注的是 P50、P95、P99 延遲指標(biāo)。但 Jeremy——我們團(tuán)隊(duì)里最擅長(zhǎng)使用 Agent 的工程師之一——提出一個(gè)問(wèn)題:為什么不優(yōu)化 P1?也就是最快的那 1% 請(qǐng)求。

當(dāng)時(shí)我們的 P1 延遲大概是 4 毫秒。他覺得還能繼續(xù)壓縮。于是幾天時(shí)間里,他把它優(yōu)化到了不到 0.5 毫秒,相當(dāng)于提升了 10 倍。

如果換成過(guò)去,我根本不會(huì)批準(zhǔn)這個(gè)項(xiàng)目,因?yàn)樗雌饋?lái)太像“性能炫技”。但現(xiàn)在不同了,因?yàn)樘剿鞒杀編缀鯙榱?。整個(gè) P1 項(xiàng)目大概涉及十幾個(gè) PR,總共修改了大約 2500 行代碼,而且只用了幾天時(shí)間。以前幾乎沒(méi)人會(huì)做這種優(yōu)化,因?yàn)樗雌饋?lái)商業(yè)價(jià)值不明顯。但現(xiàn)在,我們突然可以認(rèn)真考慮這些問(wèn)題了。

這讓我想起《終結(jié)者 2》里的一段情節(jié):他們找到第一部電影留下的芯片,然后說(shuō)了一句話——“它讓我們產(chǎn)生了一些原本根本不會(huì)考慮的想法?!爆F(xiàn)在的情況其實(shí)非常類似。

Agent 把探索一個(gè)模糊想法的成本,幾乎壓低了上千倍。現(xiàn)在我經(jīng)常會(huì)隨手把一些自己都還沒(méi)完全想清楚的念頭丟給它,連 prompt 都寫得很隨意,只是想看看會(huì)發(fā)生什么。

有時(shí)候結(jié)果當(dāng)然會(huì)很糟,那我就直接把代碼回滾掉。但如果放在以前,這 75 行代碼需要我自己花兩個(gè)小時(shí)寫出來(lái),我肯定不會(huì)這么隨便地去試?,F(xiàn)在則完全不同了。

有時(shí)我甚至?xí)X得自己像個(gè)國(guó)王,對(duì)手下說(shuō):“去調(diào)查一下遠(yuǎn)方邊境的稅收情況?!币郧?,這種任務(wù)可能要三周之后才會(huì)帶著結(jié)果回來(lái);現(xiàn)在,幾分鐘內(nèi)就能得到答案。更有意思的是,很多一開始看起來(lái)很糟糕的想法,最后反而會(huì)變成真正的好主意。

比如 Omarchy 的用戶一直希望能支持 dual-boot,這樣他們就可以同時(shí)保留 Windows 來(lái)玩游戲。但這并不是我自己的需求,所以我一直懶得處理。直到最近,我突然意識(shí)到:這恰恰就是最適合交給 Agent 的那類問(wèn)題。

于是我讓 Opus 和 Codex 先圍繞實(shí)現(xiàn)方案來(lái)回討論,讓它們彼此評(píng)審計(jì)劃,反復(fù)迭代了幾輪。最后我看了一眼方案,說(shuō):很好,這完全可以做。接下來(lái)只需要啟動(dòng)實(shí)現(xiàn)流程即可。

這種“順手啟動(dòng)一個(gè)大型改動(dòng)項(xiàng)目”的能力,到現(xiàn)在我自己都還沒(méi)有完全適應(yīng)。放在以前,這種事情一定會(huì)被拖到“以后再說(shuō)”;但現(xiàn)在,甚至可以在吃午飯的時(shí)候順手把它啟動(dòng)起來(lái)。

主持人:這確實(shí)像是一個(gè)全新的世界。即使模型能力從現(xiàn)在開始不再繼續(xù)進(jìn)步,我們可能也還需要十年,才能真正學(xué)會(huì)如何把它們的潛力發(fā)揮到極致。

DHH:完全正確。就像當(dāng)年 Commodore 64 剛發(fā)布時(shí)的那些游戲,和 20 年后開發(fā)者把硬件潛力幾乎榨干之后做出來(lái)的作品相比,看上去簡(jiǎn)直像來(lái)自兩個(gè)時(shí)代。PlayStation 也是一樣:首發(fā)時(shí)期的游戲,和生命周期末期的游戲,幾乎不像是同一代主機(jī)上的產(chǎn)品。

所以,即使模型能力從這一刻起停止增長(zhǎng),我們?nèi)匀豢梢曰ㄉ鲜陼r(shí)間,去學(xué)習(xí)如何更好地使用它們。更何況,現(xiàn)實(shí)并不是這樣——現(xiàn)實(shí)是,幾乎每三個(gè)月,就會(huì)出現(xiàn)一個(gè)更強(qiáng)的新模型。

主持人:那當(dāng)團(tuán)隊(duì)生產(chǎn)力突然提升之后,你們是否考慮擴(kuò)大團(tuán)隊(duì)規(guī)模?還是保持原來(lái)的規(guī)模?

DHH:以我們目前的情況來(lái)看,同樣的人可以完成更多事情,這就已經(jīng)足夠了。事實(shí)上,我們一直都有能力擴(kuò)張團(tuán)隊(duì),只是沒(méi)有那么多足夠好的想法值得擴(kuò)張而已?,F(xiàn)在這些新增生產(chǎn)力正好可以用來(lái)推進(jìn)像 P1 這樣的項(xiàng)目,它們確實(shí)能讓產(chǎn)品變得更好。

過(guò)去那種“一個(gè)重要功能需要兩個(gè)月才能完成”的思維方式,其實(shí)已經(jīng)過(guò)時(shí)了。這種變化遲早會(huì)影響整個(gè)軟件開發(fā)方法論體系,比如 Shape Up 原本是圍繞兩個(gè)月周期設(shè)計(jì)的,但現(xiàn)在這個(gè)節(jié)奏顯然已經(jīng)不再合理。當(dāng)然,目前還沒(méi)有哪家公司真正完成了這套方法論的重寫,因?yàn)樽兓l(fā)生得實(shí)在太快了。當(dāng)發(fā)布速度越來(lái)越快時(shí),你就必須更嚴(yán)格控制上線流程,并持續(xù)驗(yàn)證功能是否真的有效。

程序員職業(yè)的“黃金時(shí)代”可能已經(jīng)快走到頭了

主持人:我們繼續(xù)回到剛才那個(gè)問(wèn)題,開發(fā)者即將面對(duì)的變化。

DHH:我認(rèn)為,如果一個(gè)軟件工程師到現(xiàn)在還沒(méi)有意識(shí)到變化正在到來(lái),那多少有點(diǎn)自欺欺人。過(guò)去,開發(fā)者之所以能夠獲得高薪,很大程度上是因?yàn)樗麄冊(cè)?jīng)是生產(chǎn)能力的瓶頸:能寫代碼的人相對(duì)有限,所以他們的時(shí)間格外值錢??梢坏┻@個(gè)瓶頸開始松動(dòng)——比如產(chǎn)品經(jīng)理自己都能做出可上線的功能——整個(gè)行業(yè)的結(jié)構(gòu)就會(huì)隨之改變。

如果讓我下注,我會(huì)說(shuō):程序員職業(yè)的“黃金時(shí)代”可能已經(jīng)快走到頭了。那些需要經(jīng)過(guò)多年訓(xùn)練、教育和長(zhǎng)期技能積累才能成為程序員的人,未來(lái)未必還需要像今天這么多,才能完成同樣規(guī)模的軟件工作。

當(dāng)然,Jevons 悖論依然成立:當(dāng)一件事變得更便宜時(shí),人們通常會(huì)消費(fèi)得更多。但這并不意味著所有程序員都會(huì)因此受益。軟件的總產(chǎn)量當(dāng)然會(huì)比歷史上任何時(shí)候都更高,可這并不等于每一個(gè)人都會(huì)被需求增長(zhǎng)“拯救”。

順便說(shuō)一句,我覺得 GitHub 最近其實(shí)也承受了不少批評(píng),而且其中很多批評(píng)并非沒(méi)有道理。我看到過(guò)一個(gè)統(tǒng)計(jì),說(shuō)它的 uptime 只有 92%。這個(gè)數(shù)字聽起來(lái)確實(shí)有點(diǎn)離譜——雖然我并不確定它具體是怎么測(cè)出來(lái)的——但我完全能理解為什么人們會(huì)產(chǎn)生這樣的感受。

另一方面,我也多少有點(diǎn)同情他們。因?yàn)楝F(xiàn)在整個(gè)世界的軟件生產(chǎn)量正在呈火箭式增長(zhǎng)。作為一個(gè)文明整體,我們正在以前所未有的速度制造軟件。比如 OpenClaw,本身就已經(jīng)有大約 40 萬(wàn)行代碼。過(guò)去要做到這個(gè)規(guī)模,可能需要十年時(shí)間。再比如 Shopify 的主單體倉(cāng)庫(kù),大概有 300 萬(wàn)行代碼,那是二十年的積累。如果把所有參與過(guò)這個(gè)項(xiàng)目的工程師人數(shù)加起來(lái),大概可能接近兩萬(wàn)人次。

所以現(xiàn)在確實(shí)正在發(fā)生巨大變化,軟件產(chǎn)量正在迅速上升。我可以理解為什么 GitHub 這樣的基礎(chǔ)設(shè)施開始出現(xiàn)壓力,因?yàn)樘峤涣恐粫?huì)繼續(xù)加速增長(zhǎng)。

而且,某種意義上說(shuō),我們甚至還沒(méi)有真正開始。如果你去看 AI 在企業(yè)里的采用曲線,就會(huì)發(fā)現(xiàn)絕大多數(shù)公司其實(shí)根本還沒(méi)有開始真正使用 AI。我們身處 X 上的技術(shù)圈子,很容易產(chǎn)生一種“所有人都已經(jīng)在用 AI”的錯(cuò)覺,但現(xiàn)實(shí)世界并不是這樣。

當(dāng)然,ChatGPT 很快就達(dá)到了 8 億用戶規(guī)模,這說(shuō)明大規(guī)模普及本身確實(shí)存在。但距離那些最先進(jìn)公司內(nèi)部真實(shí)發(fā)生的生產(chǎn)力加速,我們依然還有很長(zhǎng)的路要走。

所以我認(rèn)為,一個(gè)普通程序員如果開始擔(dān)心:程序員的“黃金時(shí)代”是不是已經(jīng)過(guò)去了——這種擔(dān)心其實(shí)完全合理。未來(lái)幾乎肯定會(huì)出現(xiàn)價(jià)格壓力。

因?yàn)椴煌愋偷墓?,將?huì)受到完全不同的影響。像我們這樣的公司,幾乎總有無(wú)限空間去構(gòu)建新功能,可以把新增的生產(chǎn)力不斷投入到產(chǎn)品擴(kuò)展之中;但也有很多公司,它們只需要完成某一件非常明確的事情。如果它們能用十分之一的成本把這件事做完,那本身就是巨大的優(yōu)勢(shì)。

而在那些把軟件開發(fā)視為成本中心的組織里——事實(shí)上,這類組織可能構(gòu)成了全球軟件開發(fā)活動(dòng)中的大多數(shù)——這種壓力只會(huì)體現(xiàn)得更加明顯。

主持人:聽起來(lái),如果我是軟件工程師,現(xiàn)在最重要的一件事,是確保自己不在“成本中心”崗位上,或者至少要讓自己在那里變得不可替代。另外我也在想,未來(lái)公司招聘的軟件工程師畫像可能會(huì)繼續(xù)變化。

如果回顧過(guò)去幾十年的變化路徑:90 年代的軟件工程師形象是那種只寫匯編、不怎么說(shuō)話的技術(shù)宅;到了 2000 年代,仍然主要按語(yǔ)言技能招聘;到了 2010 年代,很多創(chuàng)業(yè)公司開始按算法能力招聘,因?yàn)檎Z(yǔ)言可以后學(xué)。而現(xiàn)在我看到一些最新融資的公司在招聘 product engineer 時(shí),已經(jīng)明確把同理心、溝通能力這類能力寫進(jìn)要求里——默認(rèn)你會(huì)寫代碼,只不過(guò)是最基礎(chǔ)的門檻而已。而且我最近接觸到的很多開發(fā)者,也確實(shí)越來(lái)越符合這種畫像:他們大多非常善于溝通,也愿意直接和客戶交流;他們并不把這件事看成負(fù)擔(dān),甚至還樂(lè)在其中。

DHH:因?yàn)檎嬲∪钡哪芰σ呀?jīng)變了?,F(xiàn)在真正稀缺的是:我們應(yīng)該構(gòu)建什么?應(yīng)該怎么構(gòu)建?應(yīng)該和哪些客戶交流?應(yīng)該把注意力放在哪里?這些問(wèn)題本質(zhì)上就是產(chǎn)品管理問(wèn)題。

說(shuō)實(shí)話,這對(duì)我來(lái)說(shuō)也挺有意思的。因?yàn)檫^(guò)去我并沒(méi)有特別高看產(chǎn)品經(jīng)理這個(gè)角色。我覺得這個(gè)崗位里確實(shí)有不少水分,有些人也確實(shí)沒(méi)有真正做出太多實(shí)質(zhì)貢獻(xiàn)。但其中一個(gè)重要原因是:他們當(dāng)時(shí)根本沒(méi)有成為瓶頸資源的條件。

真正的瓶頸在實(shí)現(xiàn)環(huán)節(jié)。產(chǎn)品經(jīng)理可以提出一個(gè)想法,但必須等待四周,才能讓昂貴的程序員把它變成現(xiàn)實(shí)。在這四周里,他們其實(shí)也做不了太多事情,所以看起來(lái)像是被低效利用。而現(xiàn)在,這個(gè)結(jié)構(gòu)正在發(fā)生變化。純實(shí)現(xiàn)能力,在某一天會(huì)被解決。

我不是說(shuō)現(xiàn)在已經(jīng)解決了——任何試過(guò)把 Agent 生成代碼未經(jīng)審查直接部署進(jìn)大型代碼庫(kù)的人都知道,這還遠(yuǎn)遠(yuǎn)不現(xiàn)實(shí)。但就像去年夏天我在 Lex 播客里說(shuō)過(guò)的,我也不會(huì)再賭它一年之內(nèi)不可能發(fā)生。

主持人:這可以說(shuō)是一種常識(shí)性判斷:在通用場(chǎng)景下,“實(shí)現(xiàn)”這件事遲早會(huì)被解決。對(duì)于一些邊緣場(chǎng)景,它可能需要更長(zhǎng)時(shí)間;還有少數(shù)特殊領(lǐng)域,可能始終不完全適合自動(dòng)化。就像自動(dòng)駕駛一樣——對(duì)普通乘用車來(lái)說(shuō)已經(jīng)基本可行,但對(duì)卡車這種復(fù)雜場(chǎng)景,落地可能更慢,或者需要更專門化的方案。不過(guò)整體趨勢(shì)是明確的:這些“例外區(qū)域”會(huì)越來(lái)越小。

DHH:所以我確實(shí)認(rèn)為,那種“我只想安靜坐著寫代碼”的工程師形象,將來(lái)只有極少數(shù)人還能維持。你必須達(dá)到 John Carmack 那個(gè)級(jí)別,才有資格繼續(xù)只做實(shí)現(xiàn)工作。

主持人:就連 John Carmack 自己,其實(shí)也是非常強(qiáng)烈擁抱 AI 的人,他同時(shí)也是一個(gè)技術(shù)方向的引領(lǐng)者。更重要的是,他當(dāng)年還能準(zhǔn)確判斷市場(chǎng)趨勢(shì),比如什么類型的游戲會(huì)有人買。這意味著他不僅僅是技術(shù)高手,還具備商業(yè)判斷能力,或者至少身邊有這樣的人跟他協(xié)作。

DHH:所以現(xiàn)實(shí)是:你必須成為行業(yè)里最頂尖的一小撮人。而且還不只是“非常優(yōu)秀”這么簡(jiǎn)單,你還必須比現(xiàn)成的 Agent 更強(qiáng),才能繼續(xù)享有“只負(fù)責(zé)實(shí)現(xiàn)”的這種特權(quán)。

給想成為頂尖工程師的人的建議

主持人:那么問(wèn)題來(lái)了:真正的頂尖工程師到底是什么樣的人?以及,如果有人現(xiàn)在想成為“這個(gè)時(shí)代最優(yōu)秀的工程師”,你會(huì)給他們什么建議?

DHH:這是個(gè)非常好的問(wèn)題。但老實(shí)說(shuō),沒(méi)有人真正能回答這個(gè)問(wèn)題。

我這么說(shuō),是因?yàn)槲覀円呀?jīng)看過(guò)成千上萬(wàn)份申請(qǐng)。雖然不像 Google 那樣動(dòng)輒幾百萬(wàn)份,但數(shù)量也已經(jīng)相當(dāng)可觀了。而真正被錄用的程序員,其實(shí)非常少。即便是這些最終錄用的人,也并不是全部都長(zhǎng)期留下來(lái)了。我們最近統(tǒng)計(jì)過(guò),招聘成功率最多也就是略高于 50%。也就是說(shuō),就算經(jīng)歷了完整嚴(yán)格的篩選流程,最終仍然有接近一半的人并不適合長(zhǎng)期合作。所以現(xiàn)實(shí)情況是:沒(méi)有任何組織能夠把招聘做成一門精確科學(xué)。

Google 很早之前就發(fā)布過(guò)一篇研究論文,嘗試分析是否可以通過(guò)常見指標(biāo)預(yù)測(cè)員工表現(xiàn),比如名校背景、GPA、算法題成績(jī)等等。結(jié)論基本是:這些指標(biāo)幾乎沒(méi)有預(yù)測(cè)能力。換句話說(shuō),我們其實(shí)并不知道如何準(zhǔn)確預(yù)測(cè)誰(shuí)會(huì)成功。

另一方面,我自己也承認(rèn),我的判斷標(biāo)準(zhǔn)某種程度上被“慣壞了”。因?yàn)槲议L(zhǎng)期和非常優(yōu)秀的人一起工作,不僅是在公司內(nèi)部,也包括開源社區(qū)。結(jié)果就是,我對(duì)“普通程序員水平”的認(rèn)知可能被扭曲了。

每次招聘時(shí),我?guī)缀醵紩?huì)有同樣的感受:大多數(shù)申請(qǐng)材料其實(shí)都很一般,很多人甚至沒(méi)有認(rèn)真準(zhǔn)備,去真正展示自己的能力。這聽起來(lái)也許像老派抱怨,但現(xiàn)實(shí)就是——如果你想拿到一份工作,你必須讓自己明顯地脫穎而出。

我知道這讓人不舒服,因?yàn)樗馕吨?jìng)爭(zhēng)非常激烈。但把招聘理解成一個(gè)簡(jiǎn)單的概率問(wèn)題其實(shí)是錯(cuò)的。很多人會(huì)想:一千個(gè)申請(qǐng)者,只錄用一個(gè),那我被錄取的概率就是千分之一??墒聦?shí)并不是這樣。那一千個(gè)人里,大多數(shù)人的概率其實(shí)是零;真正準(zhǔn)備充分、表現(xiàn)最好的那幾個(gè)人,概率可能是 10%、20%,甚至 30%。

通常在第一輪,我們就會(huì)直接淘汰至少一半申請(qǐng)者,有時(shí)甚至?xí)蕴种?。原因很?jiǎn)單:他們沒(méi)有針對(duì)崗位準(zhǔn)備申請(qǐng)材料,沒(méi)有按照招聘說(shuō)明提交內(nèi)容,或者顯然不符合崗位要求。剩下的人里,大約只有三分之一能進(jìn)入下一輪,然后我們?cè)俸Y到大概二十人,發(fā)放筆試作業(yè)測(cè)試。

很多人不喜歡這種測(cè)試,覺得那是在提供免費(fèi)勞動(dòng)力。我其實(shí)不太理解這種看法——難道你會(huì)覺得我們真的會(huì)把這些測(cè)試代碼直接部署到生產(chǎn)環(huán)境里嗎?這些題目本來(lái)就是專門設(shè)計(jì)出來(lái)評(píng)估能力的。

當(dāng)然,我也理解另一種顧慮:如果要花六個(gè)小時(shí)做測(cè)試,最后卻沒(méi)有任何結(jié)果,確實(shí)會(huì)讓人不愿意投入。但現(xiàn)實(shí)就是,這件事沒(méi)有捷徑。你不可能只投一份簡(jiǎn)歷,再接一個(gè) 30 分鐘電話,就順利被錄用。自從我進(jìn)入這個(gè)行業(yè)以來(lái),我從沒(méi)見過(guò)這種事。

主持人:除非有特別強(qiáng)的內(nèi)部推薦。

DHH:對(duì),只有這種情況才可能發(fā)生。而且這種情況通常只發(fā)生在公司非常早期的階段,比如創(chuàng)始團(tuán)隊(duì)搭建時(shí)期。那時(shí)候大家是基于長(zhǎng)期合作經(jīng)驗(yàn)建立信任,比如“我和這個(gè)人一起工作過(guò)兩年,我可以完全信任他”。事實(shí)上,如果看長(zhǎng)期成功率,通過(guò)這種“強(qiáng)推薦”進(jìn)入公司的員工,比公開招聘進(jìn)入公司的員工更容易長(zhǎng)期留下來(lái)。

說(shuō)實(shí)話,通過(guò)公開招聘找到真正適合我們的工程師,一直都非常困難。當(dāng)然也有成功案例,所以我仍然愿意相信這條路徑是可行的。但如果你把概率算清楚,會(huì)發(fā)現(xiàn)確實(shí)非常低。而強(qiáng)推薦路徑成功率明顯更高。

但問(wèn)題是,這對(duì)大多數(shù)人來(lái)說(shuō)并不是可執(zhí)行建議。真正可執(zhí)行的建議只有一個(gè):盡可能提升自己的能力,并且認(rèn)真對(duì)待你正在工作的地方。

很多人會(huì)覺得,如果自己所在公司不好,就沒(méi)必要努力。這其實(shí)是在傷害自己。你在一個(gè)不理想的公司里工作,然后決定隨便應(yīng)付、刷刷 Reddit、看看 X,那你未來(lái)最有可能獲得推薦的人是誰(shuí)?恰恰是那些和你一起工作過(guò)的人。而他們只會(huì)推薦那些即使在糟糕環(huán)境中,仍然認(rèn)真工作、持續(xù)學(xué)習(xí)、持續(xù)交付的人。

你必須變得足夠優(yōu)秀。而如果你不練習(xí),就不可能變得優(yōu)秀。如果你覺得當(dāng)前公司“不值得你認(rèn)真投入”,那其實(shí)是在限制自己。因?yàn)閮?yōu)秀公司招聘的是那些能夠持續(xù)提高標(biāo)準(zhǔn)的人。

就算你不喜歡老板,也沒(méi)關(guān)系。我職業(yè)生涯早期合作過(guò)的大多數(shù)老板,我也談不上特別喜歡。但我仍然努力工作,因?yàn)槟鞘菫榱宋易约旱某砷L(zhǎng),也是為了讓我成為那種“機(jī)會(huì)來(lái)臨時(shí)已經(jīng)準(zhǔn)備好的人”。當(dāng)所有能力都被打磨到位、所有技能都成熟時(shí),你才真正有資格抓住機(jī)會(huì)。

主持人:這其實(shí)和你進(jìn)入 37signals 的經(jīng)歷很像吧?當(dāng)時(shí)那只是一個(gè)合同崗位,你對(duì)產(chǎn)品也沒(méi)有所有權(quán),但你依然全力投入。結(jié)果 Jason 后來(lái)意識(shí)到:“這個(gè)家伙必須給點(diǎn)股份,否則留不住?!边@其實(shí)是一個(gè)挺典型的故事。

DHH:沒(méi)錯(cuò),不過(guò)這種故事本身就是典型的“創(chuàng)始人敘事”,不能輕易外推成一種通用路徑。幾乎所有創(chuàng)始人故事都有這個(gè)特點(diǎn)。但其中真正具有普適性的原則,其實(shí)很簡(jiǎn)單:愿意出現(xiàn),愿意投入,努力做到最好,并且持續(xù)學(xué)習(xí)。

還有一點(diǎn)是我后來(lái)有些后悔的——在某種程度上,我自己也曾助長(zhǎng)過(guò)一種觀念:好像你可以成為一個(gè)優(yōu)秀的程序員,卻并不真正喜歡編程;好像你也不需要在工作之外繼續(xù)關(guān)心這件事。

主持人:這是你當(dāng)時(shí)的真實(shí)想法嗎?

DHH:某種程度上是的,不過(guò)這是一個(gè)誤解。因?yàn)槲耶?dāng)時(shí)是在反對(duì)那種“每周工作 100 小時(shí)甚至 120 小時(shí)”的極端文化。但那從來(lái)都不是我的工作方式。我們開發(fā) Basecamp 的這 25 年里,一直基本保持平均每周工作 40 小時(shí)的節(jié)奏。

不過(guò)與此同時(shí),就像我一開始說(shuō)的,我是真的喜歡計(jì)算機(jī)。我會(huì)在業(yè)余時(shí)間折騰計(jì)算機(jī),看新的技術(shù),探索新的系統(tǒng)。這并不是那種“全天候給 Basecamp 客戶交付功能”的工作,而更像是一種興趣驅(qū)動(dòng)的探索。但它確實(shí)一直存在。

而在 2010 年代,有一段時(shí)間行業(yè)形成了一種誤解:你完全可以不做這些事情,只要按時(shí)上班寫代碼就夠了。因?yàn)榫幊烫∪绷?、太值錢了,公司幾乎愿意錄用任何人——哪怕這個(gè)人其實(shí)并不怎么在乎編程。

如果這種時(shí)代真的存在過(guò),那它現(xiàn)在已經(jīng)結(jié)束了。當(dāng)年代碼訓(xùn)練營(yíng)(bootcamp) 的興起,其實(shí)就是一個(gè)很明顯的信號(hào)。這本來(lái)就是經(jīng)濟(jì)體系應(yīng)有的反應(yīng):當(dāng)某個(gè)職業(yè)的薪資高到離譜,就意味著供給不足,于是自然會(huì)有更多人涌進(jìn)來(lái)。這本身并沒(méi)有問(wèn)題。只是那個(gè)階段,如今已經(jīng)過(guò)去了。

主持人:我們剛才一直在討論一個(gè)問(wèn)題:程序員的黃金時(shí)代是不是已經(jīng)過(guò)去了?也許所謂的“黃金時(shí)代”,其實(shí)指的是——只要愿意投入幾個(gè)月甚至幾年時(shí)間學(xué)習(xí),大多數(shù)人都可以進(jìn)入這個(gè)行業(yè)。那時(shí)候你可以去大學(xué),也可以去訓(xùn)練營(yíng),只要投入時(shí)間,就能找到工作。面試不會(huì)嚴(yán)格查推薦人背景,甚至很多公司根本不做推薦人背調(diào)。

但現(xiàn)在這種情況可能正在結(jié)束。未來(lái)公司可能會(huì)越來(lái)越依賴推薦人調(diào)查,而且不只是確認(rèn)“你是否在那里工作過(guò)”,還會(huì)深入了解你的能力表現(xiàn)。比如 Databricks 就很出名,他們不僅做推薦人調(diào)查,還會(huì)詳細(xì)追問(wèn):你是否愿意再次和這個(gè)人合作?他的弱點(diǎn)是什么?你是否還會(huì)再次錄用他?等等。

DHH:不過(guò)這里有個(gè)有意思的地方:所謂“程序員黃金時(shí)代結(jié)束”,聽起來(lái)像是會(huì)影響所有程序員,其實(shí)并不是這樣。真正優(yōu)秀的程序員——甚至不用是全球最頂尖的那種,只要是很強(qiáng)的程序員——現(xiàn)在反而比以往任何時(shí)候都更有價(jià)值。因?yàn)樗麄冏钌瞄L(zhǎng)利用 AI 帶來(lái)的加速能力。

而改變我看法的關(guān)鍵一點(diǎn)是:至少在 37signals 內(nèi)部,以及我自己的體驗(yàn)里,我現(xiàn)在做程序員的快樂(lè)程度,是自 2000 年代初第一次接觸 Ruby 以來(lái)最高的一次。那種感覺真的很像“剛發(fā)現(xiàn) Ruby 的時(shí)候”。

你可以在多個(gè)維度同時(shí)高速推進(jìn):探索 P1 指標(biāo)優(yōu)化、思考 Omarchy 的 dual-boot 支持、快速嘗試各種新想法——整個(gè)工作過(guò)程本身變得前所未有地有趣。而我看到我們團(tuán)隊(duì)里那些最積極使用 AI 的程序員,也有同樣的體驗(yàn)。雖然他們也會(huì)有一些焦慮,但這種焦慮往往被“創(chuàng)造能力突然增強(qiáng)”的興奮感壓過(guò)去了。

所以現(xiàn)在其實(shí)出現(xiàn)了一種分化狀態(tài):我們一方面知道未來(lái)充滿不確定性,這確實(shí)會(huì)帶來(lái)焦慮,尤其當(dāng)你的收入關(guān)系到孩子七年后的大學(xué)學(xué)費(fèi)時(shí),這種焦慮完全可以理解。但問(wèn)題是,這種焦慮本身并不能轉(zhuǎn)化成任何建設(shè)性行動(dòng)。唯一有效的路徑,就是主動(dòng)投入進(jìn)去。

如果你只是坐在那里反復(fù)思考七年后的世界會(huì)變成什么樣,那其實(shí)是在浪費(fèi)時(shí)間。真正可行的路徑只有一個(gè):開始使用這些工具,而且通常這并不需要太大努力。比如把一個(gè)你以前一直沒(méi)完成的業(yè)余項(xiàng)目拿出來(lái),用模型試試看。如果你真的喜歡計(jì)算機(jī),我很難想象你不會(huì)覺得這個(gè)過(guò)程有趣。

我也看到很多人正在進(jìn)入這樣一個(gè)階段,比如 Kent Beck。他寫程序已經(jīng) 52 年了,但他說(shuō)自己現(xiàn)在依然非常享受編程。最近他在做一個(gè)一直想做的項(xiàng)目——實(shí)現(xiàn)一個(gè) Smalltalk 服務(wù)器。過(guò)去這類事情可能要花很久才能完成,而現(xiàn)在,它正在逐漸接近成型。與此同時(shí),他還能住在湖邊的房子里,寫到一半停下來(lái),看兩個(gè)小時(shí)的鳥,然后再回來(lái)繼續(xù)寫代碼。

順便說(shuō)一句,Kent Beck 一直都是我的偶像之一。2001 年我剛開始編程的時(shí)候,曾在丹麥的一次會(huì)議上聽過(guò)他的演講,當(dāng)時(shí)我完全被他的表達(dá)能力和思想深度震住了。在那之前我已經(jīng)讀過(guò)《Extreme Programming》之類的書,而他的《Smalltalk Best Practice Patterns》到今天仍然是我最推薦的編程書之一。如果你真的想理解方法設(shè)計(jì)、類結(jié)構(gòu)設(shè)計(jì)這些更偏“戰(zhàn)術(shù)層面”的編程模式,那本書是最好的材料之一。所以看到他現(xiàn)在既在使用 Agent,又還能悠閑地去看鳥,我覺得非常棒。

不過(guò)也有一個(gè)現(xiàn)實(shí)變化:我觀察到很多真正“all-in AI”的人,現(xiàn)在反而比以前工作得更努力了。我自己也是這樣。當(dāng)你只需要用一小時(shí)監(jiān)督 Agent,就能產(chǎn)生這么大的影響力時(shí),那種效率帶來(lái)的興奮感是非常容易讓人上癮的。

如果你是那種對(duì)“發(fā)布成果”會(huì)產(chǎn)生多巴胺反饋的人,現(xiàn)在這種反饋幾乎是過(guò)載狀態(tài)。但我也不斷提醒自己:這不是限時(shí)促銷活動(dòng)。AI 下個(gè)月還在,之后幾年也還在,不需要把所有興奮感都?jí)嚎s在兩周之內(nèi)消耗完。

我覺得對(duì)那些最深入使用這些工具的人來(lái)說(shuō),現(xiàn)在最大的挑戰(zhàn)反而是:不要被它吞沒(méi)。因?yàn)檎缒蔷淅显捳f(shuō)的——現(xiàn)在已經(jīng)是它們最弱的時(shí)候了。未來(lái)只會(huì)越來(lái)越強(qiáng)。所以你更應(yīng)該想辦法保持節(jié)奏,而不是被興奮感徹底帶著跑。

主持人:這種“被卷進(jìn)去”的狀態(tài)確實(shí)存在。比如 Steve Yegge 最近看起來(lái)就有點(diǎn)疲憊——雖然他自己也很坦誠(chéng)地說(shuō),他確實(shí)被這波變化吸進(jìn)去了。他身邊很多朋友也是這樣。你現(xiàn)在顯然已經(jīng)是深度使用 AI 的人之一,那你是怎么保持平衡的?比如我記得你以前提到過(guò)睡眠的重要性,而且你甚至不用鬧鐘?

DHH:是的,我基本不用鬧鐘。當(dāng)然現(xiàn)在我妻子會(huì)用,因?yàn)楹⒆右磿r(shí)上學(xué)。但對(duì)我來(lái)說(shuō),每晚睡滿八小時(shí),是對(duì)認(rèn)知能力最好的投資。只要少睡兩小時(shí),比如從八小時(shí)變成六小時(shí),你接下來(lái)那 18 小時(shí)的狀態(tài)都會(huì)明顯下降。這是一筆非常糟糕的交換。

我偶爾確實(shí)也會(huì)失眠,比如最近圍繞 AI 這些事情,有幾次腦子轉(zhuǎn)得太快睡不著。不過(guò)這種情況非常少見。但無(wú)論如何,我認(rèn)為最不應(yīng)該犧牲的就是睡眠,其次是不應(yīng)該犧牲健康。為了多做 Agent 工作而少鍛煉三小時(shí),是一筆非常差的交易。如果你想保持頭腦清晰,整個(gè)系統(tǒng)都必須維持良好狀態(tài)。

我確實(shí)看到有些人現(xiàn)在已經(jīng)有點(diǎn)過(guò)度消耗自己了,但問(wèn)題是:這不是一場(chǎng)短跑,而是一場(chǎng)至少持續(xù)十年的變化過(guò)程。所以別透支健康,也別透支睡眠,更別透支飲食質(zhì)量。哪怕只從短期效率來(lái)看,減少睡眠也完全沒(méi)有意義。連續(xù)三周每天少睡兩三個(gè)小時(shí),你最后只會(huì)變成一團(tuán)混亂的狀態(tài),而不是更高效的人。

主持人:那我們最后換個(gè)角度聊聊。你其實(shí)早就可以退休了,完全可以去湖邊聽鳥叫。但你還是每天繼續(xù)寫代碼——過(guò)去是打開終端,現(xiàn)在是調(diào)度 Agent。到底是什么驅(qū)動(dòng)你繼續(xù)做這些事情?以及接下來(lái)你最期待什么?

DHH:驅(qū)動(dòng)我繼續(xù)工作的,其實(shí)就是我對(duì)計(jì)算機(jī)的熱愛。對(duì)我來(lái)說(shuō),這是最有趣、最值得投入時(shí)間的事情。當(dāng)然,我也做很多別的事情,比如開賽車、陪孩子。但如果每天有八小時(shí)要投入到某件事情上,那最好的選擇依然是計(jì)算機(jī)。

從我五歲開始就是這樣。最早是電子游戲,而現(xiàn)在調(diào)度這些 Agent,其實(shí)某種程度上也像在玩策略游戲,比如在玩《星際爭(zhēng)霸》一樣指揮單位行動(dòng)。所以不管是不是出于經(jīng)濟(jì)原因,我都會(huì)繼續(xù)折騰計(jì)算機(jī)、理解它們的工作方式,并繼續(xù)創(chuàng)造新的東西。

很多人對(duì)“財(cái)富”的理解其實(shí)有誤區(qū),他們以為財(cái)富是一個(gè)終點(diǎn):達(dá)到之后就可以徹底躺平。但過(guò)去一百年的心理學(xué)研究早就說(shuō)明,這種狀態(tài)并不會(huì)帶來(lái)幸福。如果你擁有無(wú)限時(shí)間,卻沒(méi)有目標(biāo)和使命感,那并不會(huì)令人滿足。幾乎所有賣掉公司套現(xiàn)的創(chuàng)業(yè)者都是這樣:在海灘躺三周,然后又重新回來(lái)創(chuàng)業(yè)。

因?yàn)樗麄冋嬲非蟮?,從?lái)不是終點(diǎn),而是過(guò)程本身。這種創(chuàng)造過(guò)程,就是意義本身,也是滿足感的來(lái)源。所以我會(huì)繼續(xù)做這些事情。不管是自己敲代碼,還是調(diào)度 Agent,還是向它們學(xué)習(xí)——我都會(huì)繼續(xù)和計(jì)算機(jī)打交道。

而且過(guò)去三個(gè)月之后,我現(xiàn)在已經(jīng)非常堅(jiān)定地投入到Agent 可訪問(wèn)性(agent accessibility)這個(gè)方向上了。最近幾周我們就在開發(fā)新的 Basecamp CLI。這個(gè)過(guò)程也再次提醒我:我們還沒(méi)有達(dá)到 AGI。你當(dāng)然可以讓 Agent 寫 CLI,但如果你希望它“剛剛好”,仍然需要人工參與優(yōu)化。

不過(guò)我很樂(lè)意做這件事。我們很快就會(huì)發(fā)布 Basecamp 的 CLI,也會(huì)為其他產(chǎn)品推出類似工具。我現(xiàn)在非常關(guān)注一個(gè)問(wèn)題:我們到底還能把這些能力推進(jìn)到什么程度?

另外還有一點(diǎn)是,我現(xiàn)在每天早上都會(huì)產(chǎn)生一種新的沖動(dòng):醒來(lái)之后特別想看看世界又發(fā)生了什么變化。我甚至需要刻意控制自己不要一醒來(lái)就打開 X,因?yàn)樽兓瘜?shí)在太快了,我總想第一時(shí)間知道最新進(jìn)展。這種好奇心短期內(nèi)肯定不會(huì)消失。事實(shí)上,我現(xiàn)在比五年前更喜歡計(jì)算機(jī)了,這種感覺真的非常棒。

視頻原鏈接:

https://www.youtube.com/watch?v=JiWgKRgdgpI

會(huì)議推薦

世界模型的下一個(gè)突破在哪?Agent 從 Demo 到工程化還差什么?安全與可信這道坎怎么過(guò)?研發(fā)體系不重構(gòu),還能撐多久?

AICon 上海站 2026,4 大核心專題等你來(lái):世界模型與多模態(tài)智能突破、Agent 架構(gòu)與工程化實(shí)踐、Agent 安全與可信治理、企業(yè)級(jí)研發(fā)體系重構(gòu)。14 個(gè)專題全面開放征稿。

誠(chéng)摯邀請(qǐng)你登臺(tái)分享實(shí)戰(zhàn)經(jīng)驗(yàn)。AICon 2026,期待與你同行。

今日薦文

你也「在看」嗎?

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
關(guān)于文章被處理的通知

關(guān)于文章被處理的通知

言立方
2026-04-15 18:22:17
張?zhí)m力挺馬筱梅,稱呼小孫子為汪寶,曬一家三口合影,幸福滿滿!

張?zhí)m力挺馬筱梅,稱呼小孫子為汪寶,曬一家三口合影,幸福滿滿!

老吳教育課堂
2026-05-07 17:21:23
美媒稱中國(guó)正開展全國(guó)動(dòng)員,殲36、殲50生產(chǎn)數(shù)量超美國(guó)兩倍

美媒稱中國(guó)正開展全國(guó)動(dòng)員,殲36、殲50生產(chǎn)數(shù)量超美國(guó)兩倍

咸魚金腦袋
2026-05-07 13:01:23
越南新總理上任第一刀:58個(gè)行業(yè)取消許可,賭場(chǎng)也敢放開了?

越南新總理上任第一刀:58個(gè)行業(yè)取消許可,賭場(chǎng)也敢放開了?

近史談
2026-05-07 16:04:08
今天油價(jià)|5月7日最新油價(jià),原油大降超7%,明晚汽柴油恢復(fù)下跌?

今天油價(jià)|5月7日最新油價(jià),原油大降超7%,明晚汽柴油恢復(fù)下跌?

豬友巴巴
2026-05-07 16:45:03
劉國(guó)梁辭職還沒(méi)完!威海注冊(cè)17家公司被曝出,關(guān)聯(lián)王楠郭斌夫婦!

劉國(guó)梁辭職還沒(méi)完!威海注冊(cè)17家公司被曝出,關(guān)聯(lián)王楠郭斌夫婦!

拳擊時(shí)空
2026-05-07 05:47:22
刷榜AI全掛了!Meta斯坦福地獄級(jí)測(cè)試,GPT/Claude/Gemini交出0分

刷榜AI全掛了!Meta斯坦福地獄級(jí)測(cè)試,GPT/Claude/Gemini交出0分

新智元
2026-05-06 19:24:45
許家印老婆嫁給白人小伙!王鶴棣公司出事了?

許家印老婆嫁給白人小伙!王鶴棣公司出事了?

八卦瘋叔
2026-05-07 10:59:12
蘋果包攬全球銷量前三,安卓5000元陣地告急

蘋果包攬全球銷量前三,安卓5000元陣地告急

互聯(lián)網(wǎng)放大鏡
2026-05-06 20:57:52
倫敦世乒賽!一場(chǎng)3-2,孫穎莎苦戰(zhàn)5局,擊敗金娜英,國(guó)乒2-0韓國(guó)

倫敦世乒賽!一場(chǎng)3-2,孫穎莎苦戰(zhàn)5局,擊敗金娜英,國(guó)乒2-0韓國(guó)

足球評(píng)論qs
2026-05-07 18:23:42
A股:今日行情不對(duì)勁,釋放什么信號(hào)?不用猜了,主力將有大動(dòng)作

A股:今日行情不對(duì)勁,釋放什么信號(hào)?不用猜了,主力將有大動(dòng)作

虎哥閑聊
2026-05-07 11:34:55
日本部署消耗性超廉價(jià)紙板無(wú)人機(jī):售價(jià)2000美元 可在5到10分鐘內(nèi)組裝完成

日本部署消耗性超廉價(jià)紙板無(wú)人機(jī):售價(jià)2000美元 可在5到10分鐘內(nèi)組裝完成

快科技
2026-05-05 10:29:05
馬卡:巴爾韋德和楚阿梅尼在訓(xùn)練當(dāng)中發(fā)生沖突,幾乎大打出手

馬卡:巴爾韋德和楚阿梅尼在訓(xùn)練當(dāng)中發(fā)生沖突,幾乎大打出手

懂球帝
2026-05-07 01:14:34
醪糟再次被關(guān)注!醫(yī)生發(fā)現(xiàn):高血脂患者喝醪糟,不用多久4大變化

醪糟再次被關(guān)注!醫(yī)生發(fā)現(xiàn):高血脂患者喝醪糟,不用多久4大變化

芹姐說(shuō)生活
2026-04-19 15:52:53
無(wú)壓力!王藝迪3-1樸架泫,助女乒橫掃韓國(guó)晉級(jí)四強(qiáng)!

無(wú)壓力!王藝迪3-1樸架泫,助女乒橫掃韓國(guó)晉級(jí)四強(qiáng)!

籃球資訊達(dá)人
2026-05-07 18:56:42
金色梅花5角簽字版報(bào)價(jià)23800元,誰(shuí)家有?

金色梅花5角簽字版報(bào)價(jià)23800元,誰(shuí)家有?

小陳收藏社
2026-03-03 11:54:30
三星手機(jī)中國(guó)正常銷售背后:去年投放13款機(jī)型 銷量至少百萬(wàn)

三星手機(jī)中國(guó)正常銷售背后:去年投放13款機(jī)型 銷量至少百萬(wàn)

快科技
2026-05-07 15:40:20
吃蘭州拉面的人為什么越來(lái)越少了?網(wǎng)友:進(jìn)店小心翼翼的怕說(shuō)錯(cuò)話

吃蘭州拉面的人為什么越來(lái)越少了?網(wǎng)友:進(jìn)店小心翼翼的怕說(shuō)錯(cuò)話

另子維愛讀史
2026-02-27 20:31:34
發(fā)現(xiàn)一個(gè)不爭(zhēng)的事實(shí):女人越是素面朝天不打扮、沉默寡言不多話、從不往人堆里湊,往往這兩個(gè)方面越是強(qiáng)得可怕

發(fā)現(xiàn)一個(gè)不爭(zhēng)的事實(shí):女人越是素面朝天不打扮、沉默寡言不多話、從不往人堆里湊,往往這兩個(gè)方面越是強(qiáng)得可怕

心理觀察局
2026-05-07 08:28:06
被年輕人的“養(yǎng)生壺用法”驚到了!思路一打開,就成了辦公室神器

被年輕人的“養(yǎng)生壺用法”驚到了!思路一打開,就成了辦公室神器

室內(nèi)設(shè)計(jì)師有料兒
2026-05-06 10:20:16
2026-05-07 19:51:00
AI前線 incentive-icons
AI前線
面向AI愛好者、開發(fā)者和科學(xué)家,提供AI領(lǐng)域技術(shù)資訊。
1477文章數(shù) 149關(guān)注度
往期回顧 全部

科技要聞

月之暗面完成20億美元融資,估值突破200億

頭條要聞

19名中國(guó)船員被困霍爾木茲超2個(gè)月:船艙如同巨型蒸籠

頭條要聞

19名中國(guó)船員被困霍爾木茲超2個(gè)月:船艙如同巨型蒸籠

體育要聞

巴黎再進(jìn)歐冠決賽,最尷尬的情況還是發(fā)生了

娛樂(lè)要聞

Lisa主持!寧藝卓觀看脫衣秀風(fēng)波升級(jí)

財(cái)經(jīng)要聞

金融“風(fēng)暴”,AI制造

汽車要聞

雷克薩斯全新純電三排SUV 全新TZ全球首發(fā)

態(tài)度原創(chuàng)

家居
時(shí)尚
游戲
手機(jī)
軍事航空

家居要聞

破繭成蝶 土味精裝房爆改

穿黑褲子別只會(huì)搭白T恤!看看這些顯瘦的搭配,高級(jí)感拉滿

任天堂全新獨(dú)占不是鑰匙卡!預(yù)約開始 玩家放心了

手機(jī)要聞

消息稱某子系迭代旗艦工程機(jī)配備6.6英寸中屏+8500mAh電池

軍事要聞

特朗普:美伊"很可能"達(dá)成協(xié)議

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版