没人认真相信 Cookie 横幅有用

原标题Nobody Serious Believes Cookie Banners Help Anyone

Lex Fridman 与 David Heinemeier Hansson 聊了六个小时,话题涵盖 Ruby、Rails、AI、离开云、苹果的 App Store,以及小公司为什么依然可以拒绝别人的钱。

DHDHH嘉宾
频道
Lex Fridman Podcast
发布
2025年7月12日
视频
6:08:48
阅读
33 分钟
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

Ruby on Rails 的创造者、37signals 的共同创办人 David Heinemeier Hansson,与 Lex Fridman 展开了一场漫无边际的长谈,话题从 Commodore 杂志一直聊到勒芒。他为程序员幸福感、动态类型和两人团队辩护;拿 Shopify 黑色星期五动辄上百万次的请求量,证明 Ruby 能够扩展;并把 cookie 横幅、云账单和苹果 30% 的抽成,看作同一种失败:出发点很好,却没有人能把它拆回去。贯穿全篇的,是一种你仍能用指尖感受到的功力,无论它来自写代码、开赛车,还是你不肯把它变成供应商关系的开源礼物。

  1. 1GDPR 留下的持久纪念碑是 cookie 横幅:没有一个认真的人觉得它有用,可全世界至今都甩不掉它。
  2. 2Ruby 就像一位素未谋面的人为他的大脑缝制的手套——Matz 优化的是程序员幸福感(programmer happiness),他并不打算替普通程序员防范他们自己。
  3. 3黑色星期五当天,Shopify 从一个数百万行代码的 Rails 单体应用中,提供了约每秒一百万次动态请求的服务。DHH 拿这一点回应“Ruby 无法扩展”的说法。
  4. 4他会整天在旁边的窗口里和 AI 结对编程,但不让它来开车,因为他一停下打字,就能感觉到功力从指尖流失。
  5. 537signals 的默认配置是:一个程序员和一个设计师负责一个功能,没有工程经理。小团队可以顺着工作中浮现的真相前进,而不必提前 18 个月做计划。
  6. 6按他的说法,开源是一种礼物交换,不是供应商关系:用户无权要求路线图,维护者也不能在多年后寄来一封勒索信。
全文

按章节阅读完整文稿

01

他前两次学编程都失败了,直到 PHP 让电脑听话

Lex Fridman 开场时提到,DHH 如今被当作传奇程序员,但他开始学编程其实很晚,而且是在两次失败之后。他五岁时第一次坐到电脑前,是在邻居家的 Commodore 64 上,和一群孩子挤在哥本哈根的一间卧室里玩《Yie Ar Kung-Fu》。他缠着父亲要一台,结果到手的是一台 Amstrad 464。1984 年的杂志会在末尾印上游戏源代码,他要花两个小时把代码一字一字敲进去,结果敲错一个字,整个程序就跑不起来。常量他还看得懂,变量却怎么也看不懂。后来他发现了盗版,学习的念头也就悄无声息了。

第二次尝试大约是在 11 或 12 岁,用的是 Amiga 500。那仍然是他最喜欢的电脑,用的编程语言就叫 EasyAMOS。他学会了条件判断和循环,却连一个基础游戏都做不完,于是他认定自己不够聪明,不是那种擅长数学的孩子。他能参与的是欧洲的 demo 圈:各个团体比拼谁能把接近音乐录影带水准的演示压进四 KB,再用邮寄的 3.5 英寸软盘互相交换。14 岁时,他在一间小卧室里架起一个 BBS,接了三条电话线,机器是一台 Amiga 4000,大家在上面交换 demo 和盗版软件。他说,在丹麦的这种文化里,连“盗版是错的”这种争论都从未出现过。他曾用一个月送报纸挣来的钱,给 Sega Master System 买了《After Burner II》,花了 600 丹麦克朗,此后他再也没有那样等过。

第三次尝试才真正开了窍。九年级时,一次大学组织的参观活动让全班坐在 Netscape Navigator 和一个文本编辑器前面。他用一个 HTML 标签让文字闪烁起来,第一次体会到一种不需要先碰到报错信息就能获得的成功感。游戏评测网站把他带到了 ASP,之后又到了 PHP,而循环和变量终于在 PHP 里组合成了他能真正发布的应用。他把 1990 年代末的 PHP 称为网页开发体验的巅峰:写个脚本,用 FTP 传上去,刷新页面就行。没有框架,没有构建,没有繁文缛节。从那以后他一直在追寻那种感觉,所以看到 Pieter Levels 仍然用 PHP、jQuery 和 SQLite 经营着生意,他就来了精神。他认为,这个行业把太多这种感觉交给了“复杂性的兜售者”。Rails 8 主打免构建,是他想把 1990 年代的轻松找回来的尝试,但他并不假装 1990 年代在每个方面都更好。

02

