# DHH：程式設計的未來、AI、Ruby on Rails、效率與育兒

> Ruby on Rails 創始人談 AI 對開發者的衝擊、程式設計的未來與遠端工作方法，也聊為人父的體會。

- 原標題：#474 – DHH: Future of Programming, AI, Ruby on Rails, Productivity & Parenting
- 期數：第 474 期
- 釋出日期：2025-07-12
- 嘉賓 / 主題：DHH 大衛·海涅邁爾·漢森
- 網頁版：https://lex.qiaomu.ai/tw/ep/dhh-david-heinemeier-hansson/
- 官方頁面：https://lexfridman.com/dhh-david-heinemeier-hansson/
- 精讀字數：約 8333 字（閱讀約 19 分鐘）

> 本文為 lex.qiaomu.ai 基於原始訪談的 AI 改寫中文精讀，非官方翻譯；引用請註明出處並連結網頁版。

全世界沒有一個人認真相信 cookie banner 對任何人有好處，可就是沒人能擺脫它。DHH（David Heinemeier Hansson，大衛·海涅邁爾·漢森）在 Lex Fridman 的播客裡，用這句話給 GDPR 的十年做了判決。

GDPR 實施十到十二年，在 DHH 看來，它在所有可衡量的指標上徹底失敗。唯一受益的是律師、會計師和官僚。他說歐洲在"善意導致惡果"這件事上做到了世界一流。

> 沒有人相信 cookie banner 對任何人有好處，可我們就是無法擺脫它。它是善意直接通往地獄的紀念碑，而歐洲在這件事上確實是世界級的。（DHH）

他甚至推演了一個荒誕場景。坐馬斯克的火箭去火星訪問網頁，依然會看到 cookie banner。火星到地球的 ping 延遲一百五十秒，頁面載入完，還需要四十五秒才能點完那個彈窗。全世界都被它覆蓋，無人能逃。

這個開場很能說明 DHH 是個什麼樣的人。他不關心一件事的初衷有多高尚，只關心它實際產生了什麼。後面整場對話，無論是談程式語言、談雲服務、談蘋果，還是談家庭，他都用同一把尺子衡量：這個東西真的讓人過得更好嗎？

## 三次嘗試，一次開竅

DHH 學程式設計，前兩次都失敗了。

六歲那年他想要一臺 Commodore 64，父親卻帶回一臺 Amstrad 464。他從雜誌上抄遊戲原始碼，一抄兩個小時，常常因為一個拼寫錯誤全盤失敗。他理解了常量，卻理解不了變數的意義。後來他發現了盜版遊戲，乾脆放棄學習。

十一二歲他拿到 Amiga 500，試了 EasyAMOS，學會了條件語句和迴圈，卻連一個最基礎的遊戲都做不出來。他開始懷疑自己不夠聰明，數學不夠好。這種自我否定持續了很多年。

第三次是大約二十歲。九年級時他接觸到網際網路和 Netscape Navigator，用 HTML 讓文字閃爍，第一次獲得正反饋。他做遊戲評測網站，先學 ASP.NET，後來轉向 PHP。寫 PHP 的時候，他開竅了。

十四歲那年，他在哥本哈根的小臥室裡運營一個 BBS，接了三根電話線。父母知道他有電腦和電話線，但不完全清楚他在倒騰盜版軟體。丹麥的成長環境裡，沒人對盜版有道德質疑。他曾經花一個月送報紙掙的錢，買一個 Sega Master System 遊戲 After Burner II，六百克朗。他還坐火車從哥本哈根到日德蘭半島參加 demo party，拖著一臺十四寸 CRT 顯示器。

demo scene 是用 4KB 記憶體做出接近音樂影片的東西，透過郵寄 3.5 寸軟盤來交換作品。那種極致的資源約束，和後來他追求的美學一脈相承。

## PHP 給的那口甜

PHP 給 DHH 的東西很具體。九十年代末寫 PHP，寫指令碼、FTP 上傳、即時部署，不需要 web 伺服器，不需要任何設定。他把這種體驗稱作 web 開發者人體工學的巔峰，整個職業生涯都在追逐那種快感。