JavaScript 那十年的折腾是一座桥,人们却想在上面住下

JavaScript 是 DHH 仅次于 Ruby 的第二喜欢的语言,他并不讨厌这门语言本身。他讨厌的是 2010 年代的工具链:webpack 项目你放下五分钟就可能编译不过,框架每个季度重写一遍,Hacker News 上的讨论把上一季的技术栈当成道德缺陷。他把那段时期称为黑暗时代。2000 年代中期的浏览器停滞不前,那是在 Internet Explorer 5 赢下浏览器大战之后,按他的说法,微软还解散了那个团队。Firefox 点燃了一些东西;Chrome 以及谷歌对开放网络的依赖,真正把这个平台往前推了一步。他承认,随之而来的很多复杂性是座桥,还没到终点。错就错在把桥当成了房子来住。

他说,那些复杂性有一部分来自组织架构。在 Facebook 那样的公司里,网页开发者从一个人变成了一堆细分岗位的组合,复杂性也跟着这些切片一起生长。另一部分复杂性,是让浏览器走到今天所必需的:现在你可以写一个文本文件、把它发布出去,不用预处理器也能得到一个像样的应用。他几乎有些惊叹:他九年级时做的一个网页,过了 30 年仍然能正常显示;而造一个新的浏览器引擎,则是阿波罗计划级别的工程。所以他资助了 Ladybird,也仍然称 Chrome 是“送给网页开发者的一份完整礼物”。间谍式追踪和广告他会批评,浏览器本身他不会批评。

03

拆分 Chrome 会是一场灾难,cookie 横幅已经是一场灾难了

被问到美国司法部推动把 Chrome 从谷歌拆分出去时,DHH 毫不含糊:这是一场灾难。他对科技行业的反垄断持同情态度,但浏览器是错误的靶子。Firefox 还在,Safari 也还在,没有人被迫通过 Chrome 才能使用开放网络。他说,真正的收费站设在手机上。如果想对付谷歌,应该去盯它在广告供需两端的位置。别去动那个引擎,它让网络没有变成一堆由苹果和微软独占的原生应用商店。他还补充说,Chrome 并不是靠锁定 Android 赢的;和 iOS 不同,Android 仍然允许你使用一个真正的替代引擎。Edge 只是换了身衣服的 Chrome。他自己用的搜索引擎 DuckDuckGo,以前也是换了身衣服的 Bing。

他希望立法者记住的警示案例是 GDPR。十年、十二年过去了,可以衡量的结果就是:人人讨厌的 cookie 横幅,既没有保护隐私,又“只让律师、会计和官僚发了财”。他把它们称为善意一路通向地狱的纪念碑,并说欧洲在这门手艺上堪称世界一流。互联网一下子变丑了。更糟的是,这个失败大家已经知道十年了,却仍然无法废除。在他看来,对任何声称要让生活变得更好的官僚体系来说,这都是一份破产声明。

最有笑点的,是 Lex 在节目里拿来当亮点的那一句。问题不光出在欧盟,地球上任何地方你都躲不开 cookie 横幅。“就算你坐上马斯克的火箭去该死的火星,打开一个网页,照样会看到 cookie 横幅。” Lex 拿 150 秒的 ping 开玩笑,DHH 则估计光是点掉横幅就要 45 秒。宇宙里没有人能躲开这些废话。整场对话的其余部分,都是用同一个标准去检验语言、云、应用商店和家庭:先别管出发点,这东西到底让谁的生活变好了没有?

04

Ruby 像一副手套,由一个信任陌生人的陌生人为他缝制

PHP 教会了他怎么上线,但他从来没有真正爱上它。这段恋情始于 2001 年,Jason Fried 通过邮件雇用了他。当时他还只是个在网上回答 PHP 问题的孩子,人在哥本哈根,对方在芝加哥。24 年过去,他们仍在一起工作。客户项目总是死在邮件往来和“finalfinal_v06”的 FTP 文件夹里,于是他们做出了 Basecamp:一个把项目集中在一处的地方,简单到不需要任何培训课程。这是 DHH 第一次可以自由选择工具。他当时在 IEEE 上读 Dave Thomas 和 Martin Fowler 的文章,习惯把 Ruby 当作伪代码来写。Matz 在 1993 年开始开发这门语言。DHH 给自己两个星期的时间,让它能连上数据库、渲染 HTML,结果只花了一个周末。“Ruby 就像一位我从没见过面的人,为我的大脑量身缝制的一副完美手套。”

美感本身就是关键。整数也是对象,所以 5.times 就是一个几乎没有多余符号的循环。Python 的 __init__(self) 让他不快:这么重要的方法,却用了最难看的拼法。Ruby 的 initialize 拒绝缩写,那些缩写只对解析器有好处。user.admin? 里的问号对机器毫无意义,对人却意义重大。user.downgrade unless user.admin? 省掉了 if !user.admin? 里那个感叹号的麻烦。这些写法最终都编译成同一个东西。它们之所以存在,是因为 Matz 的头号目标是程序员幸福感,而 DHH 把这一点和 James Gosling 更阴暗的看法放在一起对比:后者认为,普通程序员不能被托付锋利的工具。Matz 甚至允许你扩展基础类。DHH 通过 Active Support 加上了 5.days,让缓存过期的代码读起来像英文。一个来自丹麦的陌生人,被允许写下新的章节,而读者分不出那些章节和 Matz 自己写的有什么区别。

元编程把这种信任又推高了一个档次。Active Record 让你可以像写关键字一样写 has_many :comments 和 belongs_to :account;它们其实是建在 Ruby 之上的领域特定语言,没有他在 Lisp 里见到的那种层层叠叠的括号。他承认自己从没真正写过 Lisp,只是看那些符号噪音就下了判断。他对 Smalltalk 的态度是尊重,把它当作一次实验。他说,Ruby 的第一批草稿慢得可怕;但经过数百人年的打磨,这门语言既优美又快,而 2025 年人们在用的东西,大约有 90% 早已出现在那份初稿里。他还有一个带点促狭的开源习惯:第一版故意发得略有毛病,好让协作者有一件一眼就能看出来要修的东西。

05

静态类型是开市客里的帕加尼,Shopify 是这门奢侈语言的收据

DHH 会誓死捍卫动态类型,因为动态类型本来就是 Ruby 的一部分:鸭子类型(duck typing)、运行时方法,还有不像 TypeScript 那样体操式的元编程。他在 Turbo 里试着用 TypeScript 写元编程之后,就把 TypeScript 从 Turbo 里拿掉了。那种典型的 User user = new User(),把同一个词重复了三遍,他没有这份耐心。他说,自己写代码从不靠工具。“我是徒手从屏幕里一点点凿出来的。” 他刻意不用自动补全,也不用 IDE,因为一旦样板代码敲起来不费力,你就会习惯代码里铺满这些东西。他靠测试而不是编译器来抓 bug。他完全承认,一个 1000 万行代码、几万名程序员的代码库需要不同的方法。他拒绝的是另一种想法:同样的方法应该用在卧室里开发 Basecamp 的人身上。“你不会开帕加尼去开市客买菜。”

Shopify 是他的头号案例。黑色星期五当天,它处理的动态请求大约每秒一百万次,支撑着互联网电商店铺的大约 30%。这座单体应用约有 500 万行 Ruby 代码;他估计,同样的系统如果用 Go 或 Java 来写,会有 2500 万行。公司员工将近 10000 人,市值约 1200 亿美元,季度 GMV(商品交易总额)大约 2500 亿美元。Tobi Lütke 曾是 Rails 核心团队成员,写过 Active Merchant 和 Liquid 模板语言,如今做 CEO 仍然会盯着细节。DHH 设计 Rails 时,想的是 Tobi 一个人写 Snow Devil 的那个阶段。Snow Devil 是一家只有一名开发者的滑雪板店,后来发展成了这家公司。从 FTP 时代的新手,到世界级的商务平台,这段路本身就是他的论点。

他笑着说,Twitter 离开 Rails 之后,成了这个框架有史以来最好的广告:重写之后,“十年里他妈的什么事都没发生”。拆开来说,“规模”其实是两样被人混在一起的东西。一是延迟:他希望请求在 300 毫秒以内,最好在 100 毫秒左右。二是水平扩展,而且无论什么语言,都要靠加机器来扩展。难点在 MySQL,不在 Ruby。YJIT 是 Shopify 送给整个生态的礼物,在他们的规模上能挤出 5% 到 10% 的性能,但他们做大并不需要它。真正的问题是经济账。37signals 曾经把大约 15% 的运营预算花在运行 Ruby 的应用服务器上;语言速度翻倍,对业务利润率的影响只有几个百分点,而程序员效率提高 10%,影响则大得多。Ruby 是一门奢侈品语言,是“编程语言界的 Coco Chanel”。有些请求便宜到根本用不着它,大多数商业软件则负担得起。真正昂贵的核心是湿件(wetware):也就是需要理解系统的人。

06

AI 能让他每天聪明 0.5%,除非他让它来开车

Lex 喜欢和 AI 协作,认为像 Ruby 这样人类可读的语言,是人与 AI 配对时的高带宽接口。DHH 同意这个带宽的说法:马斯克在谈 Neuralink 的那期播客里说,语音的比特率很低,而 Ruby 每个字符能装下更多概念。他一直在用 AI,放在一个单独的窗口里。他试过 Cursor 之类的“驾驶”工具,但不喜欢。“我能切实地感觉到功力正从我的指尖流失。” 他用 Bash 写自己的 Ubuntu 改版 Omakub,为了同一个条件判断,他向模型要了很多次,结果在没学会这门语言的情况下就把它用上了。他说,人要靠手指来学,光看吉他的 YouTube 视频学不会吉他。终端里的 Claude Code 也让他觉得像在等编译,而他用了 20 年 Ruby,身上已经没有“等编译”的耐性了。