> 我們是怎麼丟掉這種敏感度的？讓人能這樣工作，還能把新人帶進這個行業，給他們那種成功體驗。（DHH）

他讚賞 Pieter Levels 至今還在用 PHP 加 jQuery 加 SQLite 運營多個業務。這證明那種方式真的能跑，跑得還挺好。行業後來把這條路弄丟了，而且丟得理直氣壯。

## JavaScript 的十年混沌

2010 到 2020 這十年，JavaScript 社群在框架和工具鏈上的更迭荒謬至極。一個用 Webpack 的專案，放下五分鐘，它就編譯不過了。DHH 的原話是"為什麼所有東西永遠在壞"。

> JavaScript 社群，尤其是框架和工具，在 2010 到 2020 這十年裡的更迭量，是荒謬的。（DHH）

瀏覽器技術本身也曾經停滯。IE5 贏了之後，微軟解散了瀏覽器開發團隊，整個 web 十年不動。是 Chrome 和 Google 把 web 重新推向前。DHH 承認複雜性有時候是橋，是過渡，但代價大得離譜。

他這裡埋了一個判斷：複雜性本身沒有錯，錯的是把它當成終點。一座橋你可以走過去，但如果所有人都住在了橋上，問題就大了。JavaScript 生態那十年，太多人把橋當成了家。

## Chrome 不該被拆

美國司法部想拆分 Chrome，DHH 的反應只有一句話：這是場災難。

> 在技術領域所有關於壟斷的問題裡，Chrome 是最不該動的那個。（DHH）

他的理由是，瀏覽器領域基本不存在壟斷問題。有 Firefox，有 Safari，有 Chrome，使用者有選擇。Chrome 是給 web 開發者的完整禮物，Google 值得巨大讚譽。真正的問題在移動手機上那個收費站，也就是蘋果的 App Store，不在開放 web 上。要反壟斷，該衝著 Google 的廣告業務去，而不是 Chrome。

這個立場和他後面談蘋果、談 HEY 的那段故事，是同一個邏輯的兩面。開放 web 是他眼裡少有的、還站在開發者這一邊的地方，他不想看著它被拆掉。

## Ruby：為大腦定製的手套

DHH 是透過 Dave Thomas 和 Martin Fowler 在 IEEE 雜誌上的一篇文章發現 Ruby 的。那篇文章用 Ruby 來解釋程式設計模式，因為 Ruby 看起來就像虛擬碼。Ruby 由松本行弘（Matz）在 1993 年開始開發。

DHH 給自己兩週時間寫一個概念驗證，結果一個週末就完成了。他被徹底震撼。

> Ruby 像是為我的大腦量身定製的手套，而縫製它的人我從未見過。這怎麼可能？（DHH）

Ruby 的核心設計目標是程式設計師幸福感（programmer happiness）。對比之下，James Gosling 設計 Java 時的哲學是：普通程式設計師是愚蠢的生物，不能信任他們使用複雜語言。兩種世界觀，導向兩種語言，也導向兩種工作方式。

Ruby 的美學，DHH 舉了幾個例子。5.times，數字 5 也是物件，可以呼叫方法。initialize 對比 Python 的 __init__(self)，乾淨太多。if user.admin?，那個問號是給人類看的交流工具，對計算機毫無意義，但正是這種冗餘讓程式碼讀起來像人話。user.downgrade unless user.admin?，用 unless 替代 if !，更自然。還有 5.days，是 DHH 透過 Active Support 加到 Number 類上的方法。

> 它讀起來像詩。（DHH）

他還提到 Matz 的信任。一個來自丹麥的陌生人，去改動他心愛的作品，Matz 允許了。這種信任程度基本聞所未聞。

## 靜態型別之爭與 Shopify 的賬單

DHH 誓死捍衛動態型別。他認為靜態型別讓超程式設計更難，美學上也令人反感。靜態型別裡寫 User user = new User()，同一個詞 user 出現三次，純屬浪費。他不用 IDE，不用自動補全，用文字編輯器徒手把程式碼鑿出來。