更深的担忧,与优秀程序员被提拔进会议室之后的遭遇如出一辙:他们会脱离实际。他不想变成“一群 AI 乌鸦的项目经理”。如果只看结果,他 20 年前就能去当项目经理。对他来说,编程也是在演奏一件乐器。想看看一个点子长什么样时,凭感觉编程(vibe coding)没问题;但它不会让你变成程序员,就像 Excel 没有把会计变成软件工程师一样。它扩大了能够探索想法的人群,却替代不了手艺。他坚持说,编辑本身就是动手者的回报。把提示词工程当成一门法师职业,是白日梦;AI 美好的承诺在于:一个不懂底层机制的人,哪怕只说了一句笨拙的话,也能得到他想要的东西。

AI 作为结对编程的搭档,从不嘲笑愚蠢的问题,让他在一天结束时大约聪明了 0.5%。而在 Omakub 上让它当驾驶员时,他觉得自己变笨了 0.5%。他对 Anthropic 的 CEO 所说的“年底前 90% 的代码将由 AI 来写”颇为怀疑,并背出了自己的第一条原则:“他妈的没人知道任何事。” DeepSeek 可以本地运行的思考盒子,比 ChatGPT 更让他害怕。《The Lawnmower Man》曾承诺五年内实现 VR,30 年后,他的孩子在玩《Gorilla Tag》。飞机从莱特兄弟发展到喷气式客机只用了四十年,之后就停滞了。COBOL 至今仍在负责开社保支票。因此,他给年轻程序员的建议几乎固执地简单:如果你喜欢编程,就通过编程来学。它可能会变成一匹马:用来消遣,不再当交通工具,那也没什么不好。他已经有几十年时间,因写 Ruby 拿到了数百万美元的报酬。他感到的是感激,没有遗憾。给自己留好退路,这样哪天不得不转型时,你也不会后悔走过的这条路。

07

Rails 写下九条理念,免得社区不明就里地拆掉切斯特顿栅栏

2012 年,DHH 写下了 Rails 的信条,因为不把价值观记录下来的社区,迟早会被持有其他想法的人填满;然后有人随便拆掉切斯特顿栅栏,狼就进来了。第一条是程序员幸福感,致敬 Matz,也包括允许歧义:IRB 同时接受 exit 和 quit,而 Python 则会教训你去读手册。约定优于配置诞生于 Java 的 XML 地狱:选定 post_id 就行,别再让人对着一盒乐高去拼千年隼号——直接给他们一个成品玩具,而且他们仍然能把它拆开。菜单是 omakase(主厨精选):Rails 试图用一份主厨精选菜单来解决整个 Web 问题;而在 JavaScript 生态里,没有人对控制器、数据库和其余部分的搭配负责,所以智慧无法积累。没有唯一的范式:核心是面向对象,同时借用了函数式和命令式。美丽的代码是一个要刻意追求的目标,不靠运气。Lex 说,一个 belongs_to / has_many / validates 模型读起来像一首俳句。

要给锋利的刀,不要 Java 那种黄油刀。重视集成的系统。他最想改写的,是“进步优先于稳定”这一条:从 Rails 7 升到 Rails 8,基本等于什么都没改。2010 年代的 JavaScript 让他明白,把频繁更迭当作一种价值,是一种羞辱。还有一条隐藏的第十诫,就是单体架构。微服务放在奈飞的规模上也许说得通;用到二十个程序员、五十万行代码的项目上,就是“你是个白痴”。分布式编程的第一条规则是:不要把你的程序分布出去。Basecamp 和 HEY 各自大约有 100000 行 Ruby 代码。Basecamp 大约有 420 个屏幕。HEY 上线时只有 40 KB 的 JavaScript,而 Gmail 未压缩时约 28 MB,压缩后约 6 MB。他说,把前端和后端拆开,是 Web 开发史上最大的罪过之一。

Active Record 是王冠上的明珠,它的名字直接取自 Martin Fowler 在《Patterns of Enterprise Application Architecture》(2001)一书中的模式,这本书他读过很多遍。表变成类,行变成对象。它并不隐藏 SQL,只是让繁琐的部分没那么麻烦,这样你仍然能学会查询语言——即使用了 ORM,也应该学。SQL 挺过了 NoSQL 的十年,至今仍是王者。其他 ORM 想活在纯对象的世界里,结果还是发明了一层翻译层;Active Record 则承认,记录终究要存进 SQL 数据库,所以它围绕列来组织自己。Rails 的上手坡度很平缓,和 Ruby 的做法一样:生成器可以在你还没弄懂任何东西之前,就把一个博客显示在屏幕上。这是一种邀请,让你去提升能力,并不是说能力已经无关紧要了。这也是他和那个“程序员已经不用再懂东西了”的 AI 梗争论的地方。

08

经理、会议和别人的钱,是小软件的死法

他曾经怀疑过自己对工程经理的排斥,于是招了几个不错的经理,自己也带了两年的一对一,最后得出结论:他原先的判断没错。并不是每个程序员都需要每周和经理谈一次心。对工作最好的反馈,来自比你更擅长这份工作的人;而那些不再写代码的前程序员,变成爱指手画脚的老板,速度快得惊人。在 DHH 的记忆里,John Carmack 的 id Software 当年不过是几个设计师和程序员,在做《Quake II》。Gmail 最初是 Paul Buchheit 的一个副业项目。37signals 19 年没有全职财务人员,把账本当成小冰淇淋店来管,却也收进了数亿美元的营收;后来一场拖了两年、涉及约 500 万美元的销售税烂摊子,终于让他们招到了一位财务负责人,这位负责人替代了十年来一直需要全职投入的分析工作。如果非要二选一,他会选会计。

默认的团队规模是两个人:一个程序员,一个设计师,负责一个功能。你不可能靠一千个人做出 Basecamp,做出来的只会是千人规模的软件。人本身无法扩展,沟通的扩展性则更差。小并不是通往大的跳板——这是《Rework》一书的主张——而保护它的办法很简单:不要接受风险投资,因为别人的钱要求回报,通常会通过企业销售那套打法,把产品变成一台千人规模的机器。Jeff Bezos 个人从 Jason 和 DHH 手里买下了一些二级股份,每人几百万美元,钱并没有注入公司。他的投资团队说,这个价格在经济上毫无道理。Bezos 说他不在乎,他就是想投资这个人。那笔钱像是一剂疫苗,防止他们接受规模更大的风投支票。每年他都会打一通电话,让他们继续做很棒的事,因为他自己也不知道该怎么经营他们的生意。DHH 回头看,对当时那份信任有些想当然了,心里有些遗憾。

Jason Fried 和 DHH 合伙已经二十五年,其中大部分时间住在不同城市,一周通话通常不到两小时。早期的产品争吵非常激烈,激烈到员工以为公司要完蛋了;但在会议室里,它从来不是针对个人的——“Jason,你这个笨蛋”,指的是那个想法错了。各自明确的专长是他们之间的黏合剂:Jason 负责设计和产品,DHH 负责技术,在两者重叠的地方,他们借用 Bezos 的“不同意但执行”原则。他们喜欢做具体的工作,不喜欢待在想法层面。“会议是有毒的。” 那些把自己提拔成全职想法人的创始人,从来不用亲自落地,因此也就不会拖慢这匹马的脚步。谈到远程工作的孤独,DHH 不请自来的建议是:娶个老婆,生几个孩子。家庭、每周 40 小时的工作、爱好和朋友,是让人坚持 25 年的办法,免得冲着一个自己会讨厌的退出狂奔。莫希托岛只是海市蜃楼。Basecamp 没有变成 Jira,不算失败;赚到的几亿美元,还连带着保住了生活,这条路在硅谷仍被视为禁忌知识。

09

如果人们喜欢你做的东西,宇宙会用黑粉给你开账单

亚马逊这样真正改变了商业的公司,必然会有一大群黑洞般的讨厌者,否则宇宙都会失衡。DHH 把这套“物理学”归功于 Kathy Sierra 的《Creating Passionate Users》,正是那本书把它刻进了他的脑子里:很多人热爱的价值,会产生同样大小、方向相反的一群讨厌你的人。唯一的出路就是平庸。他在对话后面又把同样的账算到了马斯克头上。重点是别去收集敌人。要做到的是:不再把争议当成你做错了事的证据,也不再把无聊当成你很安全的证据。

反对退休的理由,是同一套物理学的另一面。有野心的人,不会长久地坐着喝莫希托。Mihaly Csikszentmihalyi 的《Flow》——这个名字 DHH 专门跟 AI 练过发音,免得在节目里念错——研究发现,人在略微超出自身当前能力的挑战中最快乐,沉浸其中时,三个小时可能只觉得过了二十分钟。把问题都拿走,这些人就会抑郁。卖掉公司、坐着不动,是地狱;牺牲了十年却失败,是地狱;只工作而不停下来,也是地狱,因为它永远不会变得轻松。他想在 40 到 50 年里都保持这种心流,这意味着不能把全部筹码押在工作上。可遇不可求的好运很少会再来一次,而他也不会去告诉年轻时的自己什么,因为对前路有多艰难的无知,本身就是福气的一半。借 Jordan Peterson 和 Viktor Frankl 的思路,责任感才是苦难能够承受的理由。你的 20 岁、30 岁、40 岁,都拿不回来了。