> 我不是用工具寫程式碼，我用文字編輯器。我用雙手把它從螢幕上鑿出來。我不用自動補全。（DHH）

他認為自動補全會提高你對樣板程式碼的容忍度，因為你打得快，就不覺得它在浪費你的生命。

他也承認，千萬行、幾千個程式設計師的大型程式碼庫需要不同的方法。他反對的，是把這套東西強加到個人專案上。

> 用你的帕加尼去 Costco 買雜貨。那是個糟糕的交通工具。（DHH）

支撐他觀點的是真實資料。Shopify 在黑色星期五達到每秒一百萬動態請求，執行著全球約 30% 的電商店鋪，它的單體應用約五百萬行程式碼。如果換成 Go 或者 Java 寫，同樣功能需要兩千五百萬行。Shopify 約一萬名員工，市值一千二百億美元，每季度 GMV 兩千五百億美元。它的創始人 Tobi Lütke 曾是 Rails 核心團隊成員，寫了 Active Merchant 和 Liquid 模板語言。

> Ruby 是奢侈品語言。最高階的奢侈品。它是程式語言裡的香奈兒。（DHH）

## 擴充套件性其實是一道經濟學題

DHH 把擴充套件性拆成兩個維度。一個是執行時效能，也就是單請求的執行速度，目標三百毫秒以內，理想是一百毫秒。另一個是水平擴充套件，加伺服器就行，Shopify 用一千臺伺服器處理每秒一百萬請求。

真正的擴充套件難點是資料庫，是 MySQL，程式語言根本排不上號。Twitter 從 Rails 切走之後，DHH 說它十年零創新，這是 Rails 最好的廣告。

他算過一筆賬。37signals 大約 15% 的運營預算花在 Ruby 應用伺服器上。就算換一門快一倍的語言，也只省下七個百分點的預算。而如果 Ruby 和 Rails 能讓程式設計師生產力提高 10%，那個影響遠遠大於省下的 CPU 週期。

> 關於 Ruby 擴充套件性的問題，本質是經濟問題。（DHH）

> 不是 CPU 核心。是 web 核心，是人力的核心。是人理解和運轉系統的能力。（DHH）

大多數關於語言效能的爭論，其實都在討論一個錯誤的成本項。機器貴還是人貴，答案早就擺在那了，只是爭論的人不願意承認。

## AI 讓能力從手指間流失

DHH 喜歡用 AI 協作，但有個硬規矩：不讓 AI 驅動寫程式碼，只在單獨的視窗裡用它當參謀。他覺得 AI 有點太慢，像回到需要等編譯的時代。

他最大的擔憂是，能力從手指間流失。

> 我能真切感覺到，能力正從我的手指間流走。（DHH）

他舉自己寫的 Omakub 專案，一個用 Bash 寫的 Ubuntu 定製版。讓 AI 寫程式碼的時候，他沒學到任何東西。自己一個字一個字打的時候，他學到了。

> 你是用手指學習的。你要學吉他，可以看無數 YouTube 影片，但你還是學不會彈吉他。（DHH）

他說 AI 讓他每天聰明 0.5%，但讓 AI 驅動的時候，他每天笨 0.5%。他把 AI 看成結對程式設計夥伴，一個可以問愚蠢問題而不會被評判的物件。

Anthropic 的 CEO 預測年底 90% 的程式碼由 AI 寫，DHH 說他不止一點懷疑。

> 第一條規則，沒人他媽知道任何事。沒人能預測六個月之後會發生什麼。（DHH）

但他也接受一個可能：程式設計也許會變成"馬"。從交通工具，變成休閒活動。一個人承認自己熱愛的東西可能被時代降格，需要勇氣。

## Rails 的九條信條

2012 年 DHH 寫下 Rails 的九條信條，原因很簡單：如果不把價值觀記錄下來，社群就會迷失。