Derek Sivers 讲的那次骑车,就是他想要的那种取舍:全力冲刺,用 19 分钟;或者慢 5%,用 21 分钟,两者只差两分钟,而且还能听到鸟鸣。要在某件事上做到世界第一,需要一种近乎狂热的执念——Senna、Michael Jordan 都是这样——而他很早就知道自己不是那种人。他的 EasyAMOS 就失败过。更划算的选择,是做到前 5%。他估计,这比做到前 0.1% 要容易 20 到 100 倍,而且你可以同时在五件事上保持这个水平:写作、赛车、编程、一家公司和一个家庭。马克思那种“早上钓鱼、晚上打铁”的生活,在他看来是一种异化的症候,他无法接受。在代码里扎进去几周之后,他必须透口气,去网上跟人斗斗嘴,或者开会儿车,然后编程的劲头又会以全速回来。

10

云的卖点是更容易、更便宜、更快,三条里有两条是假的

网上流传的梗是:“DHH 离开了云。” 批评者的版本是:37signals 把时间浪费在抠成本上,而不是拿风险投资和 AI 去冲月球。他说,机会成本是真实存在的。每年省下约 200 万美元——基础设施账单的一半到三分之二,直接计入利润并参与分红——在他们的规模上,仍然值得去做。硅谷那种“成本无所谓”的风气,在他看来难看极了,就像程序里那些杂乱的符号噪音,扎眼又碍事。HEY 上线时完全跑在 AWS 上。公司的峰值账单大约每年 320 万到 340 万美元。当初的说辞是更容易、更便宜、更快,耳边回响着 Jeff 说过的那句话:竞争对手的利润率,就是你的机会。他指出,AWS 的利润率大约在 40% 左右。在他看来,这套说辞是假的。

它并没有变得更容易:IAM 规则比 Linux 还难搞。它也没有变得更便宜:他们在没有招任何人的情况下,把开支砍掉了一半到三分之二。更快这一点,只有在你需要 15 分钟内拉起上千台机器时才成立;如果你只需要 20 台服务器,完全可以等一个星期,多买些硬件,也不必信奉自动扩缩容那一套。2023 年初,他们用六个多月的时间,把七个主要应用从云端的计算、缓存和数据库迁了出来,搬到一批来自 Michael Dell 的服务器上(这家公司做服务器已经 41 年了)。S3 留在了云上,签了一份四年的合同,因为在云上拿到像样的价格,本来就得绑定好几年。他估计,五年下来能省下约 1000 万美元。US-East-1 出一次故障就拖垮三分之一的互联网,在他看来,这是对 DARPA 设计初衷的侮辱:那个设计要的,是一张没有任何一个节点能被一击致命的网络。

自己拥有硬件是有痛苦的——电脑本来就让人头疼——但所需的专业知识又不是造核火箭。整个互联网在十几年前云兴起之前,本来就是以太网、电力和 Linux。他们不用开车去数据中心;Summit(原名 Deft)提供白手套式的服务,他们看到的只是 IP 和硬盘陆续上线,就像用上了半价的云。下一个让他手痒的,是家庭实验室:5 千兆的家用光纤,NVMe 让硬盘的感觉像是另一种内存,还有一间卧室,就能承载早期 Basecamp 那种数百万美元 MRR(月经常性收入)规模的业务。xAI 没有去租用竞争对手的 GPU,而是把100000 块 GPU 放进帐篷里,这是同一个思路在先锋级规模上的体现。长期使用,就该自己拥有。连续租用多年,是其他行业不会犯的糊涂。

11

马斯克能吸引人才,苹果却为“存在”这项特权收取 30%

DHH 认为,马斯克主要不是靠“找”来网罗优秀的人。他把使命讲得足够清楚——火星、电动交通、联网的地球——于是最优秀的人自己会找上门来;喜欢他的人和讨厌他的人,也会按照 Kathy Sierra 所说的那种比例一起出现。招人的超能力在于能够评估工作:闻得出谁在吹牛,押得准谁能把你带到火星,还能告诉工程师某件事可以更简单,而且他说得对。37signals 招人看的是求职信(远程工作本质上就是写作),以及一套模拟真实工作的编程测试,不看学历和出身。他自己也在两个方向上看走过眼:有人简历完美、代码却根本没法用;也有人他拿不准,却想第二天就把人拉进团队。乔布斯也有一种类似的羞辱,却能激出更好的工作。他认为,苹果失去了那个会说“这还不够好”的混蛋,换来的却是一位物流天才。账单之后才来:Vision Pro、摇摇欲坠的软件质量、他估计平均年龄约 75 岁的董事会、年过 60 岁的管理层,还有在 AI 上落后的公司。他今年 45 岁,却已经得逼着自己重新做一个初学者。

他并不是一直讨厌苹果。Mac 上的 Unix 让他摆脱了 1990 年代的微软。他用一台白色 iBook,把哥本哈根商学院班上的一半同学都拉进了 Mac 阵营;2004 或 2005 年,他和 Jason 一起拍了一条开发者广告;2007 年,他为了第一代 iPhone 排了五个小时的队,店员一边鼓掌,一边把他们往外请。按他的说法,问题的根源在 App Store 这个收费站上:从别人的生意里抽走 30%,还要先拿到许可,而这台电脑最终成了最重要的电脑。Basecamp 已经和配套应用的规则相处了十年。HEY 花了两年做成一个全栈的 Gmail 竞争产品——客户端和服务器都自己做,因为如果不掌握邮箱,就没法迁移邮件——它的 iOS 应用在周五通过了审核,周一上线,随后一次更新又被拦了下来。苹果的要求是:要么用应用内购买,要么走人。问题不光是抽成。还有客户关系、退款、折扣,以及把订阅带到安卓上的能力,全都丢了。

他们在 WWDC 那周公开说了不,闹出的动静足够大,苹果最后同意了停战:不收 30% 的抽成,留在商店里,同时搞一个虚拟账号,让应用“看起来有点功能”——他说这条规则是 Phil Schiller 在媒体压力下想出来的。起诉的报价是 1000 万美元,要打 5 到 7 年;Epic 后来披露,花费远超 1 亿美元。他说,在这场战役里,Tim Sweeney 和 Mark Rein 对苹果造成了唯一一次严重伤害:他们在 11 项指控中赢了一项(允许外链),然后又看着苹果的反应把法官惹恼了,最终被移送藐视法庭。外链正是 37signals 原本的计划:让 HEY 用户可以在开放网络上付费,并把订阅带到各种设备上。“我宁可把这门生意烧掉,也不会把它的三成交给苹果。” 这是他尽量不想待在其中的那种情绪,但他也认为,创始人主导的公司仍然需要这份火气。苹果依然有它特别的地方——M 系列芯片、品味——所以失望才更深。

12

孩子重新校准了幸福的刻度,开源是一份你收不回的礼物

20 多岁时,做父亲并不在他的清单上。妻子 Jamie 想结婚,也想要三个孩子;他先说了一句“等等”,后来又说“好吧”,现在他把另一种选择称为一种存在性的遗憾。他说,满足感的刻度原来是一到一百,而他之前一直在底部打转。软件、公司和赛车,他都可以毫不犹豫地放弃。这句话听起来老套,但他坚持它仍然成立,因为他认识的几乎所有父母都不这么排序。在他看来,西方正在通过贬低婚姻和生育,进行一场《Children of Men》式的实验;而选择了传统道路的人,有责任在一个熟知代价的文化里为它说话。孩子并没有减少他的工作时间,他仍然大约每周 40 小时,这也正是《It Doesn't Have to Be Crazy at Work》一书的主旨;但孩子让朝九晚五变得严格起来:和男孩们一起玩《堡垒之夜》,接送上学,吃晚饭,读书,然后收工。紧迫感能杀掉废话。他在《堡垒之夜》里玩了一千个小时,全都是和孩子们一起玩的。

他 25 岁才拿到驾照,因为丹麦的汽车税超过 200%。一位朋友带他去了芝加哥的 Chicago Autobahn Country Club;在一辆 1990 年代的 Mazda 单座赛车上跑了 20 圈,产生的那种近乎宗教般的顿悟感,和当年 Ruby 带给他的一模一样。最让人上瘾的是抓地力的边界:几个百分点的滑移,离护墙近一点点,赛道上那种实打实的感觉。编程的心流像是抽奖,赛车几乎保证能让你进入心流,因为需要他 100% 的大脑投入。他连续四年每个周末都去赛车,2012 年参加了勒芒,后来在 24 小时耐力赛中拿下了组别冠军。业余绅士车手在一切都对的时候,可以和职业车手打平,但不是每次都能。他撞过车;在一次勒芒夺冠前一个月,他在 Formula 3.5 比赛中扭伤了一只手;他看着搭档车手 Pietro Fittipaldi 在 Eau Rouge 弯摔断了双腿;他还拿到过一次勒芒第二名,同一年,另一位丹麦车手驾驶同款车时撞上了一棵树,冲击力约 90g,不幸遇难。他仍然会根据职业车手的数据,逐弯载入一套程序,然后试着在两个半小时里变成一台机器。痴迷是 Senna 和 Verstappen 才有的东西,他不敢说自己有。他想带到荒岛上的车是 2010 年的 Pagani Zonda HH:作为赛车它很糟,作为公路车却很完美——正是他在编程语言上用过的那种开市客与帕加尼之分。