第一條，最佳化程式設計師幸福感，致敬 Matz。接受美學和其他目標之間的權衡，允許模糊。IRB 裡 exit 和 quit 都能退出，Python 裡你打 exit，它會給你上一課。

第二條，約定優於配置。反對 Java 框架那種幾百行 XML 配置。系統應該預裝好，不用你從一盒樂高開始拼。

> 約定優於配置，本質是說系統應該預先組裝好。我不是遞給你一盒該死的樂高，讓你拼千年隼。我給你的是一件成品玩具。（DHH）

第三條，選單是 Omakase，廚師精選。Rails 是解決 web 問題的完整嘗試，所有拼圖預先配置。對比 JavaScript 生態，沒有人負責選單，N 乘 N 乘 N 種排列組合，沒有保留的智慧。

第四條，單一正規化。Ruby 的核心是物件導向，也借鑑函式式和命令式。Rails 同樣把各種最佳理念重新混搭。

第五條，追求優美程式碼。class Project 繼承 ApplicationRecord，belongs_to :account，has_many :participants，validates :name，presence: true。讀起來像俳句。

第六條，提供利刃。反對 Java 那種"不給你 foot gun"的哲學。信任人類，允許危險操作，割傷一次就學會了。

第七條，價值整合系統。Rails 解決整個 web 問題，不做零散元件。

第八條，進步優於穩定。DHH 承認這條已經過時。Rails 8 對 Rails 7 使用者基本是無操作升級。是 JavaScript 社群的混沌讓他改變了看法。

第九條，隱含的：單體優於微服務。

> 分散式程式設計第一法則：不要分散式你的程式設計。（DHH）

> 微服務……當你把這個模式用到二十個程式設計師、五十萬行程式碼的團隊上，你就是個白痴。（DHH）

這些信條背後是具體的產品。Basecamp 約十萬行 Ruby 程式碼，約四百二十個螢幕。HEY 也是約十萬行。HEY 釋出時前端只有 40KB，Gmail 壓縮後約 6MB，未壓縮 28MB。Basecamp 首版由 DHH 一人在 2004 年用四百小時完成，至今創造數億美元收入。

四百小時，一個人，一個週末到幾周的量級。工具選對了，小團隊能做出後來幾十年都在產生現金的東西。

## SQL 為什麼一直沒死

ActiveRecord 這個名字直接來自 Martin Fowler 2001 年的《企業應用架構模式》，那本書裡就有這個模式名。核心思想很簡單：表對應類，行對應物件。

它沒有把 SQL 抽象掉，反而讓 SQL 更簡潔，更適合構建領域模型。

DHH 批評其他 ORM 試圖活在純物件世界裡，然後發明一套複雜機制來回翻譯。他認為程式設計師應該理解 SQL，哪怕用著 ORM。

> SQL 是那些經受住 NoSQL 衝擊、至今仍然統治的東西之一。（DHH）

這句話放到今天依然成立。當年喊著要取代 SQL 的一批資料庫，大多已經變成了 SQL 資料庫。持久的東西往往跟時髦無關，靠的是把問題切得準。

## 不要經理，要小團隊

DHH 反對工程經理這個角色。他做過兩年實驗，僱了很優秀的工程經理，結論是：我原來是對的，我們不應該有經理。

經理的問題在於很快失去技術手感，變成"尖頭髮老闆"。最好的反饋來自比你更擅長你工作的人，經理給不了。

37signals 的預設配置是小團隊，兩個人，一個程式設計師加一個設計師。沒有經理，就不需要計劃，可以跟隨從程式碼裡湧現的真相。小團隊本身就是目的，不必把它當成通往大團隊的墊腳石。

> 你沒法用一千人的團隊做出 Basecamp 這樣的軟體。你會做出一千人做的那個軟體，那完全是兩回事。（DHH）

他也反對 VC。拿別人的錢，意味著他們要回報。

> 不要拿風險投資。（DHH）

37signals 有個資料很有意思：十九年沒有全職財務人員，後來因為沒有收銷售稅被罰五百萬美元，才不得不僱。他們還曾有過十年全職資料分析師，後來選擇用財務人員替代。這種近乎偏執的精簡，和他在雲服務上的做法是同一種性格。