过去一年,他的编程环境是:Linux 加上 Omakub,一个 Lofree Flow84 键盘,一个 Logitech MX Master 3 鼠标,桌上的 Apple 6K XDR 显示器仍在用,只用一块屏幕。经历了三天的折腾,他离开了 TextMate,改用 Neovim 加 LazyVim。对 Web 开发者来说,Linux 更接近生产环境,而且可以像当年的 Amiga 那样做得很个人化。他说,初学者应先学 Ruby,然后学 JavaScript,因为 Web 是最重要的商业平台;再用 Go 写 HTTP 代理这类快而无聊的部分——但不用来写业务逻辑。他不认同“软件工程师”这个身份:他是一个软件写作者。最后说开源:开源既不是民主制,也不是店铺。有人在一次早期的 Rails 大会上要求提供 Oracle 支持,他就放了一张写着“fuck you”的幻灯片。用户收到的是礼物,不是在买一个供应商。为自己而做,许可证像 MIT 那样简短,否则你会在指望陌生人为慈善买单的期待里耗尽精力。WordPress 是奇迹;Matt Mullenweg 和 WP Engine 的争执,正如 DHH 2024 年 10 月那篇文章所说,违反了一条规则:不能先把礼物送出去,之后再向那些靠它成功的人收账。除了许可证之外,他与这场纷争没有任何利害关系。Rails 必须始终是一家公司在第七年仍能信赖的东西。

对他来说,涅槃就是一份空白的日程表。研究人员问富人,多少钱才算够,得到的回答总是“我现有的两倍”;他则不再把这个数字翻倍了。金钱能解决一层焦虑,同时又制造另一层,却碰不到其余的部分。Jim Carrey 曾希望每个人都能富到足以领悟这一点,但那并不是答案。Coco Chanel 说过:生活中最好的东西是免费的,次好的东西非常昂贵。要把这份清单的顺序排对。被问到什么给了他希望时,他选择乐观,因为两种结果他都无法确定,而且我们在想象里受的苦,比现实中还多。原子弹也许阻止了第三次世界大战。疫情期间,专家们很多判断都错了。“没人知道任何事”是他想一直保留的口头禅。节目结束前,Lex 引用了《Rework》:重要的是你做了什么,想、说、计划都排在后面。DHH 补充说,灵感是会过期的。如果你停下来写计划,你可能已经弄丢了本来会让你动手的那股劲。

同频道的其他文章

3:36:56EN
Lex Fridman· 2026年9月16日播客Psychiatry Has Never Found Its Penicillin主持 Lex FridmanHistorian Andrew Scull tells Lex Fridman why the field can ease symptoms, has never cured a major mental illness, and keeps paying for overconfidence with patients' lives.Mental HealthPublic HealthNeuroscience
5:15:51EN → 简体中文
Lex Fridman· 2026年8月26日播客 · 2 人对谈DHH 没有亲手写一行 Omarchy Quattro 的代码嘉宾 DHH · 主持 Lex Fridman与莱克斯·弗里德曼一次充满怀疑的对话过去十三个月后,Rails 的创造者讲述了 Opus 4.5、一群编码智能体(Agent)和一个一分钟的 Linux 安装器,如何结束了他一凿一凿手写 Ruby 的时代。编程智能体Vibe Coding智能体工程+3
3:12:58EN
Lex Fridman· 2026年8月12日播客 · 2 人对谈One Cold Shower, Twenty Champions: How Khabib Nurmagomedov Was Forged嘉宾 Khabib Nurmagomedov · 主持 Lex FridmanIn a Makhachkala school gym, seventy men shared one shower, and the water was only cold.Martial ArtsCombat SportsCoaching+3
3:46:18EN → 简体中文
Lex Fridman· 2026年7月28日播客 · 2 人对谈抽掉奴隶制,就没有美国内战嘉宾 Gary Gallagher · 主持 Lex Fridman1860 年,美国奴隶主名下的奴隶价值,超过了全美所有铁路和工厂的总和。Political PhilosophyLeadershipHistory
3:51:47EN → 简体中文
Lex Fridman· 2026年6月30日播客 · 2 人对谈46% 的皇帝被暴力推翻,帝国照样延续下来嘉宾 Anthony Kaldellis · 主持 Lex Fridman历史学家 Anthony Kaldellis 与 Lex Fridman 一起走过 2200 年的罗马史,并主张我们所说的拜占庭,其实就是罗马本身。Political PhilosophyGeopoliticsLeadership
2:53:42EN → 简体中文
Lex Fridman· 2026年5月29日播客 · 2 人对谈月亮一直在下落,却总也落不到地球上嘉宾 Biggest Mysteries in Physics · 主持 Lex Fridman费米实验室(Fermilab)物理学家 Don Lincoln 在与 Lex Fridman 的对谈中说,物理学的历史就是一部统一的历史;反物质(antimatter)、暗能量(dark energy)和万物理论(theory of everything)依然远在我们能做的实验之外。Quantum MechanicsScience CommunicationPhilosophy of Science