## Jason Fried、Bezos 與一段被當成理所當然的信任

DHH 和 Jason Fried 合作了二十五年。兩人住在不同城市，每週直接交流不到兩小時。早期產品討論激烈到員工擔心公司要散架，但爭論針對想法而非個人：Jason，你是個白痴，你是個白痴是因為你看這個問題的方式錯了。

兩人各有明確的能力領域。Jason 信任 DHH 的技術決策，DHH 信任 Jason 的設計和產品方向。他們刻意避免把彼此耗盡，因為關係有有限的交換量。兩個人都喜歡做具體工作，DHH 程式設計，Jason 設計，不滿足於只是頭腦風暴。

Bezos 透過私人辦公室買了二級股份，金額幾百萬美元，從 DHH 和 Jason 個人手中買，錢沒進公司賬戶。DHH 說這是疫苗，讓他們有底氣拒絕 VC。

寫投資提案的時候他們大笑，故意寫了個瘋子才會接受的價格。Bezos 的投資團隊說這毫無經濟意義，Bezos 說：我不在乎，我想投資這個人。

Bezos 每年和他們會談一次，說的話是：你們在做很棒的事，繼續做。我不懂怎麼經營你們的業務，你們懂。

DHH 從 Bezos 那裡學到長期信念和 disagree and commit。他對這段關係有一些遺憾，因為曾把這種信任視為理所當然。他還說，會議有毒。

> 會議有毒。（DHH）

## 恨意是熱愛的副產品

DHH 引用 Kathy Sierra 的部落格 Creating Passionate Users。如果你創造出有價值的東西讓很多人喜愛，必然產生等量的反作用力，也就是恨你的人。

> 如果你在創造有價值的東西、讓很多人熱愛它，你必然創造出等量而反向的恨意力量。唯一逃脫它的方式是平庸。（DHH）

任何試圖討好所有人的人，最後只能平庸。反過來說，如果身上一點爭議都沒有，可能該反思自己到底做了什麼。

## 流、腳踏車與 top 5%

DHH 引 Mihaly Csikszentmihalyi 的《Flow》。這本書的研究起點是"為什麼有些人幸福、什麼時候幸福"。結論是，人最幸福的時刻，是能力被拉伸到略超當前水平的時候，而不是坐在 Mojito Island、沒有義務和責任的時候。

流狀態里人會忘記時間空間。程式設計一個難題，你以為過了二十分鐘，實際過了三小時。人回望這些時刻會感到最大的快樂。如果移除所有問題，人會抑鬱。

成功賣掉公司後，退休兩週就會無聊到極點。失敗則後悔過去十年。繼續經營也永遠不會更容易。如果只留下工作，會全面失敗。DHH 想要流帶來的幸福，但要以能持續四十年甚至五十年的方式做。

第一次體驗只發生一次，大多數人無法第二次複製成功。Basecamp 是 lightning in a bottle，第二家公司很少能同樣成功。創始人容易傲慢，認為成功只因自己厲害，但有時只是時機之門開啟又關閉。

如果問他想對年輕的自己說什麼，他說不會說任何話，不會剝奪因無知而獲得的人生經歷。智慧要一次一次摔碎再重建。新起點最大的祝福，就是不知道會有多難，不知道自己不知道什麼。

責任是意義的關鍵。Jordan Peterson 教他表達這一點，Viktor Frankl 在《Man's Search for Meaning》裡說，只要有理由，人能忍受任何苦難。

二十歲、三十歲、四十歲都不可回。Derek Sivers 有個腳踏車的比喻：全力騎十九分鐘，或者享受風景慢 5% 用二十一分鐘，只差兩分鐘。

如果想成為世界第一，必須犧牲一切，痴迷於一件事。DHH 不追求第一。他自認不是最聰明、最好、最有天賦的，但能組合不同領域。top 5% 比 top 0.1% 容易二十倍或一百倍，你可以在五件事上同時做到 top 5%：寫作、賽車、程式設計、經營公司、家庭。

Karl Marx 描述過早上釣魚、晚上錘鐵、週末畫畫的生活。DHH 無法忍受單一隧道視野帶來的異化。深度程式設計數週甚至數月之後，必須浮上來做別的事，再以全強度回來。

## 從雲端搬回自己的機房

批評者說，如果 37signals 追求 moon、VC、AI，可能大一百倍。DHH 承認機會成本真實，但以公司這個規模來看，每年省下兩百萬美元基礎設施賬單，其中一半到三分之二直接進入底線，歸所有者和員工分紅，這筆賬值得算。

他反對矽谷那種"成本不重要"的思維。低效業務和低效程式一樣像腦中刺，看 expense report 裡的浪費讓他不適。

AWS 曾經用於一切，包括 HEY，總雲賬單峰值約三百二十萬到三百四十萬美元。雲的推銷話術是更快、更容易、更便宜，DHH 曾經相信，決定不再擁有伺服器。後來他發現 AWS 運營著約 40% 的毛利，雲的那套話術在他看來根本站不住腳。

AWS 也沒有更容易。IAM 規則、access parameters 之類的東西複雜得很。遷出自有硬體後，沒多僱一個人，團隊不變。

"更快"只在需要十五分鐘內上線一千臺機器時明顯，日常用不到。買伺服器便宜得多，可以買更多機器，不必追求自動縮放的極致效率。

2023 年初他受夠了賬單，六個月內把七個主要應用從雲端遷到自有伺服器，包括 compute、caching、databases。伺服器從 Michael Dell 那裡買，Dell 已經營業四十一年。S3 因為四年合同繼續使用，雲裡拿到好價格通常需要多年合同，compute 常是一年合同。

他預計五年省約一千萬美元，基礎設施支出降一半到三分之二。

DARPA 原設計是分散式網路，沒有單一節點控制一切。US-East-1 宕機時，看似三分之一網際網路離線，這是對 DARPA 設計的侮辱。

自有硬體現在完全可行。現代 CPU、1U 機器的記憶體容量、TSMC 和蘋果推動的進步，年增 15% 到 20%。NVMe 和 SSD 改變了系統設計。摩爾定律本應讓價格下降，雲卻反著來。

自有機器有痛點。計算機固有痛苦，需要機架、網路、專業 know-how。但整個網際網路曾經就是靠插乙太網、插電源、啟動 Linux 建成的。

資料中心用 Summit，前身是 Deft，白手套服務，DHH 不親自去。看到 IP、drives 上線，體驗類似雲，但便宜很多。

他還提到 homelab：個人伺服器、家庭光纖 5 gigabit。2004 年的技術和 100 megabit cable 就能支撐 Basecamp 數百萬 MRR。從臥室就能啟動公司。

xAI 不租對手的 GPU，自建十萬塊 GPU 的帳篷，以創紀錄速度搭起來。擁有硬體在小型、中型、前沿計算三個尺度上都有優勢。

## 招聘、Elon、蘋果與 HEY 的那場仗

DHH 招聘不看簡歷、學校、成績、血統，看 cover letter 和程式設計測試。遠端工作要求好寫作，程式設計測試模擬真實工作。他多次被程式碼質量顛覆預期：簡歷完美的人程式碼不行，看起來不確定的人程式碼極好。

Elon 不是在找人才，是在吸引人才。使命足夠大膽、清晰，人才因為使命而來。Elon 懂很多東西，能評估工作產品的質量，快速分辨誰在胡說，能押注在能去火星的人身上。他能簡化問題，需要願景加現實錨定，加對結果的激情。

蘋果早年，DHH 是死忠。2000 年代初蘋果以 Unix 為底，他從微軟逃離。在哥本哈根商學院用第一臺白色 iBook，轉化了半個班。2004、2005 年他和 Jason 做蘋果開發者廣告。Mac 使用者二十年，2007 年和 Jason 排隊五小時買第一代 iPhone。

轉折在 iPhone
