📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

DHH: Future of Programming, AI, Ruby on Rails, Productivity & Parenting | Lex Fridman Podcast #474

Lex Fridman6:08:48

Transcription

没有一个认真的人,无论在哪里,都相信 Cookie 横幅对任何人有任何好处,但我们却无法摆脱它。这也是让我对 Cookie 横幅感到恼火的地方。不只是欧盟。是整个世界。在这个星球上,你无处可藏,躲避 Cookie 横幅。如果你乘坐埃隆的火箭去该死的火星,并试图访问一个网页,你仍然会看到一个 Cookie 横幅。宇宙中没有人能免受这种胡闹的侵害。有时感觉我们几乎没有好转。网页似乎与 90 年代末、2000 年代初没什么不同。它们仍然只是表格。它们仍然只是写入数据库。我认为很多人对他们本质上是 CRUD 猴子这一事实感到非常不舒服。他们只是构建创建、读取、更新或删除数据库行的系统,并且他们必须通过过度复杂化来弥补这种生存的恐惧。驾驶赛车时,巨大的满足感来自于以我们称之为“附着力边缘”的速度行驶。在那里,你实际上离打转只有微小的移动。不需要太多,汽车就开始旋转。一旦开始旋转,你就会失去抓地力,然后就会撞墙。危险与技巧的平衡就是如此令人陶醉。

——以下是与 David Heinemeier Hansson 的对话,他也以 DHH 闻名。他是编程和科技界的传奇人物,才华横溢、见解深刻,有时也颇具争议,而且总是很有趣。他是 Ruby on Rails 的创建者,这是一个有影响力的 Web 开发框架,支撑着许多被数百万人使用的网站,包括 Shopify、GitHub 和 Airbnb。他是 37signals 的联合创始人兼首席技术官,该公司创建了 Basecamp、HEY 和 ONCE。他与他的合著者 Jason Fried 一起,是《纽约时报》畅销书作家,共著有四本书:《Rework》、《Remote》、《Getting Real》和《It Doesn't Have to Be Crazy at Work》。此外,他还是赛车手,曾赢得传奇的勒芒 24 小时耐力赛的组别冠军。这是 Lex Fridman 播客。要支持本播客,请查看描述中的赞助商信息,并考虑订阅此频道。现在,亲爱的朋友们,DHH 来了。

对于一位成为传奇程序员的人来说,你正式开始编程是在晚年,我想这是因为你曾尝试过几次学习编程,但都失败了。你能告诉我你学习编程失败的完整故事,这段传奇吗?Commodore 64 是否参与其中?

——Commodore 64 是灵感来源。我真的很想要一台 Commodore 64。那是我第一次坐到电脑前。我五岁时第一次坐到电脑前,我街上有一个孩子有一台 Commodore 64。当时没有人有电脑,所以我们所有孩子都跑过去,一起玩“Yie Ar Kung-Fu”。我不知道你是否玩过那个游戏。它是最早的格斗游戏之一。它确实是一款很棒的游戏。我五岁时第一次玩它。我们有七个孩子挤在这个孩子的卧室里,轮流玩游戏。我发现这简直令人难以置信地有趣。我恳求,恳求,再恳求我爸爸,我能不能得到一台电脑?他终于回来了。他说:“我给你买了电脑。”我说:“太好了,我的 Commodore 64。”他拿出一个黑绿蓝的键盘。那是一台 Amstrad 464。我说:“爸爸,这是什么?”

——失望。

——这不是 Commodore 64。但它是一台电脑。所以我在六岁时就得到了我的第一台电脑,那是一台 Amstrad 464。当然,我最想做的就是玩电子游戏。我想,他用电视和立体声录音机之类的东西换来的这台电脑,只附带了两款游戏。其中一款是“青蛙过河”,你必须逃离地下。实际上有点黑暗。就像一只青蛙,你试图把它弄出地下。我在这方面很糟糕。我只有那两款游戏。然后我想玩更多游戏。当一个没钱的孩子想要更多游戏时,一种方法就是自己打字输入。在 84、85 年,杂志会在杂志背面印出源代码,你就可以坐下来打字输入。所以我试着这样做,输入这个游戏需要大约两个小时。当然,我会在过程中犯一些拼写错误,然后有些东西就无法工作了。我英语不是很好。我出生在丹麦。所以我真的很想尝试,因为我想要所有这些游戏。我没钱买。我尝试了很长时间,但就是没成功。然后我发现了盗版的魔力。在那之后,我基本上就暂时搁置了学习编程,因为,嗯,现在我突然可以玩各种各样的游戏了。所以这是第一次尝试,大约六七岁。有趣的是,我记得这些片段。我记得不理解变量的用途。如果有一个东西,你给它赋值,为什么又要给它赋另一个值呢?所以出于某种原因,我理解常量。常量对我来说是合理的,但变量不行。

然后,我大约十一二岁,我开始接触 Amiga。顺便说一句,Amiga 仍然可能是我有史以来最喜欢的电脑。我的意思是,这是你觉得,人们变老了,他们会说,“哦,80 年代的音乐太棒了。”对我来说,即使作为一个热爱电脑、热爱新电脑的人,Amiga 也是一台神奇的机器,它是由生产 Commodore 64 的同一家公司制造的。我大概在 87 年得到了 Amiga 500。

——看看这个性感的东西,那是一台性感的机器。

——这是那个时代,计算不像现在这样全球化。不同的地区有不同的流行电脑。Amiga 在欧洲非常受欢迎,但在美国却不怎么受欢迎,据我所知。在日本也不受欢迎。只是有不同的机器。Apple II 在美国是一个大事件。我在 80 年代在哥本哈根从未听说过 Apple。但 Amiga 500 是让我再次尝试的机器。你知道什么有趣吗?我之所以想再次尝试,是因为我记得第一次学习。然后有一个编程语言,它就叫 EasyAMOS,就像 AMOS 的简化版。我想,如果它叫 EasyAMOS,它能有多难?我一定能弄明白。这次我更努力了。我接触了条件语句,我接触了循环,我接触了所有这些东西,但我仍然做不到。第二次尝试时,我真的到了这个地步,我想,也许我不够聪明,也许编程就是不适合我,也许它太数学化了。我喜欢数学,但只是肤浅地喜欢。我不喜欢深入地喜欢。那是我一些可能稍微更书呆子气的朋友所做的,我非常尊敬他们。我不是那样的人。我不是那个会弄明白一切的数学怪才。所以,在尝试了 EasyAMOS 并甚至未能完成一个非常基础的游戏后,我以为编程不适合我。我得做点别的。我仍然热爱电脑。我仍然热爱电子游戏。事实上,那时我已经开始与那些懂编程的人交朋友了,他们甚至不编程 EasyAMOS。他们编程汇编语言。我会坐下来,然后问,移动、内存和复制,这些是怎么做到的?我甚至不明白怎么从这里到 Amiga 演示,比如。这是 Amiga 的一大特色。它在欧洲有一个很棒的演示场景。这是 Amiga 历史上一个非常有趣的时期,当时欧洲各地都有程序员在图形比赛中竞争,你可能会带来其中一个……

——在这个东西上?

——在这个东西上,他们制作了这些小小的音乐视频,结合了一些 MIDI 音乐,结合了一些酷炫的图形。他们所有这些都只用了 4K,四千字节。不是 4K 的革命,而是四千字节的内存。我只是觉得那个场景太酷了。这显然是在互联网之前。甚至在某种程度上也是在 BBS(公告牌系统)之前。你通过邮寄磁盘来与他人交换演示软件,就像 3.5 英寸的软盘。我迷上了那个场景。我迷上了他们能够创造的东西,我只是想成为其中的一部分,即使我没有任何技能可以贡献。这就是我开始运行 BBS 的方式。我那时还没有学会编程,直到很久以后,直到我快 20 岁才学会编程。公告牌系统存在于一个有趣的领域,它们部分是为演示场景提供服务,允许所有这些演示小组分发他们精彩的演示。然后它也是一个交易盗版软件的地方。我 14 岁时,在哥本哈根我那个小小的卧室里,开始运行了一个。我当时有我的 Amiga 4000。我的小房间里有三条电话线。

——[Lex] 很好。

——这很有趣,因为我又 14 岁了。当我到了斯特灵,我的第三条线,你需要让电话公司的人来安装。我请来了这个人,他四处张望,说:“这是什么?一个 14 岁的孩子为什么在他的小卧室里有三条电话线?这里发生了什么?为什么所有的调制解调器都在闪红灯和黑灯,发出奇怪的声音?”

——你的父母知道吗?

——他们知道,也可能不知道。他们知道我有电话线。他们知道我有电脑。我不认为他们真的明白我当时在交易盗版软件,这既是非法的,也可能还有其他事情在发生。

——哦,我们可能应该说,在欧洲,也许你可以在此发表评论,尤其是在东欧,但在整个欧洲,我认为盗版比在美国更容易被接受。我不知道,也许只是我的成长经历。

——甚至没有讨论过。我在丹麦长大,从未和任何人谈过。

——盗版是错误的。

——关于盗版,我没有任何道德上的顾虑。人们普遍认为你是个孩子,你赢了很多游戏。你没多少钱,你会怎么做?你交易。

——是的。

——有些人偶尔会买游戏。我的意思是,我曾经买过一个二手 Master System,然后买了一款游戏。因为那是我能负担得起的。我得到了“After Burner II”。我不知道你是否玩过那个游戏。它在二手 Master System 上的实现很糟糕,但花了大约 600 克朗。我当时通过送报纸赚钱。我必须那样做一个月才能买得起一个游戏。我太喜欢电子游戏了,不能等一个月才得到一个游戏。所以盗版就是我当时的做法。这就是我开始运行这个公告牌系统,成为演示场景的一部分,在某种程度上也是盗版场景的一部分。然后,在某个时候,我意识到,哦,你实际上也可以从中赚钱,这可以为购买更多电话线、更多调制解调器和更多 Amiga 提供资金。哦,是的,那是一个演示派对。那些太棒了。

——我在看什么?

——是不是很棒?

——看看那些 CRT 显示器。

——所有这些 CRT 显示器。再说一遍,我 14 岁时,我不完全明白为什么我的父母允许这样做。但我从哥本哈根,丹麦首都,坐火车去了日德兰的一个小镇奥尔堡,和一群十几岁晚期和二十多岁的家伙一起。我 14 岁。我拖着我的 14 英寸 CRT 显示器和我的电脑,去参加派对。那时的派对就叫这个名字。那是当时最大的演示场景派对。正如你在照片中看到的,成千上万的人带着他们的电脑排队,整天都在编程演示,并来回交换这些东西。

——这太棒了。说实话。有点可笑。

——太棒了。我以某种方式怀念它,互联网在某些方面连接了人们,但你与坐在你旁边的人的联系,他们有自己的 CRT 显示器,他们花了半个国家的路程才到达那里,这确实很特别。因为那也是一种创造力的爆发。你一直在跑来跑去。你一直被那些在他们能做的事情上非常出色的人包围着。他们非常擅长编程。这很有感染力。那是我当时感到痛苦的一部分,我想,哦天哪,我为什么就是弄不明白呢?我的意思是,我为什么连 EasyAMOS 都弄不明白?这很令人沮丧。

——但在你的第三次尝试中,你稍微成功了一点吗?

——第三次尝试时,我开始明白了,这时我开始帮助,比如说构建互联网的东西。所以大约在 95 年,我想是这样,或者 96 年,我发现了互联网。实际上,在九年级。那是我第一次体验。我去了一所丹麦的大学。九年级时,我们有一次郊游,他们让我们坐在一台电脑前,电脑上装有 Netscape Navigator,第一版,或者可能甚至比它更早。他们还有一个文本编辑器。我们这些孩子就想,“嘿,在互联网上构建一些东西。”那只是 HTML,你做的第一件事就是,“哦,我可以通过输入这个标签并保存它来让文本闪烁。”那一刻,那实际上是我重新唤醒了学习编程的冲动,因为我获得了一次积极的体验。我之前所有的编程经历都是我花几个小时输入一些东西,然后点击运行,但它不起作用。我会收到一个我六岁或七岁,或者十二岁时都无法理解的错误消息。而现在我坐在连接到互联网的电脑前,我让文字闪烁。我让它变大。我把它变成 h1 或 h2。而那些家伙在这里说,“我们只做了大约一个半小时。”然后我突然说,“哦,我可以在互联网上制作一些东西,让德国的某个人能够访问和看到,而且我不需要征求任何人的许可。”这太酷了。我得做更多这样的事情。所以我开始接触互联网。我开始使用 HTML,我仍然有来自那些演示派对的所有朋友。我开始和他们一起创建游戏网站。我宁愿购买电子游戏,然后评论它们。这是获得新电子游戏的另一种好方法,就是走进一家商店说,“嘿,我是一名记者。”我是一个 15 岁的孩子。他们看着你,“你是记者?”是的,我可以借一些游戏吗?因为那时游戏已经转向了 PlayStation 和其他东西。你不能像以前那样轻易地盗版,至少一开始不能。所以我去了那里,做了所有这些,然后开始了我的互联网之旅。我开始制作游戏网站,与程序员合作,发现我能做些什么,我可以在 HTML 部分工作。这不算真正的编程,但有点像。你在和电脑交流。你在让它在屏幕上显示文本,你在与世界另一端的人交流。所以这成为了我重返编程的途径。然后我慢慢地掌握了越来越多。我与一位演示场景的程序员一起做的第一个网站是动态的,是 ASP.NET。当时甚至还没有 .NET 这个名字。那是我们开始的。然后我们转向了 PHP,PHP 是我最终理解的时候。当它最终点击时。当条件语句、循环和变量以及所有这些东西对我来说开始变得足够有意义,以至于我认为我可以做到。

——那么,说没有 PHP 就没有 DHH,因此你的所有成功都归功于 PHP,这公平吗?

——100% 是真的。而且比这更好,因为 PHP 不仅为我提供了制作自己的 Web 应用程序的起点,它还为我设定了一个标准。在很多方面,我认为开发者、Web 开发人员人体工程学的巅峰是 90 年代末的 PHP,你编写这个脚本,然后 FTP 到服务器,它就立即部署了。立即可用。你更改了那个文件中的任何内容,然后刷新。砰,它就在那里了。没有 Web 服务器,没有设置。只有一个运行 mod PHP 的 Apache。它基本上是启动动态网页最简单的方法。这也是我职业生涯其余时间一直在追求的快感。在 90 年代中期到后期,制作互联网的东西是如此容易。我们是如何失去那些让我们不仅能这样工作,还能吸引新人进入这个行业的,让他们获得我所拥有的成功经验的?在 HTML 页面中添加一个该死的闪烁标签,将一个 PHP 页面 FTP 到一个 Apache Web 服务器,而实际上什么都不懂,不知道任何关于框架的事情,不知道任何关于设置的事情。所有这些都让我们走到一个有时感觉我们几乎没有好转的地方。网页似乎与 90 年代末、2000 年代初没什么不同。它们仍然只是表格。它们仍然只是写入数据库。我认为很多人对他们本质上是 CRUD 猴子这一事实感到非常不舒服。他们只是构建创建、读取、更新或删除数据库行的系统,并且他们必须通过过度复杂化来弥补这种生存的恐惧。现在,这有点像一个角色。还有更多。你可以从更复杂的思考方式中学到东西。但仍然有一个理想,这就是为什么我很高兴你邀请了 Pieter Levels,因为他基本上仍然是这样工作的。我看着它,然后说,哇,太棒了。

——是的,你在追逐那种快感。他一直以来都使用 PHP、jQuery 和 SQLite。

——我认为这很棒,因为他证明了这不仅仅是一个怀旧的梦想。他实际上正在这样做。他经营着所有这些企业。现在,正如他会坦率承认的那样,其中一部分是他一个人。当你一个人时,你可以做不同的事情。当你与团队合作时,当我开始与 Jason Fried 在 Basecamp 合作时,我们一开始并没有一起使用版本控制。我为自己使用版本控制。然后我想,你知道吗?设计师,他们可能不够聪明,无法弄清楚 CVS。因此,我只是说,不,不,不,你只需 FTP 上传。你只需 FTP 上传。我知道他们知道如何 FTP。然后,在我三次覆盖了他们的更改后,我说,该死的。我得教 Jason CVS,以免再次发生这种情况。但我仍然认为,我们可以像 90 年代那样工作,像 Pieter 今天那样工作,即使是在团队环境中,这一点也更加真实。而且我们太愿意将我们开发者人体工程学的太多部分交给了复杂性的商人。

——而你一直在用 Rails 8 追逐它。那么,你如何将现代框架的所有酷功能融入其中,使其无需构建,使其像 90 年代用 PHP 一样容易创建和发布东西?对我来说,很难超越 Pieter Levels 的方法。发布一些 PHP 太容易了。

——它应该是。为什么会比这更难?我们今天的电脑几乎比 90 年代快无数倍。那么我们不应该能够以更简单的方式工作吗?我们应该回顾 90 年代,就像,哦,那太复杂了。现在我们有了更先进的技术,速度更快,它允许我们以更易于使用的方式工作。但事实并非如此。但现在你可以看到我在 Ruby on Rails,尤其是在 Rails 8 中所做的界限。对我来说,“无需构建”就是回到 90 年代的感觉,然后说,“现在我们可以做其中一些事情,而不用放弃所有进步。”因为我确实认为你可能过于怀旧。我确实认为你可能开始幻想一切在 90 年代都更好。事实并非如此。我的意思是,我当时在那里。有很多糟糕的事情。如果我们能以某种方式找到一种方法,将过去 20 年的优势和进步与那种开发者人体工程学的简便性结合起来,我们就能赢。“无需构建”是对我过去 10 到 15 年最讨厌的 Web 开发部分的拒绝,那就是 JavaScript 生态系统。我并不是作为一个讨厌 JavaScript 的人说的。我的意思是,我经常开玩笑说 JavaScript 是我第二喜欢的编程语言。这是一个非常遥远的第二名。Ruby 绝对是第一名,但我实际上喜欢 JavaScript。我不认为它是一门糟糕的语言。它受到了很多批评。人们将一个字符串“two”加上一个“one”,它会得到一些无意义的东西。我只是说,是的,但你为什么要这样做?只是不要这样做。这门语言实际上相当可爱,尤其是现代版本。ES6 确实引入了真正的类语法。所以我可以像我喜欢使用 Ruby 一样使用 JavaScript,这让事情变得好多了。但在 2010 年代初到最近,所有这些进步都发生在预处理中,发生在构建管道中。浏览器无法说出一种令人愉悦的 JavaScript 方言。所以每个人都开始预编译他们的 JavaScript,以便能够使用更现代的编程方式,而浏览器被视为停留在一种古老的 JavaScript 版本上,没有人真正想与之合作。这对我来说是合理的,但它也极其令人不快。我记得在那段黑暗时代,我称之为 JavaScript 的黑暗时代,我想,这不可能是最终目的地。我们不可能把互联网变成一个如此令人不快的工作场所。我开始使用 Webpack 和所有这些依赖项用 JavaScript 进行项目开发。我放下它,字面意义上五分钟,它就无法再编译了。JavaScript 社区,尤其是其框架和工具,在 2010 年到 2020 年这十年间的变化是荒谬的。你必须被困在那个疯人院里,才能不意识到我们陷入了一个多么完全扭曲的境地。为什么一切都一直在崩溃?我的意思是,笑话不仅仅是软件会崩溃,那会让我个人烦恼。但然后我会去 Hacker News,看到一个关于某个框架最新 JavaScript 版本的主题。主题会是,有人会问,“嗯,我们不是在用三个月前刚用的东西吗?”人们会说,“那个东西太老了。那是三个月前的了。你得跟上新程序。我们正在为第 N 次重写一切。”你在过去一段时间里一直在学习的框架中的任何东西,都毫无用处了。你必须扔掉一切,重新开始。你为什么不这样做,愚蠢的白痴?

——你认为这是一种开发者社区中的集体癔症吗?比如你必须不断创建新的框架和新的框架。我们已经度过了那个黑暗时代吗?

——我认为我们正在摆脱它,我们正在摆脱它,因为浏览器已经变得好多了。浏览器技术曾一度停滞不前。其中一些是来自 IE5 的遗留问题。所以 IE5 基本上让整个互联网开发体验陷入了深度冻结,因为微软在 2000 年代中期赢得了浏览器大战,然后他们基本上解散了他们的浏览器开发团队。因为他们说,“好了,工作完成了。我们不需要互联网上有任何更多的创新了。既然我们控制了一切,我们能回到编写 Windows 窗体之类的东西吗?”直到 Firefox 重新点燃了一点火花。然后 Chrome 进入了这个领域,谷歌开始认真地推动 Web 前进。你看到了希望,也许浏览器可以变得更好。也许浏览器并没有停留在 2005 年。也许浏览器实际上可以像它所处的开发平台一样发展。但随后发生的是,许多聪明人涌入了 Web,因为 Web 被证明是有史以来最伟大的应用程序开发平台。这就是所有金钱的来源。这就是所有亿万富翁的诞生之地。这就是 Facebook 和其他公司出现的地方。所以你拥有了所有这些脑力投入到如何处理 Web 的问题上。有一些非常聪明的人,我敢肯定他们有一些非常好的想法,但他们的首要动机不是程序员的幸福感。他们有其他优先事项,而这些优先事项让他们能够忽视甚至合理化他们到处注入的复杂性。其中一些复杂性来自于组织结构。当你有一个像 Facebook 这样的公司时,它确实依赖于 Web 并希望推动它前进,但将开发角色工作分解成这些微小的利基。我是一名前端全局管道配置器。哦,是的,我是一名前端……工程师。突然之间,Web 开发者不再是一个人了。而是 15 个不同的角色。这本身就注入了大量的复杂性。但我也想在这里大胆地说,其中一些复杂性对于我们今天所处的位置是必要的。这种复杂性是一座桥梁。它不是目的地,但我们必须跨过这座桥梁才能到达今天,而今天浏览器坦率地说令人难以置信。你可以在一个文本文件中编写 JavaScript,然后将其提供给 Web 服务器供浏览器摄取,这真是太棒了。这实际上是一种非常好的体验。你不需要任何预处理。你只需编写文本文件,将它们发送到浏览器,你就有了一个令人难以置信的开发体验。

——我们还应该说,它可能会有点出错,至少 HTML 是这样,但即使是 JavaScript 也可能有点出错,而且它仍然可以工作,就像……半吊子工作一样。但是,浏览器必须处理的那些混乱的、有问题的代码量是巨大的。

——这是当今计算中最困难的问题之一,那就是解析整个互联网。因为对我们 Web 开发者来说是幸运的,但对浏览器开发者来说可能就没那么幸运了,除了短暂的 Flash 时代,曾经创建过的每一个网页今天仍然可以运行。我九年级时做的网页,30 年后在现代浏览器上仍然可以渲染。

——太疯狂了。

——这完全是疯狂的。当你考虑到 Web 已经经历了多少演变,我们让它变得多么好,浏览器采用了多少标准。今天创建一个新浏览器基本上是一个阿波罗计划,这就是为什么它不经常发生,这就是为什么像微软这样的公司也不得不放弃并说,“我们做不到。”现在,我实际上不认为这对 Web 有好处。如果只有一个浏览器引擎运行一切,那么就会有单文化主义的危险,而我们正处于危险之中。我喜欢 Ladybird 项目,例如,正在尝试从头开始创建一个新的浏览器引擎。我支持那个项目。我鼓励人们去了解它。它确实是一个很棒的……

——很好。

——东西。它由一群过去曾在其他浏览器项目工作过的人员组成。

——真正独立的网络浏览器。

——我们真的需要它。但我可以把这个想法记在心里。同时,我也把这个想法记在心里,谷歌的 Chrome 对 Web 作为首要 Web 开发平台的生存至关重要。如果不是因为谷歌及其整个业务依赖于一个蓬勃发展的开放 Web,苹果、微软,我认为他们会乐于看到 Web 消失,变成一个只提供原生 Web 应用程序或原生移动应用程序和原生桌面应用程序的东西,而他们可以完全控制。所以我对谷歌有很多问题,但不是 Chrome。Chrome 是对所有 Web 开发者,对 Web 作为开发平台的一个巨大的恩赐。我认为他们应该为此获得巨大的赞誉。即使它与他们的商业模式纠缠在一起,而且 Chrome 的一半代码都在监视你或提供定向广告。还有很多事情,我不是特别喜欢。我可以将它与我们需要在 Web 方面拥有像我们这样拥有数万亿美元市值支持的倡导者这一事实分开。

——我们将进行一次又一次的离题。所以让我们回到 Chrome。我认为 Chrome 对人类的积极影响是无法估量的,原因正如你刚才描述的。在技术方面,它带来的功能和竞争,它激发了 Web 技术的美妙繁荣。但无论如何,我必须问你关于最近与司法部试图拆分 Chrome 和谷歌的事情。你认为这是个好主意吗?你认为这会造成伤害吗?

——这是一场灾难。我之所以这样说,是因为我一直非常同情反垄断斗争,因为我认为我们在技术领域确实存在反垄断问题。但我们基本上没有反垄断问题的地方是浏览器,是我们用来访问开放 Web 的工具。首先,我们有 Firefox。现在 Firefox 的表现并不算太好。多年来,Firefox 一直得到谷歌的支持,以阻止司法部正在发生的正是这种情况,因为它们是唯一的选择。苹果有 Safari。我对苹果也有很多问题,但我喜欢 Safari。我喜欢我们有一个运行在首要操作系统上的首要浏览器,人们无法将 Web 变成一个纯粹的 Chrome 体验。但我也认为,开放 Web 需要这个万亿美元的冠军,或者至少从中受益。也许它不需要,但它肯定从中受益。而在技术领域所有关于垄断形成的问题中,Chrome 是最后一个。这就是为什么我有时对反垄断或垄断斗争感到如此沮丧,因为存在真正的问题。我们应该首先关注最重要的问题。比如我们手机上的收费站。问题大得多。不是开放 Web。不是我们用来访问开放 Web 的工具。如果我不想使用 Chrome,如果我的企业客户在互联网上运营,他们不想使用 Chrome,他们不必使用。我们从未被迫通过它。开放的互联网仍然是开放的。所以我认为司法部选择以这种方式起诉谷歌真是太遗憾了。我认为你可以找到其他事情来指责谷歌,比如他们的广告垄断,或者他们控制广告账单两端的伎俩,他们同时控制了供应和需求。存在问题。但不是 Chrome。你最终会让 Web 变得更糟。这就是我们在考虑立法、考虑垄断斗争时总是要记住的事情,你可能不喜欢今天事物的外观。你可能想做些什么,但你也可能让事情变得更糟。欧洲 GDPR 的良好意图目前带来了什么?Cookie 横幅,互联网上的每个人都讨厌。它没有帮助任何人做得更好,任何事情更有效率,它没有以任何方式节省隐私,它是一个完全的骗局,只让律师、会计师和官僚们发财。

——是的,你说 Cookie 横幅是欧洲在科技领域表现最差的一个地区的一个纪念碑。

——它是良好意图直通地狱的纪念碑。而欧洲在良好意图直通地狱方面是世界一流的。

——所以地狱就是那个你必须接受所有 Cookie 的“接受 Cookie”按钮。那就是地狱的样子,一遍又一遍。你永远无法真正看到网页。

——仅仅从人类的角度来看,试着想象一下,每天有多少小时浪费在点击它。以及我们对 Web 作为人们喜爱的平台造成了多少伤害。互联网之所以丑陋,部分原因在于 Cookie 横幅。Cookie 横幅本应将我们从广告中拯救出来,而广告会使 Web 变得丑陋。有很多这样的例子,但 Cookie 横幅一举让整个互联网变得丑陋。这是一个彻底的悲剧。但更糟糕的是,这就是为什么我称它为欧盟一切错误的纪念碑的原因,我们已经知道了十年。没有一个认真的人,无论在哪里,都相信 Cookie 横幅对任何人有任何好处。但我们却无法摆脱它。有一项立法,现在我认为已经有十多年了。它在所有可想象的指标上都是完全失败的。每个人都普遍讨厌它,但我们似乎对此无能为力。对于任何自称或声称能让事情变得更好的官僚机构来说,这都是一份破产声明,不仅是公民,还有世界各地的人们。这也是让我对 Cookie 横幅感到恼火的地方。不只是欧盟。是整个世界。在这个星球上,你无处可藏,躲避 Cookie 横幅。如果你乘坐埃隆的火箭去该死的火星,并试图访问一个网页,你仍然会看到一个 Cookie 横幅。宇宙中没有人能免受这种胡闹的侵害。

——可能是火箭上的界面。

——会更慢。你基本上会有 150 秒的延迟。所以你只需要 45 秒就能从火星上通过 Cookie 横幅。

——好吧,让我们沿着我们一直在走的递归切线往回走。所以 Chrome,我们应该说,至少在我看来,它并没有不公平地获胜。它在公平竞争中获胜,因为它本身就更好。

——是的,如果我要稍微为另一方辩护一下,人们会说,嗯,是的,大多数人都会勉强同意它是一个相当不错的浏览器。但他们会说,它之所以占据主导地位是因为分发。它之所以获得分发是因为谷歌还控制着 Android,因此可以使 Chrome 成为所有这些手机上的默认浏览器。现在,我不相信这一点。我不相信的原因是,在 Android 上,你实际上可以发布一个不同的浏览器,它拥有一个与 Chrome 不同的浏览器引擎。不像在 iOS 上,如果你想发布一个浏览器,比如 Chrome,它可以在 iOS 上发布,但它不是 Chrome,它是 Safari 穿上裙子。iOS 上每一个替代浏览器都必须使用 Safari 网页引擎。那不是竞争。那不是 Android 上发生的事情。再说一遍,我认为有一些细微之处,但如果你放大来看,看看我们与大型科技公司有关的所有问题,Chrome 不是其中之一。Chrome 是靠实力获胜的。我勉强地切换到了 Chrome,仅仅基于这个认识。作为一个 Web 开发者,我就是喜欢它。我喜欢 Firefox 的很多方面。我喜欢它的精神,但 Chrome 就是比 Firefox 更好,句号。

——顺便说一句,我们从未提到过 Edge。Edge 也是一个不错的浏览器。

——因为它也是穿裙子的 Chrome。

——但它从来没有得到爱。我想我从来没有用过 Bing,我敢肯定 Bing 真的很好。

——也许你用过,因为你知道吗?Bing 是穿裙子的吗?

——什么?

——DuckDuckGo。实际上是……

——什么?

——我使用的搜索引擎。DuckDuckGo 的搜索结果来自 Bing,或者至少以前是这样。如果他们改变了,那对我来说就是新闻了。

——嗯,也许一切都是包装或裙子。下面的一切都穿着裙子。还有一些……

——有一些。

——乌龟,所有的裙子一直往下。好吧,我们在谈论什么?我们从 JavaScript 和你学习编程开始。所以最终,最大的成功故事是你用 PHP 构建了很多东西,然后你真的在发布东西。那时 Ruby 的故事就来了。所以你对编程的热爱从那时开始?你能带我去那里吗?什么是 Ruby?给我讲讲 Ruby 的故事。向我解释 Ruby。

——PHP 是我从只能玩弄 HTML 并制作一些网页,转变为真正能够自己制作 Web 应用程序的。所以在这方面,我非常感激 PHP。但我从未认为 PHP 是我的使命。我从未想过,“我是一名专业的程序员,我写 PHP,我就是这样的人,我就是这样做。”我把 PHP 当作一种工具,我需要用它来敲打电脑,直到它产生我想要的 Web 应用程序。它在很大程度上是一种手段。我没有爱上 PHP。我非常感激它教会了我编程的基础。我非常感激它为人体工程学设定了标准。但直到 Ruby,我才开始认为自己是一名程序员。我之所以开始这样做,是因为我第一次被聘为专业程序员编写代码,实际上是我的业务伙伴 Jason Fried。早在 2001 年,我已经在 PHP 上为游戏网站工作了大约 18 个月。那时没有人付钱给我写代码。我通过一封从丹麦哥本哈根发往伊利诺伊州芝加哥的电子邮件与 Jason Fried 联系,他当时不认识我。我只是提供未经请求的建议。Jason 在网上问了一个问题,我给了他答案,他问的是 PHP。我给了他那个问题的答案。我们开始交谈,然后开始合作。顺便说一句,这是互联网奇迹般的体现。哥本哈根的一个孩子,从未见过芝加哥的这个人,如何仅通过电子邮件联系并开始合作?顺便说一句,我们现在 24 年后仍然在一起工作。这太不可思议了。但我们开始合作,我们开始为一些客户项目合作。Jason 负责设计,37signals 负责设计,我负责用 PHP 编程。在我们用 PHP 合作了大约两三个客户项目后,我们遇到了同一个问题。那就是,当你与客户合作时,你开始通过电子邮件开始那个项目。哦,是的,让我们一起工作吧。我们要建什么。你开始交换越来越多的电子邮件。几周后,你必须让别人加入项目。他们没有电子邮件。他们没有上下文。你发送,“最新文件在哪里?”哦,我上传到 FTP 了。就像 finalfinal_v06_2.0,对吧?就是那个。这简直是一团糟。从某些方面来说,这是一团美丽的糟粕,但它仍然是绝大多数项目至今仍在运行的糟粕。电子邮件是最低的公分母。这很棒。但我们几次严重地让客户失望,我们认为我们可以做得更好。我们知道如何制作 Web 应用程序。我们不能只是做一个比电子邮件更好的项目管理系统吗?这应该不难。我们一直在做博客。我们一直在做待办事项列表。让我们把这些放在一起,做一个系统,让项目中的每个人都需要的东西都在一页上。而且它必须足够简单,以至于我不需要开研讨会教你如何使用这个系统。我只需要给你登录代码。你就可以开始使用了。这就是 Basecamp。当我们开始制作 Basecamp 时,我第一次在与 Jason 的合作经历中拥有了技术选择的自由。没有客户告诉我,“是的,PHP 听起来不错。我们知道 PHP。你能用 PHP 构建吗?”我拥有完全的自由。那时我一直在阅读 IEEE 杂志和其他一些 2000 年代初的杂志,其中 Dave Thomas 和 Martin Fowler 一直在撰写关于编程模式以及如何编写更好代码的文章。而这两个人,特别是他们,都使用 Ruby 来解释他们的概念,因为 Ruby 看起来像伪代码。无论你是用 C、Java 还是 PHP 编程,这三个群体都能理解 Ruby,因为它基本上就像英语一样易读。所以这些人用 Ruby 来描述概念。首先,我只是为了他们解释的概念而阅读这些文章。然后我想,“这是什么编程语言?我的意思是,我喜欢你解释的概念,但我也想看看编程语言。我为什么没听说过它?”所以我开始研究 Ruby,我意识到那时,可能没有人知道 Ruby,但它实际上已经存在很长时间了。Matz,Ruby 的日本创造者,早在 93 年就开始研究 Ruby 了。甚至在互联网出现之前。而我在这里,2003 年,10 年后,发现了这个似乎是隐藏的宝石,它就摆在眼前。但 Dave Thomas 和 Martin Fowler,我认为成功地引导了我以及其他几个人走向了一条编程语言的道路,这条语言在西方还没有被广泛使用,但有可能被使用。所以我开始学习 Ruby,我想,这非常不同。首先,分号在哪里?我一直在用 PHP、ASP 编程,我甚至还看过一些 Pascal,我研究过一些 C。到处都是分号。这是让我印象深刻的第一件事,为什么编程中有分号?它们是为了告诉解释器这是一条新的指令,但作为人类,我不需要它们。怎么做?哦,有人在照顾人类,而不是机器。这真的让我很感兴趣。然后我想,“你知道吗?我非常了解 PHP。我不是一个了不起的程序员。我从事编程的时间不长,但也许我能弄明白。我给自己两周时间。我要写一个概念验证,我将与数据库对话,拉取一些记录,稍微格式化一下,然后在 HTML 页面上显示它们。我能在几周内弄明白吗?”大约只花了一个周末,我就完全着迷了。我完全被震撼了,因为 Ruby 就像一个完美量身定制的手套,由一个我从未见过的人为我的大脑量身定做。我的意思是,这怎么可能?

——我们应该说,也许可以描绘一下 Ruby 的某些特质,甚至与 PHP 相比。我们还应该说,有一个我习惯了的荒谬的事情,我却忘记了,到处都是美元符号。PHP。

——是的,是的,那是线路噪声。我喜欢这样称呼它。

——那是线路噪声。线路噪声,这是一个多么美妙的短语。是的,所以有很多东西看起来像程序。而 Ruby,我的意思是,它与 Python 有一些相似之处。它看起来有点像自然语言。你可以正常阅读它。

——这是一个疯狂的循环,它会进行五次迭代。你可以直接输入数字五,点,现在我正在调用数字五下的一个方法。顺便说一句,这是 Ruby 的一个美丽方面,像整数这样的原始类型也是对象。你可以调用 5.times,开始括号。现在你正在迭代括号中的代码五次,就是这样。

[Lex] 好的,这很好。——这不仅仅是好,这是卓越的。据我所知,没有其他编程语言能够像它这样,将几乎所有其他编程语言在对一段代码进行五次迭代时会注入的“线路噪声”完全消除。——哇,这真的很棒,嗯,谢谢你举这个例子。这是一个很棒的例子。哇,我不知道有哪种编程语言能做到这一点。这真的很棒。——Ruby 充满了这样的东西。所以,让我深入举几个例子。因为我真的认为这有助于描绘出画面。让我先说一句,我其实,我喜欢 Python 的精神。我认为 Ruby 和 Python 社区有很多相似之处。它们都是动态解释型语言。它们都侧重于即时性和生产力以及在很多方面的易用性。但它们在许多其他方面也非常不同。它们非常不同的一个方面是美学。对我来说,Python,我希望我不会冒犯太多人。我以前说过,它很丑。而且它在自己的领域里很丑,因为它充满了过时的指令,这些指令是为了弥补 Guido 在 87 年创建 Python 时遗留下来的原因而必需的,而这些指令在 2025 年仍然存在。我的大脑无法处理。让我举一个基本的例子。当你用 Python 创建一个类时,初始化方法,起始方法是 def。好的,没问题。这实际上和 Ruby 一样,D-E-F,定义一个方法。然后是下划线,一个,下划线,两个,init,下划线,下划线,括号开始,self,逗号,然后是第一个参数。——[Lex] 是的,整个 self 的事情。——我看着那个说,抱歉,我退出。我做不到。它的一切都深深地冒犯了我的感受。这里有一个所有新对象或类都必须实现的最重要的方法。而且,这是我见过的最丑陋的输入初始化方式之一。你们都觉得没问题吗?——嘿,你让我,你知道,就像你在谈论我的婚姻一样,而我却没意识到我一直处于一段有毒的关系中。然而,我只是习惯了。——对我来说,顺便说一句,这就是 Ruby 的魔力。它让我意识到程序可以有多美。我不知道我一直在使用 ASP。我一直在使用 PHP。我甚至没有意识到美观的代码是我们可以优化 something 的概念。我们可以追求 something。甚至更重要的是,我们可以追求它高于其他目标。Ruby 之所以如此美丽,并非偶然,也并非易事。Ruby 本身是用 C 实现的。解析 Ruby 代码非常困难,因为 Ruby 是为人类编写的,而人类是混乱的生物。他们喜欢以恰到好处的方式来处理事情。我无法完全解释为什么 __init___ 让我反感,但它确实让我反感。当我看到 Ruby 的替代方案时,它非常有启发性。所以它是 def,相同的部分,D-E-F,空格,initialize,括号。甚至不是括号。如果你不需要在参数中调用它,甚至没有括号。这本身也是一个主要部分。如果人类不需要额外的字符,我们不会仅仅因为对计算机来说解析起来更方便就把它放进去。我们会去掉分号。我们会去掉括号。我们会去掉下划线。我们会去掉所有那些丑陋的东西,所有的线路噪音,并将其提炼成纯粹的本质。同时,我们也不会缩写。这也是 Ruby 和 Python 在美学上的一个关键区别。init,类型缩写,只有五个字符。Initialize 要长得多,但看起来好得多,而且你不会经常输入它。所以你应该看看漂亮的东西。如果你不必一直做某事,那么它长一点也没关系。这种美学评估在 Ruby 语言中随处可见。但让我举一个更好的例子。if 条件句。这是所有编程语言的基石。它们都有 if 条件句。如果你看大多数编程语言,它们都有 if。这几乎在所有语言中都一样。空格,开始括号,我们都这样做。然后你可能有,比如说,你调用一个名为 user 的对象。isadmin,关闭括号,关闭括号,开始方括号,这就是我们将在用户是管理员时要做的,对吧?这会是一门普通的编程语言。Ruby 不是这样做的。Ruby 几乎将所有这些都提炼掉了。我们从 if 开始。好的,这还是一样的。不需要括号,因为人类不会有歧义来区分接下来的部分只是一个单独的语句。所以你输入 if,空格,user,点,admin,问号。没有开方括号,没有括号,什么都没有。下一行,打开一行。这是你的条件。那个问号对计算机来说什么也不是,但对人类来说却意义重大。Ruby 纯粹是为了作为人类之间的沟通工具而引入了谓词方法风格。实际上,解释器看到这个问号需要更多的工作。为什么这里会有这个问号?因为它读起来非常顺畅。If user.admin?这是一个非常人性化的短语,但它变得更好了。你可以颠倒过来。你可以在条件句之前执行你的语句。你可以做 user.upgrade。假设你调用用户的一个 upgrade 方法。空格,if,空格,user.admin?。如果条件为真,我们就做这件事。而不是说,如果条件为真,就做这件事。但它变得更好了。这就是为什么我喜欢这个关于条件句的例子,因为你可以不断深入。所以让我们把它颠倒过来。user.downgrade if !not user.admin,对吧?这会是典型的写法。Ruby 说,那个感叹号是线路噪音。为什么我们有 if 然后有一个感叹号,这很丑。我们可以做 user.downgrade unless user.admin?对我来说,这就是 Ruby 通过歧义为程序员提供的令人难以置信的美丽的封装,而这种歧义只是为了服务于人类读者和作者。我们刚才讨论的所有这些语句,对计算机来说都是一样的。它将合并成相同的 C 代码。它将编译成相同的汇编代码。这没有任何区别。事实上,这只会让编写解释器更困难。但对于能够选择语句是出现在条件句之前还是谓词方法之前的人来说,这简直是不可思议的。它读起来就像诗歌一样。——同样令人难以置信的是,你知道,一个语言设计者创造了那个,你知道,Guido van Rossum 也一样,就像一个人可以做出这些极其困难的决定,因为你必须考虑所有这些是如何解析的?你必须考虑成千上万,如果这是一个流行的语言,最终有数百万人使用它。以及他们的感受,那个问号对于 if 语句,它给用户带来了什么样的感觉?——这就是 Matz 所考虑的,因为他的整个使命是基于一个与几乎所有我听过的编程语言设计者,至少是那些阐述过愿景的人不同的前提。他的首要目标是程序员的幸福感。他的首要目标是那些能够让程序员以不仅能正确执行代码,而且写起来令人愉悦、读起来也令人愉悦的方式来表达代码的便利性。而这个愿景是基于对人性的根本不同的看法。Matz 和 Java 的设计者 James Gosling 之间没有更大的对比了。我想听听 James 谈论 Java 的设计。为什么它是那样的?为什么它如此僵化?他非常直率,顺便说一句,我非常欣赏。而且我认为 Gosling 在 Java 方面做得非常出色。但他对人性的看法相当悲观。他认为普通程序员是愚蠢的生物。他们不可信,因为他们会搞砸自己,或者搞砸别人的事情。对于一个需要维护 20 年的代码的中等保险公司区域开发办公室来说,那将是相当不方便的。现在,这实际上是一种非常 Thomas-Sowell 式的关于人类能力受限的观点,我后来才欣赏。但这也是一种非常令人沮丧的程序员观点,即有些程序员太笨了,无法欣赏代码的诗意。他们太无知了,学不会如何写得好。我们需要给他们一个沙箱,让他们不会伤害自己太多。Matz 则走向了完全相反的方向。他相信人性。他相信程序员无限的学习和进步的能力。以至于他愿意将陌生人置于与他同等的地位。这是我真正欣赏 Ruby 的第二点。Ruby 允许你扩展基类。你知道我们刚才谈到的 5.times 是迭代语句五次的方式吗?那个五显然是一个基类。它是一个数字。你知道吗?你可以给它添加自己的方法。我做了,而且很多。在 Rails 中,我们有一个叫做 active support 的东西,它本质上是我用于编写 Web 应用程序的 Ruby 方言。我举一个例子。我给 Number 添加了一个叫做 days 的方法。所以如果你输入 5.days,你就会得到五天(以秒为单位)。因为秒是我们设置缓存过期时间和其他诸如此类事物的方式。所以你可以说缓存将在 5.days 后过期。你将得到五乘以——这很好。——24 乘以 60 乘以 60,或者任何数学计算,对吧?非常人性化可读。在一门新的编程语言中,你会写出秒数,然后在上面写一个简短的注释,说明这代表五天。在 Ruby 中,你可以写 five days。但比这更好的是,Matz 没有想出这个。Matz 不需要 five days。我需要它,因为我需要过期缓存。Matz 允许我以平等的地位扩展他的故事,加入我自己的章节,以至于 Ruby 的读者无法区分 Matz 写的代码和我写的代码。他信任我这个来自丹麦的陌生人,我从未见过他,却敢于篡改他美丽的故事。这种信任程度基本上是闻所未闻的。我知道其他编程语言也允许使用宏等东西。但没有一种像 Ruby 那样做到。没有一种是以一种清晰的人性愿景,一种对人性的信任,就像 Matz 那样,与 Java 处于完全相反的频谱。——是的,我的意思是,就我的审美观而言,你描述的 5.days 听起来很令人愉快。就像我能想象自己独自一人,睡眠不足,然后写下那个。这很简单。你可以写得很长,带注释。你可以写多行。你可以做,现在有了 AI,我敢肯定它会正确生成,但有一种令人愉悦的简单性。我不确定那是什么。但你是对的,那里有一种美好的感觉。我敢肯定我们会从各种哲学角度讨论幸福,但你知道,幸福就是由这些组成的。那种小小的——正是如此。——那种美好的感觉来自于一个被压缩到纯粹本质的概念。你无法从那个陈述中去掉任何多余的东西。——但你看,我也想稍微反驳一下,因为我也经常使用 Perl。就为了酷。所以,这并不全是关于压缩。——不,你可以压缩得太厉害。Perl golf 是一个东西,你可以把程序变成人类无法阅读的东西。Perl 的伟大之处在于它在 Ruby 之前出现。Matz 是 Wall 的一个伟大学习者,Wall 是 Perl 的一个伟大学习者,是 Python 和 Smalltalk 和 Lisp 的一个伟大学习者。他从所有这些早期的创建优秀编程语言的尝试中汲取灵感,并将最好的部分编辑到其中。所以他能够从过去的经验中学习。但我发现 Ruby 令人难以置信的是,我们现在是 2025 年,Ruby 已经开发了 30 多年,而最初的草稿基本上就是我们现在还在使用的 90%。在 Matz 编写 Ruby 的初始版本时,几乎有一种神圣的灵感,它超越了时间,以至于没有人能够企及。这是我一直觉得很迷人的另一件事。我普遍相信有效市场理论,即如果有人发明了更好的捕鼠器或更好的想法,其他人最终会模仿他们,以至于原始的捕鼠器可能不再被记住。没有人能够复制 Ruby 的这种精髓。他们借用了元素,这完全没问题,但在这些指标上,在对人类和程序员的信任上,Ruby 仍然比其他所有语言都更胜一筹。——我们还应该说,你知道,也许完美的编程语言是那个指标,然后是成功的语言,而它们通常是不同的。Brendan Eich 创造 JavaScript 的故事很精彩。JavaScript 征服世界的方式确实很美。我最近参观了亚马逊雨林,我最喜欢做的事情之一就是看着蚂蚁占领一切。它就像一个很好的分布式系统。它是一个混乱的东西,看起来没有秩序,但它就是有效,而且它的机制。——更糟更好。更糟更好。我的意思是,这实际上是软件开发中的一个模式,以及其他如何成为 Linux 模式的方式。Linux 在数量上比当时我认为的 Minx 要差。其他方式,它们更像大教堂,不那么怪异,但仍然有一些东西。不完美可以帮助事物前进。这实际上是我研究过的一个技巧,以至于我现在几乎在我所有的开源工作中都包含了它。我确保在我发布任何新东西的第一个版本时,它都有点坏。它有点破损,以至于会邀请人们来帮助我。因为没有比发布一个别人知道如何修复和改进的东西更容易获得其他程序员合作的方式了。——是的,这太棒了。——但 Ruby 在这方面却有些不同,或者至少曾经如此。并非在所有方面。Matz 对语言的精神,语言的设计都恰到好处。但 Ruby 的早期版本非常慢。我花了,嗯,数百人年的时间才让 Ruby 变得既美丽又高效,而且速度非常快。——我们应该说,让你爱上这门特定编程语言的东西是元编程?——是的,这把我们刚才谈到的所有元素都提升到了 11。我来快速解释一下元编程。——是的,请。——元编程本质上是 5.days 的一个版本。你可以给语言添加关键字。Active record 是 Rails 中与数据库通信的部分。这是一个系统,数据库中的每个表都由一个类表示。所以如果我们再次以 user 为例,你输入 class user descends from active record base,然后你可以写的第一行是这个。我希望我的用户有很多帖子或有很多评论。我们来做这个。我们正在创建一个用户可以发表评论的系统。下一行是 has_many,空格,:comments。现在你已经建立了用户和评论之间的依赖关系,这将为你提供用户拥有评论、创建评论、更新评论的整个访问和工厂方法。仅凭这一行 has many 看起来就像一个关键字。它看起来像是 Ruby 语言的一部分。这就是元编程。当 Rails 能够将这些元素添加到你定义类的方式中,然后运行代码为 user 类添加大量方法时,这就是元编程。当元编程以这种方式使用时,我们称之为领域特定语言。你采用像 Ruby 这样的通用语言,并将其定制到特定领域,例如在对象级别描述数据库中的关系。这是早期示例之一,你可以说,user has many comments。Belongs _two_ :account。现在你已经建立了一个一对一的关系,而之前我们有一个一对多的关系。Rails 中充满了各种各样的领域特定语言,有时它甚至不像 Ruby。你无法识别 Ruby 关键字。你只能识别看起来像其自身编程语言关键字的东西。现在,我知道 Lisp 等语言也做这些事情。它们只是用最多的线路噪音来填充编程语言。而 Ruby 在一个你无法区分我的元编程和 Matz 的关键字的级别上做到这一点,而且没有线路噪音。——是的,我应该说我的初恋是 Lisp。所以你看不见一滴眼泪。——我实际上从未写过真正的 Lisp。——那么你为什么能如此严厉地评判它呢?——因为我有两只眼睛,我可以看代码,我的审美观不允许我再往前看。我知道这是一个限制。我实际上应该深入研究 Lisp,因为我发现我从深入研究,也许我又在侮辱 Lisp 了,但编程语言的历史,例如 Smalltalk。我认为 Smalltalk 是一个了不起的实验,它也成功了,但不适合当今的编程环境。——我喜欢我们谈论 Ruby 如此多,以及什么是美丽的代码,什么是美丽的编程语言。所以,我认为你所暗示的,或者你在描述中明确表达的一件事是,Ruby 是动态类型与严格类型。你不仅说这是一件好事,而且你会为动态类型辩护至死。就像那种自由是一种需要保留的强大自由。——这是使 Ruby 成为 Ruby 的本质。这就是为什么我不能完全理解为什么人们呼吁 Ruby 添加静态类型。对我来说,这是它的基础。你为什么要把它变成一个更丑陋的语言?这是我反对静态类型的主要原因之一。它不仅在某些方面限制了你。它使元编程更困难。我写了很多元编程。我见过在 TypeScript 中做元编程需要什么。这实际上是我开始对从我参与的一些项目中移除 TypeScript 感到沮丧的原因之一。我们从 turbo 中移除了 TypeScript,这是我们的一个前端框架,因为我试图在 TypeScript 中编写元编程,我简直气炸了。我不想要这种体验,但我也从美学的角度不想要它。我讨厌重复。我们刚才谈到了我多么喜欢 Ruby 将所有这些表达式提炼成其本质。你不能去掉一个点。你不能去掉一个字符而不丢失一些东西。当你转向静态类型,你声明,至少我知道有方法可以进行隐式类型推断等等。但我们还是以一个典型的例子为例。大写 U,user,我声明变量的类型;小写 user,我现在命名我的变量;等于大写 user 或 new 大写 user。我重复了 user 三次。我没时间做这个。我没有这种敏感性。我不想让我的 Ruby 被这种东西污染。现在我理解了人们喜欢静态类型的所有论据,当主要论据是它使工具更容易使用时。例如,它使编辑器中的自动完成更容易。它使查找某些类型的错误更容易,因为你可能调用了对象上不存在的方法,而编辑器可以在你运行它之前就捕获到该错误。我不在乎。首先,我不使用工具编写代码。我用文本编辑器编写代码。我用我的双手把它从屏幕上雕刻出来。我不自动完成。这就是我如此热爱 Ruby 的原因,这也是我继续热爱文本编辑器而不是 IDE 的原因。我不想用 IDE。我希望我的手指能够单独输入每一个元素,因为它会迫使我留在 Ruby 美丽的世界里。因为一旦输入大量样板代码变得容易,你知道会发生什么吗?你就会有很多样板代码。基本上,每个拥有出色工具支持的语言都对样板代码有更高的容忍度,因为人们认为,好吧,你不用输入它,你只是自动完成它。我一点也不想要那个。我想要的是我工作的织物,它只是一个文本文件。没有别的了。所以这些东西是相互关联的。有美学部分,有工具部分,有元编程部分。还有 Ruby 的鸭子类型精神,我不知道你是否听过这个术语。它本质上不是关于,如果一个对象是某个类,我能调用这个方法吗?而是,如果方法响应了,我能调用这个方法吗?在这方面,它非常像 Smalltalk。你实际上并不检查该类是否具有该方法,这允许你在运行时动态添加方法并做所有非常有趣的事情,这些事情支撑着我们在 Ruby 中进行的所有美丽的元编程。我不想失去任何一个。我也不在乎那些好处。我看到人们反复宣传的一个好处是,编写正确软件更容易。你可以减少错误。你会减少空指针异常。你会减少所有这些东西。是的,我没有任何这些。这只是我标准操作模式中不会发生的事情。我并不是说我没有错误,当然有,但我通过单元测试、集成测试来捕捉那些错误。这些是能够捕捉逻辑错误、编译但错误的以及无法编译的东西的预防措施。所以我从来没有被吸引到这个世界,部分原因是我的工作属于某一类系统。我完全接受这一点。如果你正在编写拥有五百万、一千万、五千万行代码的系统,有数百名、数千名或数万名程序员在工作,我完全接受你需要不同的方法。我反对的是,对于一个拥有千万行代码、有十万程序员工作的代码库来说正确的东西,也应该是我在我的卧室里用来创建 Basecamp 的东西,因为我只是一个人。这完全是胡说八道。在现实世界中,我们知道这毫无意义。你知道,我不知道,你不会开着你的 Pagani 去 Costco 买杂货。它不适合那个。它没有空间。你不想弄脏漂亮的座椅。你不想做任何那些事情。我们知道某些在特定领域非常好的东西并不适用于所有领域。在编程语言方面,似乎我们忘记了这一点。公平地说,我也有点可能被认为忘记了这一点。当我第一次学习 Ruby 时,我如此痴迷于这门编程语言,以至于我几乎无法想象任何人会选择任何其他编程语言来编写 Web 应用程序。我以一种传教的精神,将 Ruby on Rails 的传教视为一场十字军东征,就像我只需要教你福音书。我只需要向你展示我们刚才谈到的条件代码,你就会在尖锐的论证下皈依。现在,我学到了那不是办法。其中一个原因不是办法是因为程序员的思维方式不同。我们的大脑配置不同。我的大脑完美地配置为 Ruby。完美地配置为动态鸭子类型语言,我可以用文本编辑器来雕刻代码。而其他人需要 IDE 的安全性。他们想要不会编译除非你调用其方法的类的安全性。我已经接受了这一点,但大多数程序员没有。他们仍然基本上停留在,我喜欢静态类型。因此,静态类型是创建可靠正确系统的唯一方法,这真是令人震惊,坦率地说,愚蠢的事情,面对证据,大量的相反证据。这就是我如此热爱 Shopify 作为 Ruby on Rails 的旗舰应用程序的原因之一。Shopify 的规模之大是大多数程序员永远无法企及的。在黑色星期五,我认为 Shopify 每秒处理一百万次请求。这不是一百万次图像请求。这是动态请求,它们通过商业管道进行。我的意思是,Shopify 运行着互联网上大约 30% 的电子商务商店。总商业交易的很大一部分是通过 Shopify 进行的,而 Shopify 是用 Ruby on Rails 运行的。所以 Ruby on Rails 能够扩展到那个规模,而无需在其所有工作中都使用静态类型。现在我知道他们做了一些实验,因为他们正在触及动态类型的一些限制。而这些动态类型的一些限制,顺便说一句,实际上只是你在编写五百万行代码时遇到的限制。我认为 Shopify 的整体代码库大约有五百万行代码。在这个规模上,一切都会崩溃,因为你正处于人类在编程语言方面所能做到的最前沿。部分区别在于 Ruby 是一种非常简洁的语言,如果用 Go 或 Java 来编写,这五百万行代码可能会变成五千万或两千五百万行。这可能会缓解你在大型系统上与许多程序员合作时遇到的一些问题。但它肯定也会加剧他们理解两千五百万行代码的难度。——所以它确实可以扩展。这是一个持续存在的迷思,说它不能扩展,Shopify 和其他公司。但 Shopify 是一个很好的例子。顺便说一句,我爱 Shopify,我也爱 Tobi,太棒了。——你应该让 Tobi 来。——是的,当然。——今天早上刚和他聊过。——当然,他是个天才。我在犹他州的某个沙漠里和他一起玩过。他是个了不起的人。Shopify,shopify.com/lex 一直在支持这个播客很长时间了。我actually 不认为 Tobi 知道他们赞助了这个播客。我的意思是,这是一家大公司,对吧?——这是一家大公司。我认为员工不到一万人,市值 1200 亿美元,每季度 GMV 达到 2500 亿美元。——但他参与了细节。——是的,非常多。关于 Tobi 的一个有趣故事。Tobi 在 2000 年代中期是 Rails 核心团队的一员。Tobi 本人编写了 Active Merchant,这是创建商店的框架之一。他编写了 Shopify 至今仍在使用的 Liquid 模板语言。他对 Rails 生态系统做出了大量贡献,并且他是公司的 CEO。是的,我认为这只是……这对我来说非常鼓舞人心,因为它与我喜欢做的事情截然相反。我喜欢大部分时间用自己的双手雕刻代码。他经营着一家近一万人的公司,这家公司literally 上的世界商业都依赖于它。一种我甚至无法开始理解的严谨程度。然而,我们在计算机科学和程序开发中的许多基本问题上却能达成共识。这是一个能够涵盖 Rails 成为一个很棒的工具的动态范围,无论是对于刚开始有一个想法的开发者,他们甚至还不完全了解一切。他们正处于 PHP 在 90 年代末会很适合的水平,因为是的,我可能可以上传一些东西到 FTP 服务器,等等。Rails 的复杂性确实比这要高,但它的跑道也长得多。跑道一直延伸到该死的 Shopify。这是我能为我们能够做到很多事情的动态范围所做的最有说服力的论证。即使这么说,Shopify 也是一个特例,当然。我写 Rails 时并不以 Shopify 为主要目标。我考虑的是单个开发者。实际上,我确实考虑 Shopify。但我现在不考虑 Shopify。我考虑的是 Tobi 编写 Snow Devil 时期的 Shopify,那是他创建的第一个销售滑雪板的电子商务商店,那是 Shopify 的前身。他一个人创建了它。之所以可能,是因为 Ruby on Rails 不仅仅是关于优美的代码。它同样关乎生产力。它同样关乎个人程序员能够产生的影响。他们可以构建一个系统,让他们能够将整个东西都装在脑子里,并能够将其向前推进,从而可以从一个开发者坐在那里工作,而那个东西就是 Shopify,然后它就变成了今天的样子。当我们谈论编程语言并进行比较时,我们经常在非常晚的阶段进行比较。比如,对于 Twitter 来说,在 2009 年它已经取得了巨大的成功,哪种编程语言更好?Twitter 是用 Ruby on Rails 开始的。然后他们遇到了一些扩展问题。当时是一个大丑闻。然后他们我猜是用另一种语言重写了它,而我猜这对于 Ruby on Rails 来说是最好的广告,因为在他们切换之后十年里什么都没有发生,对吧?基本上零创新。其中一部分是因为他们正在进行长期的转换,而早期的成功部分来自于他们拥有快速改变和适应的敏捷性。这就是初创公司所需要的。这就是 Shopify 所需要的。这就是 Twitter 所需要的。这就是每个人所需要的。而这正是 Ruby on Rails 的首要任务。确保我们不失去这一点。因为当开发工具和程序语言由大公司驱动时,它们往往会反映它们的组织结构。React 和所有其他需要使用它的东西在某种程度上都反映了 Meta 如何构建 Facebook。当然是这样。因为当然这是它的一个破坏。我并不是说 React 不是一个很棒的工具,也不能被小团队使用。当然可以。但它的诞生背景与 Ruby on Rails 非常不同。——让我稍微插一句,因为我认为我们可能会经常回到 Shopify 并庆祝它。作为一个个人笔记。这个播客的赞助商比我可能拥有的任何赞助商都要多,而且想要成为赞助商的赞助商也比我可能拥有的多。对我来说,非常非常重要的是不要在乎,并且能够庆祝人们。就像我庆祝人们一样。我庆祝公司。我不在乎他们是否赞助。我真的不在乎。我只是想把这一点说清楚,因为我们将继续说 Shopify 的好话。我不在乎。停止赞助。对我来说真的不重要。但是的,我只是想把这一点说清楚。但是,关于扩展问题,Twitter 和 Shopify,你能向我解释一下 Shopify 在 YJIT 上做了什么吗?他们为了扩展这个东西不得不做什么?因为那是一个令人难以置信的故事,对吧?——是的,Shopify 对整个 Ruby 生态系统做出的一个巨大贡献,不仅仅是 Rails,尤其是在 Rails 方面,就是 YJIT。所以 YJIT 是他们的 Ruby 编译器。这使得一切都更加高效,而且在 Shopify 的规模下,即使是 Ruby 的开销和执行时间提高 5% 到 10% 也是一个巨大的进步。现在,Shopify 不需要 YJIT。Shopify 已经运行在 Ruby 的初始版本上,我认为它比我们今天拥有的慢 10 倍。如果你回顾一下 Tobi 可能开始使用的 Ruby 186,就像我开始使用的一样,这足以推动 Shopify 达到今天的规模。很多关于扩展的讨论都丢失在未能区分两件事。规模是我们谈论的一个整体包,但实际上里面有多个包。一个是运行时性能,延迟。你能执行单个请求的速度有多快?它能发生得足够快,以至于用户不会注意到吗?如果你的 Rails 请求需要一秒半才能执行,用户会注意到。你的应用程序会感觉缓慢而迟钝。你必须将响应时间降低到,比如说,至少 300 毫秒。我喜欢将延迟目标定在 100 毫秒。这是一种性能。你能从单个 CPU 核心中挤出多少这种延迟的性能,这告诉你单个请求的价格是多少。但然后,你是否能够处理像 Shopify 现在正在做的每秒一百万次请求。如果你有一个盒子可以每秒处理一千次请求,你只需要 X 个盒子就能达到一百万次。你会发现,当涉及到编程语言时,它们在这方面都是一样的。它们都主要以水平方式进行扩展。你只需要添加更多的盒子。扩展 Shopify 的难点通常是编程语言。是数据库。而这实际上是 Shopify 现在面临的挑战之一,那就是如何在他们运营的规模上处理 MySQL?何时需要迁移到其他数据库以获得全球性能?所有这些。关于扩展 Ruby 的问题是经济问题。如果我们花费如此多的应用程序服务器,如果我们能从 Ruby 中获得 5% 的性能提升,那么我们可以节省 5% 的服务器,这可以反映在预算中。现在,这种分析最终归结为一件事。Ruby 是一种奢侈语言。它是一种奢侈品,在我看来是最高的奢侈品。它是编程语言中的 Coco Chanel。不是每个人都能负担得起的东西。我的意思是,这是最好的方式。互联网上有一些应用程序,每个请求的价值都非常低,你负担不起用 Ruby 这种奢侈语言来编程。你只能用 C 或 Go 或其他低级语言或 Rust 来“混迹”,在那里谈论线路噪音……——这就像语言的旧货店。——正是如此,你需要一种非常低级的语言来做到这一点。你负担不起用一种奢侈语言来构建它。Shopify 不是这样。Basecamp 在 2004 年也不是这样。对于 99% 的 Web 应用程序来说,情况并非如此,因为 99% 的 Web 应用程序的主要成本构成不是 CPU 核心。是湿的课程。是人类的课程。是人类理解和发展系统的能力。是他们的个人生产力。我曾经计算过,当有人第 400 次说,“哦,如果你从 Ruby 切换到某种更快的语言,你可以省很多钱。”我当时计算了一下,而且我认为我上次做这个计算是近十年前。我们花费了大约 15% 的运营预算在 Ruby 应用程序服务上。所以对我来说,将我的业务成本结构提高七个百分点,我需要选择一种快一倍的东西。这相当难。而如果 Ruby 和 Ruby on Rails 比其他东西生产力高 10%,我将能产生更大的影响,因为提高程序员的生产力实际上更重要。这就是为什么人们对 AI 如此兴奋。这就是为什么他们对一个年薪 30 万美元的硅谷程序员现在可以做三到五人的工作感到恐慌,至少理论上是这样。我还没有真正看到完全实践,但让我们假设理论是正确的,即使不是现在,也是六个月后。这很重要。这比你能从 CPU 中挤出更多的周期更重要,当涉及到这些商业应用程序时。如果你在制作像 Tim Sweeney 那样你在节目中提到的 Unreal Engine 渲染东西。是的,他需要非常关注所有细节。Nanite 引擎不能在 Ruby 上运行。它永远不会。它不是为此而设计的,好吧。这些商业应用程序绝对可以,而现在人们对 AI 感到兴奋的一切,那种额外的能力去做更多的事情。这就是为什么我们在 2000 年代初对 Ruby 感到兴奋。那是因为我看到,如果我们甚至能挤出程序员 10% 的改进,我们将能够以更少的成本做更多的事情。——我可能会争论这一点,但我真的很喜欢与 AI 合作,与 AI 协作。而且我认为你希望 AI 生成的代码是人类可读的、人类可解释的。如果它生成 Perl golf 代码,那就不是协作。所以它必须是人类的语言。你不仅仅是用英语写提示。你也希望以人类可解释的语言,比如 Ruby,来阅读响应,对吧?所以这对 AI 也有好处。因为你已经说过,对你这个雕塑家,那种精英的 Coco Chanel 雕塑家来说,你想要在你的花哨键盘上用自己的手指输入每一个字母。但 Ruby 的好处也适用于,一旦其中一些是由 AI 生成的,而你实际上是用自己的手指进行编辑。因为你可以与之互动,因为它对人类是可解释的。——我真的很喜欢这个范式,这是 Elon 在你的一期关于 Neuralink 的节目中说过的,Neuralink 增加了你和机器之间的带宽。口头或书面语言的带宽非常低。如果你要计算我们坐在这里可以交换多少比特,那将非常慢。Ruby 具有更高的通信带宽,它比大多数其他编程语言能传达更多的概念。所以当你与 AI 合作时,你想要非常高的带宽。你希望它能够与你一起生成程序,无论你是否让它编写代码,你们都能真正快速地理解,并且你可以将一个宏大的概念、一个宏大的系统压缩成更少的、你们都能理解的部分。现在,我实际上也很喜欢与 AI 合作。我喜欢雕刻我的代码,我使用 AI 的方式是在一个单独的窗口中。我不会让它驱动我的代码。我试过。我试过光标和窗口界面,我不喜欢那种写作方式。我不喜欢那种写作方式的原因之一是我能感觉到能力从我的手指流失。那种与材料的即时性消失了。我最能感受到这一点的是,我做了一个 Ubuntu 的混音版,叫做 Omakub,当我切换到 Linux 时。它完全是用 Bash 写的。我以前从未写过大量的 Bash 代码。所以我用 AI 来协作,和我一起写了很多 Bash 代码,因为我需要所有这些。我知道我想要什么。我可以用 Ruby 来表达。但我认为通过 Bash 来过滤它是一个有趣的挑战,因为我当时在设置一个 Linux 机器。这基本上就是 Bash 的设计目的。这是一个很好的限制。但我发现自己反复地问 AI,在 Bash 中表达一个条件句的方式。通过不输入它,我没有学会它。我正在使用它,我得到了我想要的表达,但我没有学会它。我有点害怕。我有点害怕,这是学习的终结吗?如果我不打字,我还会学习吗?对我来说,我重新定义了这一点,我不想放弃 AI。作为程序员,查看 API、获得第二意见、起草草稿,这是一种更好的体验。但我必须自己打字,因为你用手指学习。如果你在学弹吉他,你可以看无数的 YouTube 视频。你学不会吉他。你必须把手指放在琴弦上才能真正学会动作。我认为编程也有一个类似的方面,编程在一定程度上必须通过实际打字来学习。——我只是真的,这很迷人。听着,我的一部分大脑同意你。100% 的一部分不同意。我认为 AI 应该在学习过程中。现在目前的系统做不到,但我认为光标可以说,基本上强迫你输入某些东西。所以,就像如果你设置了学习模式。我不想成为那种放弃 AI 的人。我认为氛围编码是一项技能。所以对于一个有经验的程序员来说,太容易忽视氛围编码了。——[DHH] 我同意,我不会忽视它。——但我认为你需要开始培养这项技能,并开始弄清楚如何防止能力从你的手指和大脑中滑落。就像你如何发展这项技能,同时发展其他技能?我不知道。我认为这是一个有趣的谜题。我知道太多非常优秀的程序员只是回避 AI,因为它目前有点太笨了。——是的,它有点太慢了。这实际上是我的主要问题。它在某些方面有点太笨了,但在其他方面又有点太慢了。当我使用 Claude 的代码时,Claude 的终端版本,这实际上是我更喜欢的使用方式,我变得太不耐烦了。感觉就像我回到了代码需要编译,我必须去做别的事情的时代。代码编译的时候煮点茶。嗯,我已经在 Ruby 工作了 20 年。我体内已经没有编译等待的耐心了。所以有这方面。但对我来说更关键的方面是我非常关心能力。我见过即使是优秀的程序员,一旦他们放下键盘会发生什么。因为即使在 AI 出现之前,这种情况也会发生,一旦人们被晋升。大多数在大公司工作的优秀程序员每天都不再编写代码,因为他们有太多的会议要参加。他们有太多其他事情要做。不可避免地,他们会失去与编程的联系。这并不意味着他们忘记了一切。但如果你不把手指放在酱汁里,你就无法保持联系。别无他法。我不想那样,因为我太喜欢它了。这不仅仅是关于结果。这是程序员理解编程的关键。对于喜欢写代码的程序员来说,这不仅仅是关于他们从中获得的项目。这可能是经济价值。它不是唯一的人类价值。人类价值就在于表达。当有人坐在吉他前弹奏“天堂的阶梯”时,有一个完美的录音可以永恒流传。你可以在 Spotify 上播放它。你实际上不需要这样做。快乐在于自己指挥吉他。我作为一个程序员的快乐,就是自己输入代码。如果我提升自己,如果我晋升自己离开编程,我就变成了一个项目经理。一个我前几天写的 AI 乌鸦群的项目经理。我本可以成为一名项目经理,我整个职业生涯都是如此。如果我不在乎自己写代码,我 20 年前就可以成为一名项目经理。我只是想要结果。我就是这样开始编程的。我只是想要结果。然后我爱上了编程,现在我宁愿退休也不愿放弃它。现在这并不意味着你不能两全其美。我做了一些氛围编码,我不在乎我没有亲自弹奏。我只是想看到一些东西。我脑子里有一个想法。我想看到一些东西。这没关系。我整天也使用 AI。事实上,我已经到了这个地步,如果它被拿走,我会说,我的天哪,我们怎么还在网上查找东西?Stack Overflow 还在吗?或者我还在吗?我怎么才能找到这些问题的答案呢?我整天都在问。我不想放弃 AI。事实上,我想说,我使用 AI 的方式,我变得越来越聪明,因为 AI。因为我使用 AI 来让它解释

对我来说。即使是愚蠢的问题。我甚至会有点不好意思去谷歌搜索。人工智能非常乐意为我解释一些 Unix 命令,用通俗易懂的方式。我本应该已经知道了,但我不知道,我很抱歉,你能给我解释一下吗?现在我知道了。所以,在我一整天与人工智能一起工作之后,我变得更聪明了一点。大概 5%,抱歉,不是 5%,可能是百分之零点五。这会随着时间累积。但我也看到了,当我研究 Omakub 项目时,我试图让人工智能为我驾驶,我感觉我一天下来可能变得更笨了百分之零点五。——好的,你说了许多有趣的事情。首先,让我们从问蠢问题这件事本身开始。如果你去 Stack Overflow 问一个蠢问题,或者读别人的蠢问题和答案,那里有很多评判。人工智能有时会过度地没有评判。它通常会说,哦,这是一个好问题。——(DHH)过犹不及。——是的,哦,这太棒了。是的,我的意思是,这非常有利于学习。这是一个非常棒的学习工具,我也很想念它。它是一个很棒的搜索引擎,可以深入了解特定编程语言的各种细微之处,特别是如果你对它不太熟悉,或者像 API 这样的东西,你可以加载文档。它对学习来说太棒了。对我个人而言……我的意思是,在幸福感方面,它让我更乐于编程。我不知道那具体是什么。其中一部分是,我真的很抱歉。Stack Overflow 是一个令人难以置信的网站,但那里存在负面情绪。那里存在评判。就像身边有一个拉拉队长一样,让我感到兴奋,他只是说,是的,这是一个好主意。我会说,不,那是错的。我会纠正人工智能,人工智能会说,“你说得完全正确。我怎么没想到呢?”你知道,重写代码。我心想,我的天哪,我正在经历,这就像一个伙伴。这就像真正的积极向上,而且非常聪明,并且在挑战我思考。即使我从不使用它生成的代码,我也已经成为一名更好的程序员了。但实际上更深层的东西是,不知何故我玩得更开心了。这是非常非常重要的事情。——我喜欢因此将其视为一个结对编程伙伴。结对编程在 2000 年代开始流行。那时会有两个程序员在一台机器前,你们会互相传递键盘。一个程序员在操作,他在输入。另一个程序员基本上会坐着看代码,提出改进建议,查找一些东西。那是一个非常有趣的动态。现在不幸的是,我是一个内向的人,所以我在桥上跳下去之前,大约只能坚持五分钟。所以它对我来说不是一个全职职业。但人工智能让我能够一直拥有那种体验的所有优点。现在我认为真正有趣的是,你说的关于它让编程更有趣。我以前没真正想过,但它让我更有趣的是重新成为一个初学者。它让我第一次成功学会 Bash 变得更有趣。现在我必须经历一个弯路,我让它为我写所有代码,我意识到我并没有学到我希望学到的那么多,而当我开始自己输入时,我学到了。但它给了我信心,你知道吗?如果我需要自己做一些 iOS 编程,我可能已经六年没做过了,上次我涉足它的时候。我从来没有真正构建过任何东西。我现在非常有信心,我可以和人工智能一起坐下来,到周末我就可以在应用商店里发布一些东西了。如果没有人工智能这样的结对编程伙伴,我不会有这种信心。我实际上并不怎么用它来写 Ruby 代码。当我尝试时,我偶尔会感到惊讶,它们会说,哦,它把这个东西做对了。这真是太了不起了,而且它实际上相当不错。然后我会问你两个问题,然后我说,哦,是的,好吧。如果你是我的初级程序员,我会开始敲手指,然后说,你得振作起来。当然,最棒的是我们可以等五分钟。Anthropic 的首席执行官似乎认为,到年底,90% 的代码将由人工智能编写。我对这一点持怀疑态度,但我对编程可能变成骑马的看法持开放态度,就像我们现在手动做的那样。我们做一些娱乐性的事情,不再是交通工具,比如在洛杉矶四处走动。你不会骑马去杂货店,在你的马鞍包里买东西。这已经不存在了。这可能是编程的未来,完全是手动编程。我也不在乎。就像,即使我们有所有最佳歌曲的精彩演绎,正如我所说,有数百万人喜欢弹吉他。它可能不再像以前那样具有经济价值了。我认为我相当确信这是真的,我们可能已经看到了顶峰。现在我理解这个悖论,当某物的价格下降时,实际的总体使用量会增加,该活动的总体支出也会增加。这也有可能发生。但我们现在看到的是,许多大公司不像五年前那样招聘了。他们不预计他们会需要更多的程序员。有争议的是,Tobi 实际上在 Shopify 内部发布了一份备忘录,要求所有考虑招聘的人都问一个问题:这能由人工智能完成吗?现在,他在这个问题上比我更进一步。我看着一些编码战壕,我说,我想更多地使用人工智能,我看到它如何提高我们的生产力,但它还没有达到我只是说,哦,我们有这个项目。让我把它交给人工智能代理,它就会去完成。——但让我们诚实点。你就像一个克林特·伊斯特伍德式的牛仔,骑着马看到汽车在周围行驶,你说,好吧。——这是其中的一部分。我认为重要的是要保持谦虚,你擅长的事情可能不再是社会所看重的。历史上这种情况发生过无数次,你可能非常擅长马鞍制造。很多人曾经关心这件事,因为每个人都骑马。然后突然骑马变成了一种小众爱好,有些人关心它,但数量远不如以前。这没关系。现在,关于这件事的另一件事是,我很幸运……我做了近 30 年的程序员。那是一段很棒的时光。我试图以这种方式看待生活,我已经得到了几十年的经济可行、高价值的方式来将我最喜欢的东西转化为工作世界,编写 Ruby 代码。这非常有价值,我可以赚数百万美元。如果明天就结束了,我不应该感到遗憾。我应该心存感激。——但你也是一个经验丰富、才华横溢、固执己见的人,所以听你谈论马的未来真的很有趣,因为,你知道,有很多年轻人听这个,他们热爱编程,或者对用软件,用 Ruby on Rails 这样的语言构建东西的可能性感到兴奋。现在是可能性。——但这是职业吗?——这是职业吗?如果一个人真的可以在人工智能的帮助下构建越来越多东西,那么他们如何学习这项技能?这是一项值得学习的技能吗?对我来说,这才是真正的谜团,因为我认为你仍然必须从头开始学习编程。但你如何平衡这两项技能呢?因为我,当我思考的时候,技能正在可怕地溜走。在一段特定的代码上,真的只需要几分钟。这很可怕。不像开车,你知道,当你让汽车为你开车时,技能不会那么快地溜走。这真的让我害怕。所以当有人来找我,问我如何学习编程时,我不知道该怎么建议,因为我认为仅仅使用光标或 Copilot 生成代码是不够的。——这绝对不够。如果你想学习,如果你想变得更好,那是不够的。如果你只是变成一个打字员,也许你马上就能提高效率。但然后你必须意识到,任何人都可以打字吗?如果我们整天只是坐着打字?是的,是的,是的,是的。那不是一项有市场价值的技能。现在,我总是先对自己说,然后当我与他人交谈时,这是第一条规则,没有人他妈的知道任何事情。没有人能预测,甚至六个月后的事情。现在,我们可能正处于人工智能未来炒作的顶峰,因为我们看到了所有的希望,因为其中很多都是真实的,而且很多人都亲身经历过。这个令人震惊的事情是,硅片在某种程度上思考,感觉与人类惊人地相似。我实际上想说,对我来说最大的事情甚至不是 ChatGPT。甚至不是 Claude。是 DeepSeek。在本地运行 DeepSeek,并看到它与自己对话以制定响应的思考框。我几乎想认为,这是一种噱头吗?它是在为我表演吗?但它实际上并不是这样思考的。如果这就是它的思考方式,好吧,我有点害怕。它的思考方式非常像人类。但它会走向何方?所以 95 年,我最喜欢的电影之一,我最喜欢的 B 级片之一上映了,《割草人》。——很棒的电影。——关于虚拟现实的不可思议的电影。成为一个虚拟形象,生活在 VR 中,就像故事一团糟。但美学,它构建的世界是不可思议的。我想,我们还有五年。我将生活在 VR 中。我将漂浮着。我将成为一个虚拟形象。这就是大多数人类一天大部分时间所花费的地方,但那并没有发生。我们已经过了 30 年,VR 仍然没有到来。它存在于游戏中。它存在于一些专业应用中。我最大的孩子喜欢玩 Gorilla Tag。我不知道你是否试过。那是目前最热门的 VR 游戏。太棒了,它很棒。预测未来真的很难,因为我们不知道。然后当你考虑人工智能时,即使是最聪明的人也会说,我认为我们还不完全理解它是如何工作的。——但另一方面,你有摩尔定律,它似乎在缩小晶体管尺寸方面已经持续了很多很多年了。所以,你知道,闪存并没有接管互联网,但摩尔定律奏效了。所以我们不知道人工智能会是哪一个。——哪一个。这也是我发现如此迷人的地方。我忘了是谁做的这个演示,但网络社区中的某个人,做了一个关于飞机历史的精彩演示。你从莱特兄弟在 1903 年左右飞行开始。40 年后,你有了喷气式飞机。在短短四十年里取得了惊人的进步。然后,我想在 56 年,波音 747 的前身被设计出来,从那以后基本上没有什么变化了。自 50 年代以来,飞行体验只是进行了一些微小的调整和改进。不知何故,如果你要预测飞行的发展方向,而你坐在 42 年,你记得莱特兄弟在 03 年飞行,你看到了喷气发动机的出现,你会想,我们将在另外二十年内飞往太空。我们将发明超巨型高超音速飞行器,将在两小时内穿越地球。然后那并没有发生。它达到了极限。这就是预测未来如此困难的原因。我们可能会因为我们正在绘制图表上的早期数据点而感到兴奋,看起来那些早期数据点正在直线飙升,有时它们只是趋于平缓。这也是我们拥有如此多关键基础设施的一个例子,例如,它仍然运行在 COBOL 上。世界上大约有五个人真正深刻地理解这一点,社会有可能失去一种能力。它仍然需要,因为它在追逐未来。COBOL 仍然存在。这是我与编程相关的一件事。Ruby on Rails 现在已经达到了一个水平,以至于 50 年后,仍然有大量的 Ruby on Rails 系统在运行,这是极有可能的。很难预测那个确切的世界会是什么样子。但昨天的天气告诉我们,如果 70 年代的 COBOL 代码仍然在运行今天的社会保障系统,而我们还没有找到一种干净的方法来转换它,更不用说理解它了,那么我们在预测未来时应该保持谦虚。我不认为 70 年代编写 COBOL 代码的任何程序员都曾想过,在 2025 年,支票仍然是根据他们当时编码的业务逻辑来开出的。但这只是让我得出了关于年轻程序员应该做什么的结论。你无法预测未来。没有人能预测未来。如果你喜欢编程,你应该学习编程。现在,这会是一辈子的职业吗?我不知道,但什么会是一辈子的职业?谁知道呢?就像刚才,我们认为首先会被取代的是蓝领劳动。是机器人将接管。然后出现了 GenAI,然后所有的艺术家突然看起来像,“我的天哪,这会做所有的动画吗?这会做所有的音乐吗?”他们感到非常害怕。现在我看到最新的特斯拉机器人,我说,哦,也许我们又回到了蓝领阶层有麻烦了。因为如果它能那样跳舞,它就能修理马桶。所以没有人知道任何事情,你必须以一种不介意你选择的职业或道路的方式为未来定位自己,如果事实证明你必须重新培训和重新学习,你不会后悔你选择的道路。这是一个普遍的人生原则。对我来说,我如何看待我参与的所有事业,就是我希望对所有结果都感到满意。当我们在 37signals 开始开发新产品时,我为它的成功设定了我的思维模式。然后我说,你知道吗?如果没人想要这个,我将有机会编写漂亮的 Ruby 代码,探索新的领域,学习新东西,构建我想要的系统,即使没有人想要它。多么幸运。多么荣幸。如果很多人想要它,那就太好了。我们可以支付一些工资,我们可以维持公司运转,如果它大获成功,那就太棒了。我可以影响很多人。——我认为对我来说,一个巨大的悬而未决的问题是,你能通过“氛围编码”走多远,或者说,一个年轻开发者投入大部分时间到“氛围编码”还是从头开始编写代码。所以,“氛围编码”的意思是,我有点顺应了这个梗,但“氛围编码”的意思是,你生成代码,你有一个你想创造的东西的想法,你生成代码,然后你用自然语言提示和手动来修复它。你学到足够的知识来手动修复它。这就是学习过程。如何修复生成代码,或者你从头开始编写代码,让 LMS 标签、标签、标签、标签、添加额外的代码。你倾向于哪一部分?我认为为了安全起见,你应该在两者中都找到美丽、艺术性和技能,即从头开始编写。所以,应该有一部分时间你只是从头开始编写,一部分时间进行“氛围编码”。——应该有更多的时间从头开始编写。如果你有兴趣学习编程,不幸的是,你不会通过看健身视频来变得健康。你不会通过看 YouTube 吉他视频来学会弹吉他。你必须自己去弹。你必须做俯卧撑。编程,理解,学习几乎任何东西都需要你去做。人类不是通过仅仅从远处观看别人来吸收信息并将其转化为技能的。现在,讽刺的是,人工智能似乎在这方面做得相当好,但人类不行。如果你想学会成为一个称职的程序员,你必须编程。这真的不难理解。现在我理解这种诱惑。诱惑就在那里,因为“氛围编码”可以产生东西。也许在这一刻,尤其是在你不熟悉的领域,使用你不太熟悉的工具,它比你自己的能力要好。或者你花的时间会更长,但你什么也学不到。你将以一种肤浅的方式学习,感觉像是学习,但完全是空热量。其次,如果你只是“氛围编码”,你就不是程序员。那么任何人都可以做到,这可能很棒。这基本上就是 Access 数据库发生的事情。Excel 也发生了。它让会计师有机会成为软件开发者,因为工具变得如此易于使用,以至于他们可以构建一个模型来预测下周的业务。这在 Excel 之前需要一个程序员。现在不需要了,因为他们自己就可以做到,编码使非程序员能够探索他们的想法,我觉得这非常棒。但这并不能让你成为程序员。——我同意你的观点,但我想留有余地,让我们都可能出错。例如,可能,“氛围编码”实际上可能是一项技能。如果你训练它,并且通过“氛围编码”,让我们包括纠正的步骤,迭代的纠正。如果你在这方面做得非常出色,你可能会超越那些从头开始编写代码的人,你可能会创造出真正创新的东西,尤其是在这个历史时刻。虽然 LLM 有点太笨拙,无法创造出超新颖的东西和完整的产品,但它们正在接近。所以,如果你现在投入时间成为一个非常好的“氛围编码者”,也许这是正确的做法,就像我们开玩笑说“氛围编码”一样,只是坐着,它就在名字里。但如果你认真对待它,成为一个有竞争力的“氛围编码者”,并擅长利用人工智能的浪潮,并擅长编辑代码而不是从头编写代码的技能,那么你可能会在长期内走得更远。也许编辑是一项与从头编写根本不同的任务,如果你认真对待它作为一项你发展的技能。对我来说,这是一个悬而未决的问题。我只是觉得,我个人,现在你处于另一个层面,但就我个人而言,我不太擅长编辑我没有写过的代码。——没有人是。——这是不同的一点。——这个时代没有人是,但也许这是一种技能。也许如果你和人工智能同步了,因为人工智能有其一致性。就像它真的是一个具有一致风格和结构的结对程序员等等。再加上你自己的提示,你可以控制你编写的代码类型。我的意思是,它通常可以是一项技能,就像。——这是提示工程师的梦想。我认为这完全是痴心妄想。我认为不存在不擅长写作的编辑。我写过几本书。我请过几位专业编辑。并非所有编辑都写过自己的优秀书籍,但他们都在某种程度上是优秀的作家。如果你不知道如何做,你就无法给别人建议。如果一个编辑无法发现问题的症结所在,而他自己也无法找到解决方案,那将是非常困难的。在我看来,编辑是奖励,成为一名优秀编辑的能力是你成为一名优秀执行者的奖励。你必须先成为一名执行者。现在,这并不意味着“氛围编码”和提示工程无法在短时间内产生完整的惊人系统。我认为这是完全可能的,但那样就没有技能了,这也许是最大的回报。这难道不是人工智能的全部承诺吗?它只是自然语言,即使我笨拙地提问,也能得到一个优美、简洁的答案。对我来说,这是一种更有吸引力的愿景,即会有这些特殊的提示工程师巫师,他们知道如何巧妙地引导人工智能来产生他们想要的东西。人工智能的美妙之处在于,一个人可能对人工智能的工作原理一无所知,却能够形成自己的想法和愿望,而人工智能却能以某种方式将这些混乱的想法转化为人们想要的东西。这实际上就是编程一直以来的样子。经常有人不知道如何编程,但他们想要程序,然后他们雇佣程序员,给他们混乱的描述,然后当程序员交回时说,“哦不,实际上那不是我想要的意思。我想要别的东西。”人工智能可能能够提供这种循环。如果这种情况完全发生,是的,程序员的数量就会减少,对吧?但希望,至少在可预见的未来,有人仍然必须理解人工智能产生的东西是否有效。——作为一个有趣的案例研究,也许是一个思想实验。如果我想用“氛围编码”来构建 Basecamp 或 HEY,以及你构建的一些产品,那么瓶颈是什么?我会在哪里失败?——我尝试用“氛围编码”来构建真实的东西时,我发现你实际上很早就失败了。在当前时刻,“氛围编码”能够构建一个看起来像是在工作的表象,对吧?但它在各个方面都有缺陷。有明显的方面,那些梗的方面,它泄露了你所有的 API 密钥,它以明文存储你的密码。我认为这最终是可以解决的。它会弄清楚,或者至少会做得更好,但它迷失在自己迷宫中的能力现在非常大。它编写了代码,然后你想改变一些东西,它就变成了一个打地鼠的游戏。很快,Pieter Levels,他一直在做这个很棒的飞行模拟器,他谈到了在某个规模下,东西会咬住自己的尾巴。你想修复一个东西,它会弄坏其他五个东西,我认为这实际上是人类独有的,因为大多数糟糕的程序员都是这样。在某个复杂程度的领域,他们无法修复一件事而不弄坏其他三件事。所以在这方面,我实际上在某种程度上认为这是一个积极的信号,表明人工智能会弄清楚这一点,因为它现在走了一条极其人类化的轨迹。它犯的错误是初级程序员经常犯的错误。——是的,我们可以放大并看看 Rails 的愿景、宣言、教义。是什么让一种编程语言成为一个框架的伟大之处?特别是对于 Web 开发。所以我们谈到了幸福感。Ruby 的根本目标。还有什么?——所以你正在看我 2012 年写下的九点。首先,在我们深入研究它们之前,我想说我写下它们的原因是,如果你想让一个社区持久,你必须记录它的价值观,你必须记录它的实践。如果你不这样做,最终会有足够多新的人加入,他们有自己的想法,这个东西应该往哪里去。如果我们没有一个指导灯帮助我们做决定,我们将开始摇摆不定。我们将开始分崩离析。我认为这是各种机构开始分崩离析的一个关键原因。我们忘记了切斯特顿的栅栏为什么在那里。我们只是说,为什么那个栅栏在那里?让我们把它拔掉。哦,它是为了阻止狼进来。现在我们都死了,哎呀。所以我想把这些东西写下来。如果我们快速地逐一来看,你谈到了优化程序员的幸福感。我把它放在第一位,以纪念 Matz,这很大程度上是接受偶尔会在编写优美代码和其他我们想要的系统功能之间做出权衡。可能会有运行时权衡,可能会有性能权衡,但我们仍然会这样做。我们也允许模糊性,而许多程序员默认情况下对此感到不适。我在这里举一个交互式 Ruby shell 的例子,你可以在其中玩语言,甚至与你的领域模型进行交互。我至少找到了两种退出它的方式。你可以写 exit。砰,你离开了程序。你可以写 quit。砰,你离开了程序。它们做的事情一样。我们只是写了 exit 和 quit,因为他们知道人类很可能会选择其中一个。Python 是一个完美的对比。在 Python 的交互式协议中,如果你写 exit,它不会退出。它会给你一个教训。它基本上会告诉你阅读手册。它说使用 exit() 或 Ctrl-D 即文件结束来退出。我心想,一个非常人性化,另一个非常工程师化。我指的是两者都是最好的方式。Python 是迂腐的。Python 的价值从一开始就声明,最好只有一种方法来做某事。Ruby 则完全相反。不,我们想要完整的表达,适合不同的人类大脑,这样语言似乎就能猜到他们想要什么。——其中一部分也描述了最小意外原则,这很难在语言中实现,因为你必须,这是一种主观的东西。——这就是为什么你不能只用一种方式,这就是为什么我使用了 exit 和 quit 的例子。最小意外原则对某些人来说是,“哦,exit。我就是这样退出提示的。”对其他人来说是 quit。为什么我们不两者都做呢?——好的,那么约定优于配置呢?那是一个大问题。——那是一个大问题。那是一个巨大的问题。它源于我在早期对特别是 Java 框架的沮丧,当时你正在设置一个 Java Web 应用程序框架,写成百上千行的 XML 配置文件是很常见的。哦,我需要这个。我希望数据库使用 foreign keys 作为 post_id。不,不,不,我想要它作为 post Capital ID。哦,不,不,不,你必须写成 capital PID。关于数据库的外键关系应该如何工作,有很多配置方式,但它们都不重要。我们只需要选择一个,然后就可以了。如果我们选择一个,并且可以依赖它,它就成为了一种约定。如果它是约定,我们就无需配置它。如果我们无需配置它,你就可以更快地开始处理你真正关心的事情。所以约定优于配置基本上就是这个想法,系统应该预先组装好。我不是给你一盒乐高积木,让你去建造千年隼。我给你一个成品玩具。你可以编辑,你可以改变它,它仍然是用乐高积木搭建的。你仍然可以取下一些零件,放进一些其他零件,但我给你的是最终产品。这与大多数程序员的喜好背道而驰。他们喜欢一盒乐高积木。他们喜欢从头开始组装一切。他们喜欢做出所有这些细节上的小决定,而这些决定根本不重要。我想提升这一点,这样,嘿,我不是想剥夺你的决定权。我只是想让你专注于真正重要的、你真正关心的决定。没有人关心它是 post_id 还是 post ID 还是 PID。——是的,很棒的默认值。——是的。——这真是太棒了。你有很多抱负,他们将用这些零件建造一个没有人建造过的、最美丽的乐高城堡。但实际上,在大多数情况下,为了提高效率,你只需要建造基本的东西。然后在此基础上才是你的创造力。——绝对是,我认为这是教义的一部分,许多程序员虽然不情愿地使用 Ruby on Rails,但他们也会承认它是一个不错的东西,即使他们并不真正喜欢它。就像,程序员很难摆脱从头开始用乐高积木建造的吸引力。这就是我们喜欢做的。这就是我们成为程序员的原因,因为我们喜欢把这些小零件组装起来,但我们可以将这种本能引向一个更有效率的堆栈。——好的,还有其他一些吗?——菜单是 omakase。它实际上源于同样的原则,即很棒的默认值非常重要。如果你看看现在 JavaScript 生态系统中所有错误的事情,那就是没有人负责菜单。有数十亿种不同的菜肴,你可以配置你量身定制的特定配置,但没有人做过工作来确保它们都契合在一起。所以你会在 JavaScript 生态系统中遇到所有这些独特的问题,例如,可能有 25 种主要的方式来处理控制器层。然后有同样多的方式来与数据库通信。所以你得到的是 n 乘以 n 乘以 n 的排列,没有人使用相同的东西。即使他们使用相同的东西,他们也只使用相同的东西大约五分钟。所以我们没有保留的智慧。我们没有建立持久的技能。Rails 则完全相反,它说,你知道吗?Rails 不仅仅是一个白色的框架。它是一个完整的解决 Web 问题的方法。它是一个完整的解决构建优秀 Web 应用程序所需一切的方法。而且这个拼图的每一块都应该在盒子里预先配置好,预先组装好。如果你想稍后更改其中一些零件,那太棒了。但第一天你就会得到一个由一位真正关心每一种食材的厨师设计的完整菜单,你会很享受它。这又是一个很多程序员认为我比他们懂得多的事情。他们确实在某些超局部意义上懂。每个程序员都懂。这就是 Ruby 的基础。每个程序员在他们特定的情况下都懂。也许他们会做一些危险的事情。也许他们认为他们懂,然后他们会搞砸,然后他们就会真正懂了,因为他们搞砸了一次,就不会再这样做了。但 omakase 的菜单就是这样。——所以你普遍认为整体的价值?——是的,集成系统。——集成。——有人考虑了整个问题。这也是我一直以来反对微服务的几个原因之一,自从这个词被创造出来以来。微服务诞生于一个好主意。在 Netflix 的规模下,当你有数千名工程师处理数百万行代码时,你会怎么做?没有人能一次性掌握整个系统。你必须将其分解。微服务可以是一种合理的方式来做到这一点。当你达到 Netflix 的规模时,当你将这种模式应用于一个由 20 名程序员组成的团队,他们处理一个 50 万行代码的代码库时,你就是个白痴。你只是不需要将方法调用变成网络调用。这是分布式编程的第一条规则。不要分布式你的编程。它让一切都变得更难。当有网络电缆介入时,程序员必须考虑的所有故障条件都会变得无限复杂。所以我讨厌过早分解的想法,而微服务正是如此。整体的说法是。让我们专注于构建一个单一人类可以真正理解的整个系统,并通过压缩所有概念来尽可能地推动这种范式,这样更多的东西就可以装进一个正常运作的人的内存中。然后我们可以有一个系统,我可以真正理解所有的 Basecamp。我可以真正理解所有的 HEY。这两个系统都只有十万多行代码。我见过一些人做到这一点,也许是两倍,也许是三倍的规模,然后它就开始崩溃了。一旦你超过了五十万行代码,就没有一个人能够做到,那时你可能需要一定程度的微服务。——Basecamp 和 HEY 都是十万行?——大约十万行代码。——哇,这很小。——是的。考虑到 Basecamp 有大约 420 个屏幕,不同的方式和配置。——啊,你把前端也算进去了吗?——不,那是 Ruby 代码。嗯,从某种意义上说,一些 Ruby 代码对前端有益,但它不是 JavaScript。现在,我们稍后可能会谈论的另一件事是,我们实际上为我们所有的应用程序编写的 JavaScript 非常少。HEY,这是一个 Gmail 的竞争对手。Gmail 发送了大约 28MB 的未压缩 JavaScript。如果压缩,大约是 6MB,28MB。想想那有多少行代码。当 HEY 发布时,我们发送了 40KB。它试图解决同一个问题。你可以用 28MB 的未压缩 JavaScript 或 40KB 来解决电子邮件客户端问题,如果你做的事情不同。但这基本上是同一个问题。这就是为什么我坚决反对将前端和后端分开。在我看来,这是对 Web 开发的伟大罪行之一。我们仍在为此赎罪。我们分离和分割了曾经是,并且应该是统一的问题解决机制。当你同时处理前端和后端时,你就理解了整个系统。你不会陷入这些分解的阵营,最终你会得到像 GraphQL 这样的东西。——好的,让我们快速浏览一下教义的其余部分。没有单一的范式。——没有单一的范式,这指的是 Ruby 核心上是一个非常面向对象的编程语言,但它也是一种函数式编程语言。我告诉你的这五次,你可以基本上进行这些匿名函数调用,并将它们链接在一起,非常符合真正的函数式编程语言的工作精神。Ruby 通过使字符串不可变,已经更接近函数式编程的规模。它融合了来自不同学科和不同软件开发范式的思想。例如,Smalltalk。只有面向对象,仅此而已。Ruby 主要面向对象,但借用了一点函数式编程,一点命令式编程,能够做到所有这些。Rails 也试图做同样的事情。我们不会只选择一种范式并将其应用于一切。面向对象是核心,但邀请所有这些其他学科是可以的,并且受到启发是可以的。重新混合是可以的。我实际上认为 Rails 的主要好处之一是它是一个混搭。我没有发明所有这些想法。我没有想出 ActiveRecord。我没有想出将应用程序划分为 MVC 的方式。我吸收了我从各个阵营学到的所有伟大的想法,并将它们组合在一起。不是因为将有一个单一的、包罗万象的万物理论,而是因为我将拥有一个包容性的单元,它融合了来自各方的最佳成果。——这个想法是否与整体系统的美感有些冲突?——我认为整体系统可以被认为是相当宽敞的,一个大帐篷,整体系统实际上需要借鉴一点函数式编程,以解决该学科擅长解决的问题,以及该范式擅长解决的问题。如果你也想要以面向对象为核心。实际上,当我研究函数式编程语言时,有很多值得喜爱的地方。然后我看到它们在解决需要改变某些东西的问题时所做的疯狂的扭曲。你会想,我的天哪,这是一个很棒的范式,适用于 90% 的问题。然后当你试图解决最后 10% 的问题时,你会把自己完全搞得一团糟。——哦,在下一个中,赞美优美的代码。——我们已经详细讨论过了,这里有一个很好的例子,它真正概括了 Ruby on Rails 的领域特定语言的质量,你可以让代码写起来和读起来都很愉快。这对我来说很有趣,因为正如我们所讨论的,当我开始学习编程时,这甚至不是一个考虑因素。我甚至不知道那可能成为前提的一部分,可能成为解决方案的一部分。写代码可以感觉像写诗一样。——class Project, ApplicationRecord belongs_to :account has many participants. Class_name, Person, validates_presence_of :name.——你看,你可以读出来。你甚至没有改变。——像俳句之类的东西。——对吧?这不美吗?——是的,很美。真的很美。它有一种直观的性质。好的,我有一些具体的问题。我的意思是 ActiveRecord,就这个话题而言。那一定是你的最爱。——它是 Rails 的皇冠明珠。确实如此。它是 Ruby on Rails 工作方式的决定性特征。它的出现伴随着有趣的争议,因为它实际上使用了 Martin Fowler 在《企业应用架构模式》一书中描述的一种模式。对于任何从事业务系统工作的人来说,这是最伟大的书籍之一。如果你还没有读过,你必须立即拿起它。《企业应用架构模式》,我想它出版于 2001 年。这是我读过很多遍的为数不多的编程书籍之一。它太棒了。在其中,Martin 描述了许多构建业务系统的模式。而 ActiveRecord 在其中只是一个脚注。这种模式字面意思就叫 Active Record。你可以查一下。——不错。——它叫 Active Record。我甚至没有足够的创造力来想出自己的名字。但它允许数据库和面向对象相结合,许多程序员觉得有点令人反感。他们实际上不想用 SQL 来污染那种编程的美丽的面向对象本质。前几天 Uncle Bob 对 SQL 是最糟糕的东西发表了咆哮。好吧,好吧,随便吧,我不在乎。这是实际的。我们正在制作 CRUD 应用程序。你从 HTML 表单中取出东西,然后将它们放入数据库。它没有比这更复杂的了。你在两个极端之间放置的抽象越多,你就越在欺骗自己。这就是我们在做的。我们在与 SQL 数据库通信。顺便说一句,快速插曲,SQL 是那些经受住了 NoSQL 数据库的冲击,结构化列表数据近十年,仍然占据主导地位的东西之一。SQL 是一个值得投入时间学习的好东西。每个从事 Web 工作的程序员都应该在很大程度上了解 SQL。即使他们使用 ORM,对象关系映射器,如 ActiveRecord。你仍然需要理解 SQL。Active Record 所做的并不是试图将 SQL 抽象成另一种范式。它只是让编写它不那么麻烦。使其更容易在其之上构建领域模型,而无需手动编写每一个 SQL 语句。——我们只会说 Active Record 是一个 ORM,它是一个层,使与数据库的通信直观且可由人类解释。——甚至更简单。它将表变成类,将行变成对象。我实际上认为 SQL 非常容易理解大部分。你可以写一些 SQL golf。那很难理解。但 SQL 的基础,以及对 SQL 的许多批评是它被写成供人类消费。它实际上相当冗长,特别是如果你反复进行插入操作。插入到表括号中,列出所有要插入的列,值,括号中,与该列匹配的每个值。手动编写 SQL 会很乏味,但它实际上非常易于人类阅读。Active Record 只是消除了这种乏味。它使得以人类可描述的语言无法做到的方式组合事物成为可能。它将事物组合成方法,你可以组合这些方法,你可以在它们周围构建结构。所以我不讨厌 SQL,我讨厌编程中的很多东西。我试图摆脱它们。SQL 并不是其中之一。只是我不想一遍又一遍地写同样的东西。我只是想,我们能不能更简洁一点?我们能不能稍微更好地匹配面向对象,而不试图隐藏我们将这些对象持久化到数据库的事实。这就是很多 ORM 犯错的地方。它们试图生活在纯粹的对象世界中。从不考虑这些对象必须持久化到 SQL 数据库中,然后它们想出了一个复杂的翻译方法。Active Record 说,你知道吗?接受它。这个记录,这个对象不会被保存到任何 NoSQL 数据库中。它不会被保存。它将被保存到 SQL 数据库中。所以整个结构都围绕着它。它将具有属性。这些属性将响应数据库中的列。它没有比这更复杂的东西了。——是的,但我应该说,我个人喜欢 SQL,因为我是一个算法人,所以我喜欢优化。我喜欢知道数据库是如何工作的,这样我就可以匹配 SQL 查询和表的设计,以便能够从表中挤出最佳性能。好的,基于表实际使用的方式。所以,我认为这表明学习理解 SQL 是有价值的。我想知道,因为我开始看 ActiveRecord,它看起来真的很棒。这会让你变懒吗?不是你,而是进来开始使用 Rails 的人,你可能可以一直不真正学习 SQL,对吧?——只要你想保持在入门级的能力水平。这实际上是我与 Rails 的总体使命,就是将入门门槛降低到如此之低,以至于一个人可以在不理解任何东西的情况下开始在浏览器上看到东西。是的,他们可以运行 Rail's new blog,运行一些生成器,他们有一个完整的系统,他们什么都不懂。但这是一个学习更多的邀请。我感到兴奋的地方,这与人工智能的讨论有关,就是当它变成这种梗时,程序员不再需要有能力。我的意思是人工智能会弄清楚的。生成器会弄清楚的。我不需要知道 SQL,Active Record 会为我抽象掉它。不,不,不,伙计,等等。这里的路径是能力。我试图教你东西。我明白我不能在五分钟内教你所有东西。任何一个在有价值的事情上变得出色的人都不可能在五分钟内被教会所有东西。如果你想成为一个全面发展的 Web 应用程序开发者,这需要很多年。但你可以在几天内变得相当有生产力。你可以在几天内玩得很开心。你会在几分钟和几个小时内玩得很开心。随着时间的推移,我可以教你更多一点。Active Record 就像,是的,是的。好吧,从这里开始,然后下周我们将做一个课程。

在 SQL 上。——而且实际上,你有一个我喜欢的绝妙表达,那就是“一个伟大的编程语言”。就像 Ruby 有一个平缓的入门曲线,这条曲线会无限延伸。——说得太对了。——所以是的。它超级容易上手,超级容易开始。——而且它永无止境。总有更多东西需要学习。这也是我仍然享受编程乐趣的原因之一。我仍然在学习新东西。我仍然可以融入新事物。网络作为一个领域足够深邃。你永远学不会它的全部。——提供锋利的刀。——这是一个很好的观点,因为换一种说法,或者说相反的说法,Java 的说法是“不要提供脚部枪支”,对吧?我不想给你锋利的刀。你是个孩子。你拿不住锋利的刀。给你一把钝的黄油刀。切你的牛排吧,对吧?这是一种非常令人沮丧的经历。你想要一把锋利的刀,即使你可能会伤到自己。我信任人类,就像 Matz 信任人类一样。也许你会砍掉一根手指。好吧,你不会再那样做了。幸好那是一根虚拟的手指。它会长回来的。你的能力会增长。使用锋利的工具工作更有趣。——这实际上也促成了那条无限延伸的曲线。——是的,为了学习。——重视集成系统。——我们已经谈到过这一点了。Rails 试图解决整个网络问题,而不仅仅是一个小组件。它不会留下给你一堆需要自己拼凑起来的碎片。——进步胜于稳定。——你知道吗?如果有一个过时的,那可能就是这个了。在这个阶段,Rails 在许多许多代中都非常稳定。上一个主要版本 Rails 8 对于运行 Rail 7 的任何人来说基本上是无需升级的。Rail 7 对于运行 Rail 6 的任何人来说几乎也是无需升级的。我曾经认为需要更多的变动才能取得进步,才能保持在最新事物的最前沿。在我经历过 2010 年代 JavaScript 社区的屈辱之前,我曾这样想。在那里,稳定似乎不仅不被重视,反而被鄙视,认为变化本身就是我们应该追求的价值。如果你在三个月后还在使用同一个框架,你就是个白痴。我看到了这一点,并且我实际上退缩了。如果我现在要写这个信条,我会写得不同。我不会说“进步胜于稳定”。——也许这取决于编程语言的年龄。——也许,或者对问题的更深入理解。我认为技术如此迷人的部分在于,我们有一种看法,认为一切都在飞速发展。不,它没有。一切都在以冰川般的速度发展。偶尔会有范式转变,就像现在 AI 正在发生的那样。就像 2007 年 iPhone 问世时发生的那样,就像 95 年互联网问世时发生的那样。这基本上是我职业生涯的总和。三件事发生了变化。介于它们之间的一切都是渐进式的小改进。你可以认出一款 2003 年编写的 Rails 应用程序。我知道,因为我当时写的 Basecamp 仍在运行,每年赚取数百万美元的收入,为客户提供当时推出的初始版本。如果我稍微眯起眼睛,它看起来就像我现在写的 Rails 代码一样。所以大多数事情即使在计算领域也不会改变。这实际上是一件好事。我们看到了 JavaScript 生态系统。当每个人都对持续的变化感到疯狂时会发生什么。事情并不经常改变。——顺便说一句,关于那个小小的离题。你刚才在视觉上、言语上改变了你 15 年前的想法。——是的。——这很有趣。你注意到自己多年来改变了很多想法吗?——我会说,哦,是的。然后也说,哦,不,从某种意义上说,关于人性、制度、编程、商业,我确实改变了一些根本性的想法。然后我也经历了一些更有趣的事情,我以为我改变了主意,尝试了一种新方法,意识到我最初的观点为什么是正确的,然后又回到了它。所以它以两种方式发生。后者的一个例子是 37signals 的经理。很长一段时间以来,我一直反对工程经理,认为他们是小型甚至中型公司不必要的负担。有一次,我开始有点怀疑自己。我开始想,你知道吗?也许所有程序员每周都需要和他们的工程经理进行一次一对一的治疗,才能成为一个完整的人。所以我们尝试了几年,雇佣了一些非常优秀的工程经理,他们以应该有的方式进行工程管理,就像在其他地方一样。在那之后,我心想,不,不,我是对的。这是正确的。我们不应该有经理。不是每个程序员都需要每周与工程经理进行一次治疗。我们不需要这些,至少不需要计划好的集会。我们不需要所有这些会议。我们只需要让人们独自一人去处理他们喜欢的问题,不受干扰地长时间工作。幸福就在那里。生产力就在那里。如果你能做到,你绝对应该这样做。工程管理是一种必要的邪恶,当它崩溃时。——那么经理的理由是什么呢?——经理的理由是,如果你有很多员工。会冒出很多工作。一对一就是一个例子,程序员需要有人来跟进。还有另一种理想化的版本,有人需要指导初级员工的职业生涯,例如,给他们纠正性的反馈以及所有这些其他东西。并非在抽象意义上,我不同意其中一些观点,但实践中我发现它们常常会制造更多问题,而不是解决问题。这里的一个好例子是,你能从一个在你的工作上不如你的人那里获得反馈吗?你得到一些反馈。你可以得到关于你在工作中表现的反馈。你是否对他人礼貌?你是否是一个好的沟通者?好的,是的。但你无法从你的工作中获得反馈,而这更重要。如果你想在职业生涯中取得进步,在工作中与一个比你更优秀的人一起工作或在他手下工作更重要。我合作过的每一个程序员都比我更关心在职业生涯中取得进步,在这方面,在他们的技艺上变得更好,而不是从一位中层经理那里学到一些技巧。这并不是说它没有价值。这并不是说成为一个更好的人或更好的沟通者没有价值。当然,所有这些都有。但如果我必须选择一个,我更看重能力。就像我再次强调,我为此做了无数次说明,因为我知道人们有时会听到什么。他们听到“天才混蛋也很好,这很棒,你应该原谅所有恶意的行为,如果有人真的擅长他们所做的事情。”我根本不是那个意思。我所说的是,能力的历程就是从比你优秀的人那里学习的历程,而这种关系应该优先于一切,而当工程经理出现时,这种关系就会被搁置。现在有趣的是,这场谈话与我们之前谈论的事情有关。大多数工程经理实际上是前程序员。他们至少在某种程度上懂编程,但我一次又一次地看到,他们很快就失去了感觉,变得非常非常快的尖头老板,他们非常擅长检查更新。只是看看我们在 A 项目上的进展,如果你需要什么,我们准备好交付了吗?好的,是的。还有,不。闭嘴,别烦我。让我编程,然后我就会出错。我会和其他程序员交流,我们可以互相学习,我们可以一起讨论问题,然后继续前进。如果你回顾计算机行业的历史,所有伟大的创新都是由没有工程经理的小团队完成的。全是技术精湛的个人。你请过 John Carmack 来这里。我曾经非常崇拜他的软件。不仅仅是因为我喜欢《雷神之锤》,不仅仅是因为我喜欢他们所做的事情,而是因为他分享了一些关于公司如何运作的信息。没有经理,或者他们可能有一个负责业务的家伙做一些业务方面的事情,但那只是为了赚钱。其他一切基本上都是设计师和程序员。他们大约有八个人,他们创造了该死的《雷神之锤 II》。所以你为什么还需要这么多人?你为什么还需要这么多经理?我想,再次强调,在某个规模上,它确实会崩溃。很难让十万程序员四处乱窜,而没有产品妈妈或爸爸告诉他们该做什么。我理解这一点。然后即使我这么说,我也无法理解。是的,因为如果你看看 Gmail 之类的东西,当时在谷歌,它是由 Buchheit 做的一个副项目。即使是这些大公司中许多持久的长期价值也是由没有经理的人创造的。这不是偶然的,这是直接因果关系。所以我在某种程度上变得更加激进,反对这种管理观念,至少对我自己而言,并且了解我是谁以及我想要如何工作。因为这其中的另一部分是我不想成为一名经理,也许这只是我将我是一个不愿每周与人进行一对一通话的内向者的事实投射出来。但它也概括了我是如何能够发展我的职业生涯的。在 Ruby 或其他方面,我直到有了一扇可以关上的门,并且没有人可以打扰我六个小时,我才真正进入下一个层次。——所以公司里可能是原因之一是,招聘经理非常容易,而且经理也会将责任从你身上委派出去。所以如果你只有一群程序员在跑来跑去,你就有责任,这是智力工作,需要处理每个问题的基本原理。所以经理们就像你可以放松一样,哦,我会得到照顾的。但他们然后会雇佣自己的经理,这会不断地成倍增加。我希望美国一些伟大的公司能有一个额外的分支,我们可以随时运行,也许物理学家可以想办法分裂模拟,让所有经理都被移除。也只是在那一分支里,公关和传播人员也一样。甚至律师,只有工程师,让我们看看,然后我们再合并回来。——我实际上在 37signals 已经这样做了 20 年。我也尝试过在另一边进行分支。我尝试过雇佣一名全职律师。我尝试过有工程经理。我可以告诉你,当组织里没有这些角色或这些角色时,50、60 人的生活会好得多。从来不是关于个人,而是关于角色。这些角色中没有一个在你的组织里是全职的。偶尔你需要一个经理。偶尔你需要一个律师。我可以偶尔扮演经理的角色,没问题。然后我可以把它归零。这几乎就像云服务。我想要一个经理服务,我可以在本周调用七个小时,然后接下来的三个月我将其降至零。——是的。我读过。我不知道现在是不是这样,Basecamp 是一个有限责任公司,没有首席财务官,比如全职会计。那是升级吗?——最有趣的是。如今,我们确实有一位财务主管。在公司成立的前 19 年里,我记得我们没有。我们基本上只是请了一位会计来记账,就像你经营一家小冰淇淋店一样,只不过我们最终做了数亿美元的收入。规模似乎很奇怪。在某个时候,你也会爱上自己的怪癖,以至于不健康。我肯定随着时间的推移也这样做了,我们本应该早点有人更认真地计算一下。这是因为我们非常赚钱,并且销售的软件具有无限的利润率,所以你可以逃避很多本不该做的事情。部分教会我这一课的是,当我们意识到我们在某些美国州没有收取销售税,而我们在那里有业务联系。我们花了大约两年时间和 500 万美元的赔偿和清理才摆脱了那个烂摊子。在那之后,我心想,好吧,好吧,我们可以雇一个财务人员。现在我们有一位很棒的财务人员 Ron,他实际上取代了其他一些东西。我们曾经有一位全职数据分析师,他会做各种洞察挖掘,为什么人们会注册这个东西。我们运行了 10 年,然后意识到,你知道吗?如果我能选择数据分析师或会计,我会选择会计。——我非常喜欢这一点,在很多层面上。我们能稍微停留一下你给出的关于小团队更好的建议吗?我认为这真的很少。少即是多。你之前说了什么?糟糕的更好。哦,抱歉。——糟糕的在技术采纳方面更好,很多时候。而且我认为这实际上是同一个结果。它源于这样一个事实,即许多伟大的突破是由甚至不是小团队而是个人创造的。个人写东西。一个人在某个参数上写东西,他们所做的就是糟糕的。当然,当一个人必须制作一个拥有数百甚至数千名开发人员的大公司可以解决的问题时,它就是糟糕的。但在许多其他参数上,糟糕就是价值,少就是价值。在我们 2006 年写的《返璞归真》中,我们谈到了“少即是多”软件的概念。当我们 2004 年刚开始做 Basecamp 时,人们总是问我们,你们不怕微软吗?他们有更多的资源。他们有更多的程序员。如果他们喜欢你们这个小众市场,他们就会出现,然后投入一千名程序员来解决这个问题。我的回答,也许是因为我当时 24 岁,首先,我根本不在乎。但真正的答案是他们不会生产同样的东西。你无法用一千人的团队生产出像 Basecamp 这样的软件。你会建造一千人建造的软件。这完全不一样。在终端用户系统以及开源系统和基础系统中,许多主要的突破都是由个人或非常小的团队完成的。即使是苹果的那些经典历史也总是说,嗯,它是一个大组织,但然后你有了那个实际从事突破性工作的团队。是四个人。是八个人。从来不是两百人。——而大团队似乎会拖慢速度。——是的。——这太迷人了,部分原因是经理的问题。——因为人类不会扩展。人与人之间的沟通肯定不会扩展。每次添加一个新节点时,你基本上都会得到网络成本效应,它会呈指数级增长。这也许是我如此喜欢 Basecamp 没有经理的原因,因为我们的默认团队规模是两个人。一个程序员,一个设计师,一个功能。当你在这种规模上运作时,你不需要复杂性。你不需要高级方法论。你不需要多层管理,因为你可以直接去做。小团队的魔力在于它们就是去做。它们不必争论,因为我们不必设定方向,不必担心路线图。我们可以坐下来做点东西,然后看看它是否好。当你能够直接做东西时,你就不必计划。如果你能摆脱计划,你就可以遵循代码、产品、你正在处理的事物中出现的真理。当你比提前 18 个月规划所有步骤时,你离得更近一步,你对下一步该做什么了解得更多。我们如何从这里到达很远的地方?你知道吗?这很难提前想象,因为人类在这方面非常糟糕。也许有一天 AI 会比我们好得多,但人类可以一步一步地前进。这并不难,这让你能够摆脱所有这些复杂性。所以过程变得简单多了。你需要的人少得多,它会累积。你需要更少的流程。你需要浪费更少的时间在会议上。你可以花这些漫长而辉煌的日子和几周不受打扰的时间来解决你关心并且有价值的真正问题,你会发现市场实际上想要的就是这些。没有人因为背后有一个大公司而购买东西。大多数时候。他们购买是因为它很好。而要得到好东西,你不是坐下来开会讨论。你尝试东西。你建造东西。——一个人,老实说,一个人在 100 小时的深度工作、专注工作中,甚至更少的时间里,能做到的事情真是不可思议。——我告诉你,我精确地追踪了我在 Basecamp 第一个版本上花费的时间。我这样做是因为当时我以合同工的身份为 Jason 工作,他付给我钱,我记得是每小时 15 美元。这是我们刚开始时的报酬。我想他已经把我的工资提高到了光荣的 25 美元。但我一直在记账,我知道 Basecamp 第一个版本的发票是 400 小时。这就是一个单独的个体在 2004 年创造一个整个系统所花费的时间,这个系统后来创造了数亿美元的收入,并且至今仍然表现出色。一个人,只有我,设置了一切。这个故事的一部分是 Ruby。这个故事的一部分是 Rails。但很大一部分也是我加上 Jason,加上 Ryan,加上 Matt。那是当时整个公司。我们可以用如此小的团队创造出纯粹的、可持续的价值,因为我们是一个小团队。不是为了炫耀。小不是一个垫脚石。这是人们脑子里想的另一件事。这是“返璞归真”中的一个大话题。它给了企业家拥抱小团队的许可。不是作为一个中转站,不是像“我想成为一千人”。不,我实际上喜欢成为一个小团队。小团队更有趣。如果你问几乎任何人,我敢肯定 Tobi 也会这么说,即使在他这个规模上,建造东西的纯粹乐趣在于与一个小团队一起建造的乐趣。现在,当你有一个大公司时,你可以在不同的规模上产生影响。我完全认识到这一点,我也看到了它的吸引力。但实际上建造东西,总是小团队,总是。——你如何保护小团队。Basecamp 成功地保持了小规模。一直是龙,你不得不与之斗争。就像你赚了很多钱。有增长的诱惑。那么你如何不增长呢?——不要接受风险投资。——好的,这是第一步。——这是第一点。——首先,——第二点是每个人都接受风险投资。所以你已经走了。——我的意思是,这是长久以来的答案。因为问题不仅仅是风险投资,而是别人的钱。一旦你拿了别人的钱,完全可以理解,他们想要回报,而且他们宁愿获得最大的回报。因为他们不在代码里。他们没有从建造东西中获得日常的满足感。从编辑器里雕刻出优美的代码诗,对吧?他们没有那种满足感。他们也许从看到一些美好的事物被带到世界上获得满足感,这是公平的。但他们肯定也从更高的回报中获得满足感。而且在风险投资中,在风险投资中,确实有一种说法,你接受这笔钱的全部目的是达到十亿美元或更多。现在,通往那里的道路通常是通过运行既定的剧本,而在软件方面,企业销售剧本就是那个剧本。如果你做 B2B 软件 SaaS,你会尝试找到产品市场契合度。一旦你有了它,你就会抛弃你的小型和中型客户,去追逐那些拥有庞大销售团队的大客户,到那时你就有了一千人,生活就很糟糕了。——话虽如此,我的意思是人们只是对此感到好奇。我有机会认识杰夫·贝佐斯。他投资了 Basecamp,不是控股?——他购买了二级市场。所以有趣的是,投资有两个双重含义。通常当人们想到投资时,他们认为你是在投入增长资本,因为你希望公司雇用更多人来做更多的研发,以便他们能够发展壮大。贝佐斯实际上没有这样做。他直接从我和 Jason 那里购买了所有权股份,购买所得的全部收益都进入了我和 Jason 的银行账户,个人银行账户。一分钱也没有进入公司账户,因为我们不需要钱来增长。我们所需要的,或者我们确实享受的,在某种程度上可能是信心的投票,但更重要的是安全感,可以拿走一点,这样我们才敢拒绝风险投资的大笔资金。这基本上是一种疫苗,可以防止我们想要从那些想要将公司推向我们不想去的巨大规模的人那里获得更大的支票。所以杰夫给了我和 Jason 足够的钱,让我们能够拒绝所有这些人,而且如果六个月后公司破产了,我们也不会后悔,说我们曾经拥有过价值数百万的东西,现在一无所有,我又要担心房租和杂货了。——这是一种信心投票。我想知道,我很想听听杰夫的说法,为什么,因为他不需要钱。所以这真的很,我想这只是相信人,并希望创造出酷的东西,并从中赚钱,但不是那种。——百分之百,杰夫的动机不是回报,因为他确实有一个团队。他有一个私人办公室负责这些投资,他们对我们给他的投资提案进行了计算,这个提案太荒谬了,以至于我和 Jason 在写我们的指标时都笑得前仰后合。我说,没有人会付这个价。没有人会给我们这么高的收入倍数。没关系。我的意思是,我们接受这次通话主要是出于对杰夫·贝佐斯甚至想看看我们的敬畏之情,然后说,你知道吗?我们不想要风险投资。我们不需要别人的钱,但让我们给他一个他妈的数字,任何理智的人都不会同意。然后我的意思是,我们可以各奔东西。他的投资团队说,“杰夫,不行。这在经济上毫无意义。他们要求太多钱,而收入太少。”杰夫只是说,“我不在乎。我想投资这个人。”因为对他来说,当时这只是零钱,对吧?我和 Jason 各自得到了几百万美元。我的意思是,那天日元和美元之间的货币波动可能比我们的投资对他净资产的影响还要大 10 倍。杰夫似乎对与有趣的人、有趣的公司在一起,帮助别人走得更远真正感兴趣。我实际上带着一种遗憾回顾这段关系,因为我把那种信心投票视为理所当然,以至于我多年来对亚马逊的一些行为更加批评,而我现在觉得这可能是合理的。所以这只是那个处理过程的一部分。但在经济意义上,他给了我们信心。他给了我们经济上的信心,然后他也给了我们一位 CEO 的信心,他当时可能经营着美国最重要的互联网业务。他参加我们的电话会议,我们每年都会和他开会,基本上就是说,“是的,你们做得很好。你们应该继续做得很好。我读了你的书,很棒。你推出了这个东西,很棒。你应该做得更多。我实际上不知道如何经营你的生意。你们知道。”——所以书出来了。我只是,从粉丝的角度来看,我对杰夫·贝佐斯是如何能够看到的感到好奇,因为对我来说,你和杰森,尤其是在科技领域的人。而杰夫能够看到这一点,对吧?看到这一点有多难?——他确实很早就看到了。而且我认为这是杰夫比几乎任何人都做得更好的事情。他能比其他人更早地发现那个机会,或者他愿意比其他人更早、更坚定地押注它。而且他总是对的。我的意思是,我们不是他唯一的投资。当然,亚马逊有着极其长远的愿景。比我一直以来所拥有的勇气还要长远。我的意思是,我认为自己是一个长远思考者。与杰夫所玩的游戏相比,我只是在玩一场儿童游戏。我的意思是,当我看着亚马逊在互联网泡沫破裂时的经济状况时,它们看起来很荒谬。我的意思是,他们亏损太多了。他们被市场憎恨,他们……没有人相信它会变成现在这样,但杰夫相信。以至于那种程度的信念我真的很渴望。我认为这是我从这段关系中学到的主要东西之一,那就是你可以相信自己到那个程度,对抗那些几率。这太荒谬了。他在我们这个层面上做了这么多次,如果我怀疑自己,那真是可耻。——是的,我认为亚马逊就是这样的公司之一。我的意思是,它多年来一直受到很多批评。这是关于人类的一件事,我们不太欣赏,我们理所当然地认为一件事情带来的好处很快,然后我们就开始批评它。就像飞机上的 Wi-Fi。——[DHH] 就是这样。——但我认为亚马逊,可以做一个论证,即亚马逊是过去一百年来最伟大的公司之一。——当然,我认为这是一个很容易的论证。我也认为,成为过去一百年来最伟大的公司之一所付出的代价是很多批评者,很多反对,很多批评,这实际上是宇宙秩序的恢复。我所有时间在互联网上最喜欢的老师之一是凯西·西埃拉。我不知道你是否知道她的作品,但她实际上在残酷的互联网将她赶走之前几年就写了一篇博客,叫做“创造充满激情的用户”,她在我脑海中刻下了宇宙平衡的概念。如果你创造了有价值的东西,很多人都喜欢它,你必须创造一个同等且相反的仇恨力量。你不能有喜欢你作品的人,却没有恨你作品的人。唯一的出路是平庸。如果你如此无聊和无趣,以至于没有人关心你是否存在,是的,你不会有仇恨者,但你也不会有真正喜欢你作品的人的影响力。我认为亚马逊就是这样,只是规模巨大,对吧?他们为技术和商业带来了如此多的价值和改变,以至于他们必然会拥有一个黑洞大小的仇恨者,否则宇宙就会倾斜。——让我问你关于小团队的事。你提到了杰森很多次,杰森·弗里德,你们是多年的合作伙伴。也许公平地说,他更偏向于设计商业方面,而你是技术、工程方面的专家。这么多年来,你们是如何创造出这么多令人惊叹的产品而不互相残杀的?这是一个关于伙伴关系的伟大故事。关于协作,你能说些什么?关于杰森,你爱他什么,你从他那里学到了什么?为什么这会奏效?——首先,我要说我们多年来曾试图互相残杀几次,但我想在过去十年里少了很多。早期,我们的产品讨论非常激烈,以至于当我们在办公室里讨论时,周围还有其他员工,其中一些人确实担心公司会分崩离析。因为房间里传出的声音会很高,听起来很刺耳,以至于他们确实担心整个事情会分崩离析。但你知道有趣的是,当时感觉从来不是那样。它总是感觉像是在激烈地寻找更好的东西。而且我们能够承受那种程度的逆境,因为那是基于想法的优点。那是关于想法的,而不是关于人,而且从来没有真正变成人身攻击。不是说,杰森,你是个混蛋。而是说,杰森,你是个白痴。你是个白痴,因为你看待这个问题的方式是错误的。让我告诉你正确的方法。——作为一点小小的离题,让我这么说。有些人说,哦,可能会回到这一点,你有时会在互联网上发脾气等等。我从不那样认为,因为它们是同一种类型。也许我没有看到足够多的脾气痕迹,但通常是关于想法,只是一个兴奋、充满激情的普通人。——这正是我喜欢这样想的。它并不总是那样呈现,我可以看到为什么旁观者,尤其是旁观者,有时会看到一些看起来像是我在针对人而不是针对球。而且我认为我一直在努力做得更好。但在我与杰森的关系中,它之所以如此成功,是因为我们在各自独特的领域都有能力,并且我们完全信任对方。杰森信任我做出正确的技术决策。我信任他做出正确的设计和产品方向决策,然后我们可以重叠并分享业务、营销、写作和其他方面。所以这是一件事,如果你和一个做和你完全一样事情的人创业,并且你们一直在争论谁是更有能力的人,我认为那会更困难,也更不稳定。所以如果你创业,你们都是程序员,你们都从事同一种编程,啊,祝你好运。我认为这很难。我尝试选择一条更容易的路,与一位设计师合作,我知道至少一半的时间我可以委托给他的经验和能力,然后说,你知道吗?我可能有一个观点,我一直对设计有观点。但我不必赢得争论,因为我信任你。现在偶尔我们会在业务或方向上发生重叠,我们都觉得我们在游戏中拥有强大的股份,并且我们都在该领域拥有能力的主张。但然后,无论出于何种原因,我们都有一个长远的愿景,我会说,“你知道吗?我认为我们在这里错了。”但正如我从杰夫·贝佐斯那里学到的,顺便说一句,我将“不同意但承诺”。这是他给我们的一个非常重要的早期教训,也许甚至对确保我和杰森一起工作了四分之一个世纪至关重要。“不同意但承诺”是杰夫·贝佐斯的老派伟大之处之一。——我只是惊讶于小野洋子没有出现。你知道我的意思吗?世界上有这么多小野洋子。——这可能发生过。如果不是因为我们不总是坐在彼此的腿上。我们的大部分职业生涯,我们甚至没有住在同一个城市。我的意思是,当我 2005 年搬到美国后,我在芝加哥住了几年。但后来我搬到了马里布,然后我住在西班牙,然后我住在哥本哈根。我和杰森从我们关系的基础开始,就学会了以一种非常有效的方式合作,以至于我们不必说太多话。在任何一周,如果杰森和我花了超过两个小时的直接交流,我会感到惊讶。——是的,有时是基本的人类摩擦,你只是积累了。——是的,我认为你与另一个人摩擦,那个人最好是你的配偶,如果太久的话。——是的,但即使是那样。——即使是那样。——新冠疫情真的考验了这段关系。观察它很有趣。——确实如此,而且我认为拥有一些分离,这有点违反直觉,因为我认为很多人认为你合作越多越好。想法越多越好。而我和杰森,无论出于何种原因,都在职业生涯早期就得出了结论。绝对不是,那是完全的胡说八道。这就是为什么我们是远程工作的巨大倡导者。这就是为什么我喜欢在家里的办公室工作,我可以关上门,六个小时不见一个人。我不想一直和你交流想法。我想偶尔和你交流想法,然后我就可以去实施这些想法。交流太多了,而得分、扣篮太少了。我认为这是高管统治的一个巨大陷阱。一旦创始人将自己提升到高管的地位,他们所做的就是告诉别人该做什么,这就是他们 24/7 的生活领域。他们只生活在想法领域。哦,我可以告诉更多人更多该做什么,然后我们就可以看到它发生。如果你实际上必须参与实施,你会放慢你的马。你会想,你知道吗?我上周有一个好主意。我将把我的好主意留到下个月。——而且经理和高层人士有一种诱惑去做某事,而某事通常意味着开会,对吧?所以这就是为什么你说……——他们的工作是告诉别人该做什么。——是的,会议,所以这是你反对的一件大事是会议……——会议是毒药。而且我认为这真的与我和杰森有关。如果我必须计算我们 24 年合作中举行的会议总数,我们面对面地讨论一个话题,我可能需要三个月的时间,就像在一个粉丝公司一样。我们没有做那么多。我们没有把它磨损。特朗普曾经用过一个有趣的隐喻,一个人一生中只有有限的步数,对吧?这是长寿的论点。你可以做很多活动,然后你就用完了。这个想法中有一个核心可以应用于人际关系。我们可以进行一定程度的交流。我们可以共度一定的时间,你可以把它磨损掉。我和杰森都很努力地不磨损对方。我认为这是关系长久的关键,再加上那种信任。然后再加上我们真的喜欢工作本身。我们不仅仅喜欢头脑风暴。说我们只是想出好主意。不,我们喜欢实现这些想法,并且我们喜欢直接参与其中。我喜欢编程,他喜欢设计。我们可以离开去做我们自己的事情很长一段时间。以防万一,你们聚在一起说,“嘿,让我们推出一款很棒的产品。”——这听起来可能像我在让你做心理治疗,但我有时会渴望开会,因为我感到孤独。因为远程工作就是一个人坐着。我不知道,长时间可能会非常孤独。——我给你一个建议,找个妻子。——是的,哦,该死。——生几个孩子。——[Lex] 好的。——就像家庭真的是孤独的解药。我是说真的。我当然在我职业生涯早期有过你描述的那种感觉,当时我在远程工作,我只是一个,就像我住在一个公寓里。一个典型的刻板印象,我刚搬到芝加哥的时候,我地板上只有一张床垫,然后我买了一个大电视,我甚至没有把它挂起来。然后我有一堆 DVD。我基本上,我工作了很多时间,然后我就回家做那些事。这并不好。真的不好。我确实认为人类需要人类。如果你不能在工作中得到他们,而且我实际上有点不想要他们在工作中,至少我不想他们每周工作 40 小时。那不是我的偏好。你需要别的东西。你需要生活中有其他关系,而且如果你能找到一个你真正想花很多时间在一起的人,那么就没有比这更深的关系了。这是关键。而且我认为我和杰森都拥有家庭很长时间了,这很重要,它会让你脚踏实地,这样创业公司的冲刺就可以被替换为持久公司的马拉松。你变得稳定。我们简要地谈过,有时我会变得激动。我的意思是,很多时候,也许大多数时候我都会因为话题而激动,但我现在不像 24 岁时那样激动了。我仍然对想法和寻找正确的事物充满热情,但与家人开会,我的妻子,围绕它建立生活,已经以一种完全陈词滥调的方式使一切都变得温和。但我认为这实际上是关键。我认为如果我们能让更年轻的人不要等到他们三四十岁才结婚,我们会过得更好,我们也会有更稳定的商业关系,因为人们会在其他地方获得那种滋养的人际关系。现在,我说这一切,我也承认,多年来有很多伟大的企业建立起来,但它们不是远程建立的,而是由一群流氓在办公室里花费大量时间建立的。我的意思是,约翰·卡马克和蒂姆·斯威尼在 90 年代谈论过他们的职业生涯,基本上就是工作、睡觉、和办公室里的伙计们一起闲逛,对吧?完全公平。那从来没有吸引过我。我和杰森都同意,每周工作 40 小时就足够了,如果我们想走得更远,不仅仅是 VC 建立退出所需的五到七年。而是可能 10 年、20 年或更长时间,我们需要成为完整的人。因为只有这种完整的人性才能走得更远,其中包括建立工作之外的友谊,拥有爱好,找到伴侣并组建家庭。而所有这些更高的存在,这些凳子腿,工作不是生活的唯一事情,与我们存在了 25 年的事实完全相关。尤其是在美国,存在着太多的虚假权衡。哦,你想建立一个成功的企业?好吧,你可以选择金钱、享受或家庭或健康,选一个。什么?我们为什么要放弃所有这些?现在,我再说一遍,我不是说,生活中总有冲刺的时刻。但我的意思是,如果这种冲刺变成十年,你就会付出代价。而且你可能会付出代价,我一次又一次地看到,这似乎是一笔非常糟糕的交易,即使它奏效了。顺便说一句,大多数时候它都不会奏效。大多数时候初创公司都会破产。大多数时候人们会花费五、七年时间做一些事情,结果却不如人意,然后他们就会后悔,就像,我的 20 岁发生了什么?早期,我和杰森基本上达成了协议,一起工作不会导致这种后悔。我们将允许自己和彼此在工作之外建立一个完整的生活。而事实证明,这几乎就像被禁止的知识,尤其是在美国的科技圈子里。这是我们 20 年来一直试图倡导的事情,我们仍然受到批评。就在两天前,我又在 Twitter 上和某人争论,说,“哦,好吧,也许它奏效了,但你没有变成 Atlassian。所以你是个失败者。Basecamp 不是 Jira,那你为什么还要费劲呢?”这是一种非常迷人的赢家通吃的心态,除非你统治了所有人,否则你就输了。生活中很多事情都对多赢者更加开放,我们可以拥有一个多年来赚了数亿美元的企业,并且我们保留了大部分,可以做任何我们想做的事情,这就足够了。这很好,这很棒。这实际上是值得追求的。当然,它应该是一个供人考虑的选择路径,而不是主导一切的 VC 独角兽或失败的心态。——是的,我很想问你关于这次交流,这样你就可以向我解释整个故事,但只是为了稍微联系一下,我认为有一种观念认为,科技创始人的成功就像工作几年,然后退出,比如以数亿美元的价格出售你的公司。那就是成功。但实际上,当你看看像你这样的人,像真正聪明、有创造力的人,他们实际上是谁,以及幸福是什么时,它实际上是终生一点点地工作。就像因为你实际上热爱编程,热爱建造,热爱设计师,而你不想退出。这是你一直以来都很有说服力地谈论过的。所以,你实际上想创造一种生活,在那里你一直在建造,并且以一种不完全占据你生活的方式来建造。——莫吉托岛是一个海市蜃楼。它一直都是。雄心勃勃的人没有退休。只是坐在海滩上喝莫吉托,为了什么?两周后你就会发疯,想回到行动中去?这正是大多数有能力实现那种退出的情况。我从未见过,我应该说从未。我几乎从未见过有人能够做到这一点。然而,许多人认为他们之所以这样做,就是为了这个。这就是他们牺牲一切的原因。一旦我到达终点线,我就金光闪闪了。我赢了,我可以退休,我可以坐下来,我可以放松。你发现那种放松实际上是地狱。对于有创造力的人来说,浪费他们上帝赋予的创造力是地狱。我真的很幸运,很早就读了 Mihaly Csikszentmihalyi 的书《心流》。

好的,这是您提供的文本的中文翻译:

很好,发音,准确无误。——你知道吗?我这几天不得不和人工智能练习发音,因为我知道我要引用他,而且我好几次都把他的名字念错了。所以人工智能教我怎么发音,至少是比较正确的发音。但他在职业生涯中的主要工作本质上是“心流”的概念,这源于对理解幸福的探索。为什么有些人是快乐的?他们什么时候是快乐的?他学到的东西非常有启发性。他发现,当人们坐在莫吉托岛上时,他们并不快乐。当他们摆脱了所有的义务和责任时,他们并不快乐。不,他们在那些努力和拓展自己能力边界的时刻是快乐的,这仅仅超出了他们目前的能力范围。在那些心流的时刻,他们可以忘记时间和空间。他们可以坐在键盘前,为一个难题编程,以为过去了20分钟,结果却过去了三个小时。他们回顾那些时刻时,充满了巨大的喜悦。这就是巅峰的幸福。如果你剥夺了追求这类问题的机会,如果你从你的盘子里消除了所有的问题,你就会变得沮丧。你不会过得开心的。现在,有些人可以做到这一点,但他们不是那种建立这些公司的人。所以你必须接受你是什么样的人。如果你走在这条路上,别自欺欺人。别自欺欺人地认为,我将牺牲一切,我的健康,我的家人,我的爱好,我的朋友,但在10年后我将弥补这一切,因为在10年后我可以做到。事情从来不会那样发展。它在两方面都行不通。如果你成功了,卖掉了你的公司,事情也不会顺利,因为两周的退休生活后你会感到无聊透顶。如果公司失败了,你后悔过去十年一无所获,事情也不会顺利。如果一切都顺利,你继续留在生意里,事情也不会顺利,因为生意从来不会变得容易。所以,如果你只顾着工作,别无他物,你将在所有指标上都失败。而我不想那样。我想要心流的快乐。我理解那个见解是真实的,但我希望以一种能够让我坚持40年或50年的方式来做。——我听你说过另一个有趣的注意事项,那就是如果你退出了,卖掉了你的公司,并且想继续留下来,你想做另一家公司,那通常不会像第一次那样令人满足。因为你的第一个孩子,就像。——你无法再次做到,或者大多数人无法再次做到。A,因为你的第二个想法不会像第一个那么好。像我们以Basecamp为例,能够捕捉到两次闪电入瓶是非常罕见的。我从经验中知道这一点,因为我一直在尝试建立许多其他企业。其中一些取得了适度的成功,甚至是很好的成功,但没有一个像Basecamp那样。再次做到这一点真的很难。但创始人都是傲慢的混蛋,包括我自己。我们喜欢认为,你知道吗?我们之所以成功,很大程度上是因为我们太棒了。我们比其他人好太多了。在某些方面,这是真的,有时是这样。但你也可以在某个重要的时刻,当那个机会之门敞开时,你非常擅长某件事。现在门关上了,你仍然擅长这件事,但它不再重要了。没人关心。这是其中一部分。然后是第一次体验事情只发生一次的那部分。你无法再次做到。我不知道我是否有能力再次经历那些早期阶段。我说的“自欺欺人”是指最令人喜爱的那种意义上的。去做这件事是很棒的。我太了解了。这也是为什么每当我被问到这个问题时,如果你能告诉你年轻的自己一些真正有价值的东西,你会对年轻的自己说什么?我他妈的什么都不会说。我不会剥夺我年轻的自己因对世界运作方式的无知而获得的全部生活经历。建立关于世界如何运作的智慧是一种乐趣。你必须一点一点地积累,如果你只是把所有的结果都交给你。这就像,哦,我们要看你的电影吗?这是结局。我现在他妈的不想看电影了。你剧透了。我不想你剧透我的商业经验。我不想剧透我任何的无知。一半的时间,当你开始新的事物时,最大的祝福是A,你不知道它会有多难;B,你不知道你不知道什么。就像冒险的报酬,责任的报酬。这是乔丹·彼得森真正教会我表达的一个观点,即责任对我来说是关键。“人生的意义”维克多·弗兰克尔也谈到了这一点,如果我们有理由,我们可以忍受任何苦难。他谈论的是真正改变人生的集中营经历。但你也可以在更小的范围内,以更低的批判性来应用它,即使只是你日常生活中的艰辛,建立原始企业的所有艰辛,都是你为自己承担的责任的吸引力。你承担它的原因部分是因为你不知道它到底意味着什么。如果你事先知道,如果我事先知道它有多难?一路上会有多少挫折?如果你在开始之前就以叙事的方式告诉我,我会说,嗯,也许我应该去找份工作。——你刚才说了太多明智的话。随便挑一个。有趣的是,有时建议的给予者,智慧的给予者,都经历过所有的狗屁倒灶。所以,在某种程度上,你想要犯错误。所以我认为我仍然会给出这样的建议:你想要生命中有那么一段时期,你工作得非常努力,包括一件失败的事情。我认为除了亲身经历,你无法以任何其他方式学到为什么这是一个坏主意。在某种程度上,是的,但当然你不能。——我认为你应该努力。你必须努力十年吗?我不确定。——是的,十年这个说法,二十多岁是一个特殊的时期。——这是很大的代价。你无法找回你的二十多岁。是的,你无法找回你的三十多岁。你无法找回你的四十多岁。如果我没有在二十多岁时做过其他事情,如果没有享受过我拥有的乐趣,如果没有拥有我拥有的朋友,如果没有建立我拥有的爱好,如果没有足够早地开始开赛车并真正擅长它,如果我只是全力投入生意,我最终会得到同样的结果。这是德里克·西弗斯真正教会我的,他有一篇很棒的文章,关于他骑自行车时,可以全力以赴,我记得他在19分钟内完成了骑行。或者他可以享受骑行,慢5%,在21分钟内完成骑行,并意识到只有两分钟的差别。要么我一直全力以赴,别无他物,我筋疲力尽。要么我走同样的距离,可能晚到两分钟,但我欣赏了风景,听了鸟鸣,闻了花香。这段旅程也很有价值。现在我这么说,同时我也承认并赞扬,如果你想成为世界上某件事的佼佼者,不,你必须牺牲一切。你必须只专注于那件事。没有一个世界顶尖的人不是完全沉迷于此的。我不需要成为任何事情的佼佼者。这是我早期拥有的罕见的谦逊祝福,就像,你知道吗?我不聪明。我没那么好。我没那么有天赋。我可以结合我所知道的不同方面和元素来做有趣的事情,但我不会成为任何事情的佼佼者。这让我摆脱了那种单一的执念,比如,我将成为世界上最好的程序员。嗯,我知道我不是。在我理解条件语句如何工作之前,我已经失败了两次。我没聪明到能成为任何事情的佼佼者。我没那么有奉献精神。这有点像一种祝福。我认为作为一个社会,我们必须同时庆祝巅峰的卓越,我们一直在这样做,并庆祝成为那样所需要的巅峰的使命强度。然后也要说,你知道吗?我们不必都成为迈克尔·乔丹。世界上只有一个那样的人。——嗯,我们应该说,有些追求需要单一的执念。篮球就是其中之一。顺便说一句,赛车也是。如果你想成为世界顶尖的F1车手……——如果你想成为塞纳,你必须是个疯子。——但我认为,大多数学科,比如编程,如果你想成为,所谓的,“最好的”,无论那意味着什么,我认为那是生命结束时才能评判的。而且通常如果你看那条路,它会是非线性的。你不会像奥林匹克运动员那样专注。二十多岁时会有一些曲折,或者会有几次绕道,而真正的伟大之处在于。会有绕道。有时它们不会是史蒂夫·乔布斯那种情况。它们会是你工作过的不同的公司,不同的职业,或者你分配给生活的不同努力。但它会是非线性的。它不会是单一的焦点。——我有时思考这个问题的方式是,我想要一个好的学习交易。我可以很容易地成为我定义为擅长某件事的顶尖5%。也许是顶尖5%比顶尖0.1%容易20倍,100倍。进入顶尖0.1%几乎是不可能的。但如果我满足于只进入顶尖5%,我可以同时进入五个领域的顶尖5%。我可以写得很好。我可以开赛车开得不错。我可以编程得很好。我可以经营一家公司。我可以有一个家庭。我可以同时做很多事情。这给了我那种多样性,几乎是理想化的卡尔·马克思的观点,“哦,我早上钓鱼,晚上敲锤子,周末画画,对吧?”对我来说,至少他的异化诊断是正确的。那种隧道视野。只有一件事,我只专注于它,这让我感到一种我无法忍受的疏离感。当我深入编程时,有时我会深入几周,甚至在某些情况下几个月,我必须浮出水面,去做别的事情。比如,好了,今年是编程时间。我已经尽力了,我要去骑车,或者在网上惹恼别人,或者开赛车做点别的事情。然后我明年就可以再次全心投入编程。——说到惹恼别人,你得给我解释一下这场闹剧。好吧,那么这个人说了什么,想象一下输给Jira,却吹嘘自己每年有几百万美元。这与几乎成为一个梗的“离开云端”的决定有关。DHH离开了云端。我认为这简直是个梗,但也是一个引人入胜的决定。你能详细说说DHH离开云端的整个过程吗?——是的。——离开AWS省钱。我想这个人现在的论点是。——是我们浪费了时间优化一个本可以大百倍的企业,如果我们只是追求宏伟目标的话。——追求宏伟目标包括?——风险投资。——还有……——还有其他不计成本的事情。——而且因为AGI就在眼前,你应该投资AI,对吧?这是……——有点像在浑水摸鱼?我认为这是一个有点模糊的论点,但如果我们只看它最理想化的方面,而我实际上认为这是一个合理的观点,那就是你可能会目光短浅地专注于数钱,而你应该专注于获得。我通过离开云端优化了我们的基础设施支出,这花了一些时间,我本可以把这些时间花在制造更多吸引客户的功能上,或者花更多时间在AI上,或者做其他事情。机会成本是真实的。我不是否认这一点。我反对的是,对于我们这样规模的公司来说,每年节省200万美元的基础设施账单,其中大约一半到三分之二直接计入底线,这意味着它会返还给Jason或我作为所有者以及我们的员工的利润分享计划,是完全值得做的。这种成本无关紧要的想法是一种非常硅谷的思维方式,再次强调,我理解在某种规模下是这样,但我实际上也认为它在美学上令人不悦。我发现一个低效的企业,就像我发现一个充满杂乱代码的低效程序一样,就像我脑子里的一个刺。我讨厌看费用报告,却看到不成比例的浪费。几年前,当我审视37signals的支出时,我看到了不符合我嗅觉测试的账单。我记得在云端之前,我们花在基础设施上的钱有多少,我看到了与我们所需不成比例的数字。电脑随着时间的推移变得越来越快,东西不应该越来越便宜吗?为什么我们花越来越多的钱来服务更多的客户?是的,但随着电脑速度越来越快,摩尔定律应该会降低成本,而事实恰恰相反。为什么会发生这种情况?这就开始了一段探索云端为何不像人们认为的那么划算的旅程。——是的,你能具体说说吗?对于不知道这个故事的人,然后推广到它对云在科技业务中的作用意味着什么。所以具体来说,你当时在使用AWS S3……——我们当时使用AWS的一切。HEY.com作为一个完全的云应用推出。它完全在AWS上运行计算、数据库,以及所有的一切。我们按照他们最推荐的方式使用所有系统。我们对Basecamp的总云账单,我们在AWS上的总支出,我认为在高峰期是320万或340万美元。这笔钱很多。340万美元,我的意思是,我们有大量的用户和客户,但仍然,这仍然让我觉得不合理。之所以如此不合理,是因为我耳边一直回响着云的宣传。嘿,这会更快。这会更容易。这会更便宜。你为什么要自己发电呢?对吧?你有没有自己的发电厂?你为什么要这样做?把电脑交给超大规模厂商。他们做得更好。我实际上认为这是一个引人注目的宣传。我多年来一直相信这一点,并认为,你知道吗?我再也不想拥有服务器了。我们将把我们的能力外包,亚马逊将能够比我们自己购买更便宜地提供服务,因为他们将拥有规模经济。我记得杰夫的话。我的竞争对手的利润是我的机会。这是他过去用来驱动amazon.com的一句话。如果他能在别人试图赚取4%的时候只赚取2%,他最终将获得所有金钱。在销量上,他仍然会赢。所以我认为这就是AWS的运营理念。事实证明并非如此。顺便说一句,AWS的利润率接近40%。所以仅仅从这一点来看,就有线索表明竞争对手无法做到我们喜欢的资本主义的竞争性,即降低成本等等。所以,在我看来,云的宣传从根本上是错误的。首先,它并没有变得更容易。我不知道你最近是否使用过AWS,它非常复杂。如果你觉得Linux很难,你从来没有尝试过设置IAM规则或访问参数或AWS的任何东西。——AWS一直很难。它一直很复杂。——嗯,我认为它变得更加困难了。但是的,现在其中一些是困难的,因为它功能强大,而且你有大量的容量可用。而且有一些原因我认为它们不够好,不足以证明整个过程变得如此复杂。但可以肯定的是,它不再更容易了。使用AWS并不比运行自己的机器更容易,当我们退出云端并且没有雇佣一个额外的人时,我们就证明了这一点。即使我们运营所有自己的硬件,团队也保持不变。所以你有这个三方面的宣传,对吧?它会更容易,它会更便宜。肯定不便宜,我们刚刚通过将基础设施支出减半到三分之二来证明了这一点。而且它会更快。最后一点是真的,但太多人高估了这种速度的价值。如果你需要在15分钟内让一千台电脑上线,没有什么比云更好了。你该如何采购?如果我们只需要另外20台服务器,就需要一两周的时间才能将设备装箱、运送到数据中心、拆箱并上架,等等,对吧?但我们多久需要这样做一次?而且,如果购买这些服务器便宜得多,我们就能以相同的价格获得更多的计算能力,我们多久需要这样做一次?我们能不能就买更多的服务器,甚至不关心我们没有对计算效用进行超优化?我们不必使用自动扩展等功能来解决问题,因为我们需要降低成本?是的,我们可以。所以我们经历了这个过程,在2023年初,我终于受够了我们的账单。我想摆脱它们。我想花更少的钱。我想自己保留更多的钱。在短短六个多月的时间里,我们将七个主要应用程序从云端迁移出来,包括计算、缓存、数据库,到我们自己的服务器上。购买了一批辉煌、美丽的新设备,来自服务器之王迈克尔·戴尔,他真的,顺便说一句,也是我的另一个偶像,我看到他刚刚庆祝了他在商界的41周年。41年来,这个人一直在销售我们一直使用的很棒的服务器。但无论如何,这些设备会在几周内送达,我们把它们架设好,让一切运转起来。我们就这样出来了。至少在计算方面。然后我们与S3签订了一个多年的长期承诺,因为在云端获得合理价格的唯一方法是,顺便说一句,不是按天购买,不是按数据库基础租赁,而是与计算签订多年合同,通常是一年。在我们的案例中是这样,存储是四年。我们签订了为期四年的合同,将我们客户的PB级文件存储在云端,以获得半像样的、可负担的价格。所以,所有这些项目都汇集在一起,意味着我们现在每年节省数百万美元,预计五年内节省约1000万美元。这总是很难。如何精确地进行会计核算,以及TOC等等。但这是数百万美元。但不仅仅是这样。这也是因为离开云端意味着回归到互联网的原始理念。互联网的设计不是为了让三台计算机运行一切。它是一个分布式网络,这样单个节点就可以消失,整个系统仍然可以继续运行。DARPA这样设计是为了让俄罗斯人能够摧毁华盛顿,他们仍然可以从纽约反击,整个通信基础设施不会消失,因为没有中心辐射。它是一个网络。我一直觉得这是一个极其美丽的愿景。你可以拥有这个辉煌的互联网,没有一个单一的节点控制一切。我们又回到了由这些超大规模厂商控制一切的单一节点理念。当AWS的主要和原始区域US-East-1离线时,这在过去发生过不止一次。似乎互联网的三分之一离线了。这本身就是对DARPA设计的侮辱。这只是削弱了AWS所建的奇迹。我认为云端已经推动了许多事情向前发展,尤其是在虚拟化、自动化设置方面。所有这些对系统管理来说都是巨大的进步,这使得我们现在能够在本地运行事物,其方式就像云端一样,但成本减半或更低,并且拥有硬件的自主性和满足感。我不知道你上次看实际的服务器并拆开它,看里面是什么时候。这些东西很漂亮。我的意思是,我发布了几张我们在数据中心的机架照片,人们总是为之疯狂,因为在这个云时代,我们已经从底层硬件的外观中抽离得太远了,以至于大多数人都不知道。他们不知道现代CPU有多强大。他们不知道一个1U机架能装多少RAM。计算的进步一直令人兴奋,尤其是在过去四到五年里,在TSMC的帮助下,Apple真的突破了界限。我的意思是,我们曾经在那里停滞不前,而英特尔却原地踏步。然后TSMC在Apple的推动下,真的向前迈进了一大步。现在服务器又变得令人兴奋了。就像你每年都能看到15%、20%的增长,而不是我们曾经陷入的个位数增长。所有这些都意味着拥有自己的硬件比以往任何时候都更可行。你需要更少的机器来运行越来越多的东西,而且更多的人应该这样做。因为我爱杰夫和亚马逊,但就像,他不需要再多赚40%的利润来经营我们的业务。这只是我一直关注的事情。既因为尊重DARPA原始设计的意识形态,也因为运行我们自己硬件的实用性,看到我们如何用最新的机器快速推进事物,然后节省金钱。所有这些都非常令人愉快,但对许多人来说却非常违反直觉,因为我认为,对于行业中的许多人来说,我们都决定不再购买电脑了,我们将其委托给AWS、Azure和Google Cloud,我们不再需要拥有这些东西了。所以我认为有些人会感到一阵眩晕,“哦,我以为我们同意了。我们已经完成了。”然后我们来了,说,“啊,你知道吗?也许你应该有一台电脑。”——运行自己的服务器有什么痛点吗?——哦,很多。操作任何类型的计算机都有痛点。你试过现在用个人电脑吗?我的孩子们或我的妻子遇到问题时,我一半的时间都会说,你试过关机再开机吗?计算机本质上对人类来说是痛苦的。然而,拥有自己的电脑会让这种痛苦变得值得。拥有自己的硬件带来了一种责任感,对我来说,至少让操作这些硬件的负担显得稍微更愉快一些。现在,当然,你必须学习一些东西,尤其是在我们的规模上。我的意思是,我们不是只买一台电脑然后插上网线。我们有成百上千台这样的设备,你必须用网络线缆来设置它们,这需要一些专业知识,但它不像建造核火箭那样。它不是不广泛分布的。字面意义上,整个互联网都是建立在人们知道如何将电脑连接到互联网的基础上的,对吧?哦,以太网线在这里,电源线在这里,让我们启动Linux。直到10到12年前云开始接管,每个人都在线上的方式都是这样的。所以专业知识是存在的,并且可以被重新发现。你也可以学会操作一台Linux电脑。——是的,当你有很多台的时候,有很多闪烁的LED灯,这真是太令人兴奋了。——哦,它们很漂亮,很平静,很神奇。电脑真的很有趣。这实际上是我在搬出云端后更深入地研究的东西。现在我下一个兴奋点是,如果你能搬出云端,你也能搬出数据中心吗?个人服务器已经变得非常快速和高效,而个人互联网连接可以媲美一二十年前我们连接数据中心的速度。所以有一个围绕着“家庭实验室”这个概念的社区,它基本上是在你自己的公寓里安装服务器硬件,连接到互联网,并直接暴露给互联网。这可以追溯到90年代那些辉煌的日子,当时那些为互联网构建的人会在他们自己的电脑的壁橱里托管实际的网站。我对此非常兴奋。我正在做很多实验。我为我的公寓订购了许多家用服务器。我惊叹于我现在可以获得一个五吉比特的连接,你知道吗?五吉比特,这足以让Basecamp达到数百万的月活跃用户,就像那时一样,我用2004年的技术,或者可能是百兆网线,运行了整个业务。就像我们现在可以获得的计算和连接能力是人们尚未重新调整的。技术有时会悄悄地进步。SSD就是这样。我喜欢它,顺便说一句。我们围绕着具有特定寻道时间特性的旋转磁盘设计了我们的大部分技术和存储方法以及数据库设计。然后我们转向了NVMe和SSD,人们花了很长时间才意识到系统必须从根本上改变。内存和磁盘之间的区别现在小了很多,因为你不再旋转这些金属盘,用一个小头去读取它们。你基本上是在处理另一种类型的内存。我认为在这一点上,新企业可以从你的卧室里启动,我们正处于类似的阶段。——所以,通过家庭实验室,你可以拥有一个庞大的用户群,并取得相当大的成就吗?——绝对。——这很令人兴奋。这就像老派。这真的很令人兴奋,对吧?——这就像字面意义上的车库创业,回到了老派。现在,其中一部分是,我们是否需要,如果你不需要太多,你可以获得相对便宜的云容量。——当然需要。我的意思是,自己做这件事的感觉,看到自己家里的LED灯。我的意思是,没有什么比这更好了。——有一种美学,我完全爱上了,并且想去尝试。现在,这不会和离开云端一样。我不确定我们离开云端是否就是离开数据中心。我们基本上只是购买了硬件,然后将其运送到一个专业管理的数据中心,我们甚至没有真正接触过。这是人们对离开云端的另一个误解。就是我们有一群人不断地开车去某个数据中心架设新设备,更换坏掉的RAM。在现代世界,事情根本不是这样发生的。我们有一家名为Summit的公司,以前叫Deft,他们为我们提供“白手套”服务。当我们需要什么的时候,他们会在数据中心工作,比如,“嘿,Deft,你能下去换掉六号箱子里坏掉的SSD吗?”他们会做的。我们看到的情况与使用云的人看到的类似。你看到IP地址上线。你看到驱动器上线。这并没有太大区别,但当我们以我们的规模运作时,成本要低得多。当然了。当然,如果你需要这些东西很多年,拥有它们比租用它们便宜。在任何其他领域,我们都不会混淆这两件事,即长期拥有比租用更便宜。——有一些灰色地带,比如我有机会与xAI团队进行了很多互动。我可能会再次去孟菲斯做一个与Grok发布相关的大型播客。那些人,为了实现集群的快速构建,并解决一些与GPU、训练相关的创新方面的问题,他们必须更加亲力亲为。这是一种不太“白手套”的方式。——哦,我喜欢这一点,对吧?他们正在处理一个前沿问题,他们不是通过以高价从主要竞争对手那里租用大量GPU来解决的。他们说,“不,去他妈的。我们要在自己的帐篷里放十万个GPU,”对吧?并在绝对创纪录的时间内建造它。所以,我认为,如果说有什么的话,这证明了拥有硬件可以在小规模、中等规模和计算的先驱级别上给你带来优势。——顺便说一句,说到团队,那些是xAI,特斯拉是大型公司,但那些人,我不知道是怎么回事,你说杰夫非常擅长找到好人,看到人的优点。就像埃隆也极其,我不知道那是什么。实际上,我从未见过,也许你能谈谈。他善于发现伟大的人。——我认为他不是在发现,而是在吸引。他吸引人才是因为他宏伟的目标和使命。他陈述这些目标的清晰度。他不必搜遍全球去寻找最优秀的人。最优秀的人会来找他,因为他是,这里说的是埃隆,最鼓舞人心的几个人之一。在宇宙的同一顺序中,仇恨者和爱慕者,对吧?就像他对如此大的规模产生了如此大的影响,以至于他当然会有数百万人认为他是世界上最糟糕的人,他也会有数百万人认为他是人类最伟大的礼物。取决于哪一天。我介于两者之间。但我更倾向于人类最伟大的礼物这一端,而不是另一端。我认为这确实能激励人们,以至于我们几乎忘记了那种程度的胆量是如此罕见,以至于当我们看到它时,我们完全不知道如何分析它。我们认为埃隆在寻找优秀人才,我确定他也擅长这一点。但我也认为,这个使命的灯塔,我们要他妈的去火星。我们要把交通运输变成使用电力。我们要用互联网覆盖地球,是如此宏伟,以至于有时我醒来时会想,我他妈的在这些待办事项清单上做什么?我的天啊,我应该去报名参加这样的事情吗?是的,这在某种意义上是鼓舞人心的。我只能想象回到10年、50年前,想着,“我们要去诺曼底吗?”你可能会死在路上,但哦,这听起来像是一次旅程和一次冒险。——有几个组成部分。有一个绝对是比生命更伟大的使命,并且真正相信它。你知道,每隔一句话都在谈论火星,真的相信它。这并不真正重要,比如别人怎么说,批评什么。有一个非常单一的、宏大的使命。但我也认为它与许多其他组成部分有关。比如,一旦灯塔吸引了人们,就能很好地招聘。我见过一些人,他们的简历上并没有成功的记录。我见过一些人,他们现在已经成为了传奇人物。他基本上把领导的球扔给他们。看到了他们身上的某些东西,然后说,“你去。”给了他们所有权,他们就跑起来了。这发生在各个层面。这是一个真正的精英制。而且,你知道,在这些会议中,在这些小组聚会中,你可以看到人类智力的蓬勃发展,能量是显而易见的。对我来说,仅仅是身处其中就令人兴奋。我见过很多公司都没有这种情况,因为当一家公司变得成功和庞大时,它会以某种方式扼杀这种能量。我想你在早期阶段的初创公司里会看到这种情况。但看到一家能够实现规模化的大公司做到这一点很酷,你知道吗?——我认为其中的一部分秘密是,埃隆确实知道事情。当你了解事物时,你就能评估工作产品的质量。当你能够评估工作产品的质量时,你就能很快地分辨出谁在胡说八道,谁真的能带你去火星。你可以解雇那些胡说八道的人,你可以押注那些能带我们去火星的人。这种直接评估个人能力的能力实际上有点罕见。它并没有广泛地分布在经理、招聘经理中。你不能轻易地把它委托给那些不擅长这项工作的人。埃隆显然对很多事情都有所了解,他能闻出谁真正懂行。在我们微小的规模上,我一直试图以同样的方式做,比如当我们招聘程序员时,现在AI是一个新的挑战,这将很有趣。但到目前为止,获得雇佣的主要关键点不是你的简历,不是你的学历,不是你的成绩,不是你的背景,而是你在两件事上的表现。A,你的求职信。因为如果他们写不好,我只能远程与人合作。所以如果你不能写一封像样的求职信,并且不 bother to put in the effort to write it specifically for us,你就出局了。二,你必须能够很好地编程,以至于我能看到你的代码,然后说,是的,我想和这个人一起工作。不仅我想和这个人一起工作,五年后我还要修复某个该死的bug,我还要在他/她的代码上工作。所以我们将给你一个编程测试,模拟我们实际工作的方式,然后看看你的表现。我一次又一次地感到惊讶,我确信这个候选人稳操胜券,他们听起来很合适,简历也很合适,然后你看到了提交的代码。我说,不行。我们绝对不会雇佣这个人。反之亦然。我当时想,我不知道这个人怎么样。嗯,我不知道。然后他们提交了他们的代码,我说,我的天啊,这个人明天能加入我的团队吗?最好是。评估工作产品的能力是招聘的超级能力。——我看到埃隆做得很好的一步是,他能够出现并说,这可以做得更简单。——[DHH] 是的。——但他知道他在说什么。然后工程师,因为埃隆知道得足够多,工程师的第一反应,你可以看出,这几乎就像你的父母告诉你某事时翻白眼。这不行,不,我研究这个已经一个月了,你……但当你更深入地交谈时,你会意识到不,它可以做得更简单。找到方法。所以,当两个工程师交谈时,其中一个可能没有完美的信息。但如果高级工程师有很好的直觉,那是经过实战磨练的,那么你就可以说简化。这实际上会导致简化。——我认为这是真正伟大的人的标志。他们不仅对完成工作所需的东西有深刻的见解,而且他们还有超越工程师、程序员的超凡视野。我认为如果我们观察这些稀有事物,史蒂夫·乔布斯的神话也是如此。即使他在很多方面可能不如埃隆那样技术精湛,但他也有同样的能力出现在产品团队面前,并真正挑战他们更深入地寻找简化方法,或者让事情变得更伟大,以至于会引起那些应该这样做的人的怀疑。就像这个人他妈的在胡说八道。这太疯狂了。我们永远不可能,然后两个月后就实现了。所以,这里有一些东西,你需要有远见,你需要有了解现实的知识,了解什么是可能的,了解物理学,了解软件,这样你才不是在胡说八道。有很多人可以告诉一群工程师。不,快点做。那不是一种技能。它必须基于现实,但它也必须基于,这是一个过时的词,但对结果的热情,以至于如果一项糟糕的工作完成,你会感到个人侮辱。这就是我最近一直在写的关于苹果的文章。他们失去了那个混蛋,他会出现在工程师面前,告诉他们他们做得不够好,以至于他们可能会在当下感到有点渺小,但会激发他们真正去修复它的热情。现在他们有一个物流人员,非常擅长采购零部件和安排生产甘特图,但你得不到那种魔力。现在,关于整个情况有趣的是,我实际上认为蒂姆·库克在苹果公司经营得如此之好,以至于我们可能错了。也许我们错了,低估了史蒂夫·乔布斯对整个使命的关键作用。也许你可以没有他。我认为账单稍后会来,现在已经来了。苹果在所有这些方面都在失败,以至于一个会吹嘘史蒂夫的鬼魂并真正侮辱他的人会说,看?现在就是这样。所以这里还有一点是,当然,你不可能把……你对系统关键组成部分的看法和你对现实中一百万个不同运动部件的混乱现实以及生活的现实分离开来。你应该时刻对自己的分析和自己的理论持怀疑态度。——既然你提到了苹果,我必须问一个互联网提交的问题。DHH还恨苹果吗?我相信这个问题是。曾经有一段时间,Basecamp与苹果就30%的抽成开战。你能讲述一下那场战斗的经过吗?——是的,但首先我要说,我爱上了苹果,那是在2000年代初,当时微软在个人电脑领域占据主导地位,就像我们现在看到苹果和谷歌在手机领域占据主导地位一样。微软就是个人电脑的一切,我真的很不喜欢90年代的微软。90年代的微软就像是掐断网景的生命线的那种角色,就像比尔·盖茨在接受司法部采访时,对“是什么”的定义表示不屈服。总的来说,我认为是不愉快的。你可以尊重所取得的成就,但我肯定不喜欢它。正如我们所讨论的,在Commodore倒闭后,我不得不勉强接受PC,因为我无法继续使用Amiga。所以,我本来就对PC有点不满,因为我太爱我的Amiga了。但在2000年代初,苹果作为一个可行的替代方案出现了,因为他们押注新一代Mac基于Unix底层。这让我得以摆脱微软,突然间我成为了苹果最大的支持者之一。我在哥本哈根商学院的毕业班里。我从第一台白色iBook开始,第一个使用Mac的人。到我们毕业时,我基本上把半个班的人都转化成了苹果电脑用户,因为我会非常热心地宣传它们,演示它们,做所有超级粉丝会做的事情。我多年来一直坚持这样做。杰森和我,实际上在2004年、2005年,为苹果做了一个广告,他们发布在开发者网站上,我们都在说,苹果对我们所做的一切都至关重要,我们仰慕他们,我们从他们那里获得灵感。这种爱关系实际上持续了很长时间。我基本上成了20年的Mac用户。我甚至都不关心看PC。对我来说,微软做什么都无关紧要,这感觉像是一种解脱。因为在90年代,我感觉我无法摆脱微软,突然间我找到了我的出路。现在我和苹果在一起,这太棒了,他们分享了我的许多情感和审美,他们不断突破界限,有太多值得骄傲的,太多值得仰望的。然后这种情况随着iPhone的出现开始改变,这很奇怪,因为iPhone成就了现代苹果。这是我在2007年和杰森一起排了五个小时的队去买第一代产品,当时苹果员工在你走出商店时会为你鼓掌。我不知道你是否还记得。那是一个完整的仪式,是苹果神话、神秘和敬畏的一部分。所以,我不再需要其他电脑了。我不再需要其他电脑的创意了。我想我可能会一直使用Mac直到生命的尽头。但随着苹果公司发现了运营收费站的聚宝盆,你不需要创新,你甚至不需要制造任何东西,你只需要拿走别人生意30%的利润。一种腐朽开始侵蚀苹果的基础,这可以追溯到App Store的最初发布。但我认为当时我们没有意识到,我当时没有意识到手机对计算的整体重要性。我以为iPhone出来的时候,就像,哦,它就像一部手机。我从90年代初就有了手机。嗯,它不是一部手机。它是一台移动计算机。更重要的是,它将成为世界上大多数人最重要的计算机。这意味着,如果你喜欢制作软件并想卖给人们,你必须通过那台计算机。而通过那台计算机意味着要通过苹果的收费站,而不仅仅是请求他们的许可,这本身就是一种屈辱。当你习惯了互联网,你不需要向任何人请求任何许可,你买一个域名,你开一家公司,如果客户来了,你就成功了。如果他们不来,那你就是失败者。现在,在你甚至可以发布之前,你必须先征求苹果的许可。这总让我感到不舒服。但直到我们于2001年推出HEY,我才看到了苹果的果实中潜藏的腐朽的全部程度。——对于不知道的人,我们会谈论它,HEY是一款很棒的电子邮件产品,试图解决电子邮件问题。——是的,我喜欢把它宣传为,如果Gmail在应用了20年的经验教训后能够真正发布,它会是什么样子。Gmail在2004年推出时是不可思议的。它仍然是一款很棒的产品,但它也受困于其最初的成功。你今天无法重新设计Gmail,它用户太多了。

所以,如果你想要对电子邮件有新的想法,我想要对电子邮件有新的想法。我需要建立我自己的电子邮件系统。而且不仅仅是我自己的电子邮件客户端。这已经是很多人多年来一直在做的事情了。他们为 Gmail 构建了一个客户端,但如果你不控制电子邮件服务器,你就会受到严重的限制。如果你真的想在电子邮件方面取得进展,你必须同时控制服务器和客户端。这就是我们用 HEY 所设定的宏伟目标。有趣的是,我以为我们在这里的主要障碍会是 Gmail。它是电子邮件领域的巨头。在美国,大约 70% 的电子邮件是通过 Gmail 发送的。我认为他们的全球使用率可能也差不多。它们实在是太庞大了,而且试图攻击一个如此庞大且深受许多人喜爱的成熟竞争对手。而且它是免费的,这似乎是一项自杀任务。我们之所以接受这项任务,是因为在做了 20 年的 Basecamp 之后,我们已经足够雄心勃勃,认为我们可以解决这个问题。所以我想,嘿,这太愚蠢了。我不会建议任何人去和 Gmail 硬碰硬。这似乎是一项自杀任务。我们还是要尝试,因为你知道吗?如果我们失败了,也没关系。我们只是为我和 Jason 以及公司里的人以及我们的猫建立一个更好的电子邮件体验,这样就可以了,因为我们负担得起。但当我们准备发布时,在花了两年时间构建这个产品,投入了数百万美元的投资之后。我们显然需要移动应用程序。如果你不在手机上,你就无法成为一个严肃的电子邮件竞争者,而且你需要有一个原生客户端。所以我们为 iOS 和 Android 都构建了一个出色的原生客户端。当我们准备发布时,我们将它们都提交给了应用商店,并在周五下午获得了 iOS 应用的批准。然后我们在周一上线了。我们非常兴奋。嘿,世界,我们一直在研究这个新东西,希望你们能来看看。当然,就像任何新产品发布一样,都会有一些 bug。所以我们很快在 iOS 客户端中发现了一些 bug,并向 Apple 提交了一个新的版本。嘿,这是我们的 bug 修复,你们能更新一下吗?就在那时,麻烦来了。他们不仅不批准我们的更新,他们还说,哦,等等,我们给了你进入应用商店的许可,但很抱歉,那是个错误。我们看到你没有使用我们的应用内支付系统,这意味着我们得不到你业务的 30%。你必须纠正这一点,否则你就不能进入应用商店。起初我以为,嗯,它已经获批了。我们运行的模式和 Basecamp 在应用商店运行了十年是一样的。如果你不是通过应用注册,我们会在自己的网站上注册客户,他们只是去应用商店下载配套应用,我们就会没事。这是事实,对吧?这就是为什么我从来没有对应用商店如此激动的原因。即使 Apple 开始收紧控制,我的业务也还好。现在突然我的业务就不好了。Apple 愿意摧毁 HEY,如果我们不同意将 iOS 应用注册的 30% 交给他们。而且不仅仅是 30% 的问题。这还涉及到分裂,以及不再与我们的客户保持直接关系。当你通过应用商店销售应用时,你不是在向客户销售应用。你是在向 Apple 的库存销售应用,然后 Apple 将应用销售给客户。客户与 Apple 有购买关系。所以如果你想提供折扣或退款之类的,那将是地狱。如果你想轻松支持多平台,那将是地狱,如果有人在 iPhone 上注册了 HEY,他们想切换到 Android。但这种计费关系,它与 Apple 绑定,那将是地狱。出于无数原因,我不想把我的生意交给 Apple。我不想把我们 30% 的收入交给 Apple。所以我们决定做一些 Apple 似乎从未听说过的事情。我们说不,我们不会添加应用内支付。我不在乎你们威胁我们。这不公平,这不合理,请批准。当然他们没有,事情就升级了。几天后我们意识到,你知道吗?这不是一个错误。这不会消失。如果我们不屈服并给他们 30%,我们就会完蛋。如果我们不屈服并给他们 30%,他们就会把我们踢出去,除非我们制造出巨大的噪音,让他们后悔。而这正是后来发生的事情。我们很幸运,因为我们在 WWDC,也就是他们的全球开发者大会之前一周发布了 HEY。Apple 喜欢在舞台上大谈他们为开发者做了多少,他们有多爱他们,以及为什么你应该为他们的新设备付费等等。而且我们碰巧在互联网上有一个平台,这在你需要与一家价值 3 万亿美元的公司开战时非常方便。所以我开始大喊大叫——哦,天哪。——基本上是把战斗升级到 11,并公开我们拒绝进入应用商店。这变成了一场旷日持久的、为期两周的与 Apple 的战斗,最终以我们作为大卫对抗歌利亚所能获得的最佳结果告终,那就是一种休战。我们不会把 30% 交给 Apple。他们也不会把我们踢出应用商店,但我们必须建立一个该死的假账户,以便应用在下载时能做一些事情。这是 Phil Schiller 在媒体第五次追问为什么我们不能进入应用商店而其他数百万配套应用可以时,似乎临时想出的一个规则。但我们恰好给 Apple 制造了如此多的痛苦和噪音,以至于让他们让我们离开比继续战斗更容易。——你怎么看待 Tim Sweeney 和 Epic 在与 Apple 的斗争中获胜?——我认为这是不可思议的,整个开发者生态系统。不仅在 iOS 上,在 Android 上也是如此,都欠 Epic、Tim Sweeney 和 Mark Rein 巨大的感激之情,因为他们承担了在这场混乱的垄断执法战役中对 Apple 造成唯一严重伤害的战斗。那就是 Epic 与他们的斗争。Tim 最近透露,为了进行这场与 Apple 的战斗,他花费了超过一亿美元的法律费用。我们曾一度考虑起诉 Apple,因为他们威胁要将我们赶出去。我们与几家律师事务所咨询了此案,他们当然会告诉我们我们有很好的案子。我的意思是他们想卖产品,但他们也会告诉我们。——这至少要花费 1000 万美元,而且需要五到七年才能完成所有上诉。现在我们知道了实际的成本是十倍,对吧?Epic 花费了超过 1 亿美元。在法律领域与 Apple 对抗将摧毁我们。只有像 Epic 这样的公司才能做到,只有像 Tim 和 Mark 这样的创始人才能像他们那样冒险,他们最初挑起这场战斗的胆量,我认为简直是不可思议的。并且能长期坚持下去,没有董事会会批准这个诉讼,没有职业 CEO 会同意,绝对不会。所以他们能够以最滑稽的方式击败 Apple,我认为这简直是不可思议的。因为请记住,他们在案件中的第一个胜利实际上并没有多大胜利。审判中有大约 11 项指控。Apple 基本上赢了 10 项,法官授予 Epic 这一项小小的胜利,即 Apple 不能阻止他们链接到互联网进行支付处理。所以他们赢了这一项。Apple 没有选择接受 10 项中的 11 项胜利,然后说好吧,你可以有你的链接,但其他所有规则都保持不变,而是选择犯下他们现在被指控的刑事藐视法庭罪,并激怒了法官,以至于美国现在的法治是,你可以在应用商店发布应用。而且你不需要使用应用内支付,但你可以与客户建立直接的计费关系,只要你在收款时链接到开放互联网,然后跳回应用。这一切都归功于 Tim 和 Mark。我们都欠 Epic。我们很快就要发布新应用了,我希望是下周,以便利用这个机会重新设计 HEY 应用,这样那些从 Apple 应用商店下载 HEY 应用的人就可以在应用内注册,然后使用网络输入他们的信用卡,这样我们就不用支付 30% 的费用了。相反,我们拥有直接的计费关系,这样他们就可以毫无麻烦地将订阅转移到 Android、PC 等设备上。这一切都要感谢 Tim 和 Mark。——是的,Tim,就像你说的,创始人,但也是特定的创始人。因为我认为你也许可以教我,Tim 是一个至今仍然坚持不合理原则的人。是的,我喜欢这一点。我认为有时即使是创始人也会被磨损。这是一个大公司。周围有很多聪明人,律师们在你耳边低语,随着时间的推移,你会想,好吧,要合理,你,这是一个不同的事情。成为那种坚持的人,史蒂夫·乔布斯也这样做过。仍然是那个混蛋。他说,“不,我宁愿烧掉整个公司。”——这基本上是我在最初的宣传活动中使用的确切语言。我宁愿烧掉这个生意,也不愿把 30% 交给 Apple。我试图谨慎地利用这种愤怒和真正的愤怒,因为它是一种相当不稳定的化合物。因为我有很多员工,我们有很多客户。如果 37signals 在 25 年后的旅程因为 Apple 烧毁我们或我因为与 Apple 的斗争而烧毁生意而结束,那将是相当悲惨的。但我认为你也需要这种程度的信念才能做出日常的决定。另一个 Apple 的例子,我知道我们在这里有点批评 Apple,而且我实际上并不讨厌他们。我真的不讨厌。我非常失望于被如此廉价地出卖的被浪费的关系。现在我明白应用商店的收费站确实是一项相当大的业务。它有数十亿美元的收入,但 Apple 是一家万亿美元的公司。而且我认为从历史的角度来看,这将是一次巨大的错误,而且我认为它已经是一个巨大的错误了。Vision Pro 的失败部分原因在于 Apple 惹恼了所有其他开发者。没有人热切地为他们的新硬件构建可能使其成功的体验。所以当你处于顶峰并掌握所有筹码时,你可以稀释自己,认为你可以随时 dictating 所有条款,而且没有长期后果。Apple 终于在学习,存在长期后果,而且开发者实际上对 Apple 的业务很重要。而且这种关系并非完全是单方面的。我们的存在并非完全依赖于 Apple。我们已经建立了自己的客户群。Apple 对行业有益。我很高兴 iPhone 的存在,等等。并不是说它不双向,但 Apple 只想要单向。我认为这是一个错误,而且是一个可以避免的错误。而且,这令人失望。对我来说当然令人失望。我花了整整 20 年来宣传这些东西,对吧?我花了这么多钱购买 Apple 硬件,原谅他们多年来做的一些事情。然后是为了什么?因为你想以最不合理的方式获得我创造的东西的 30%?我们不能找到更好的方法来做这件事吗?我认为他们将被迫找到更好的方法。但你是否也必须忍受被指控刑事藐视法庭的侮辱?这似乎与 Apple 的身份不符,但它也与那些由“专业经理”而非创始人或不合理的人经营的巨头公司发生的事情非常吻合。——嗯,我们可能也应该说,你喜欢 Apple 的那个伟大的 Apple 精神,我认为仍然存在,而且有一个论点是,这个 30% 的东西是公司的一个切片,一个特定的切片,而不是公司的决定性方面。而且 Apple 在其制造的硬件以及许多其他产品方面仍然处于领先地位。你知道,这可能只是一个伟大公司漫长故事中的一个小插曲,它为人类做了很多了不起的事情。所以,Apple 是一家真正特别的公司。我们提到了 Amazon,没有公司像 Apple 一样。——我同意,这就是为什么失望感更大。因为我们对 Apple 抱有如此高的期望,认为它们是山顶上的闪耀之城,它们以无数积极的方式引领着行业。我认为正如我们之前讨论过的,硬件再次变得令人兴奋,这在很大程度上是因为 Apple 收购了 PA Semi 并不顾一切地努力将 ARM 提升到今天的水平。因此,我们现在拥有这些令人难以置信的 M 芯片。Apple 在设计上的品味是无与伦比的。没有人像 Apple 那样拥有品味,尤其是在硬件层面。即使在软件层面。我想说 Apple 在软件层面仍然有很多品味,但也有一些真正的苦涩的味道。所以我想他们必须先洗掉那些才能找到自己的路。但 Apple 以前也经历过海市蜃楼,我的意思是 Wozniak 和 Steve Jobs 在车库里创立了这家公司,凭借 Apple II 取得了巨大的成功。他把公司交给了一位推销汽水的销售员,他在 90 年代把公司搞垮了。他不吸取教训,花了接下来的 20 年来建立这家了不起的公司,然后再次把公司交给了另一位物流人员,他可能比第一个掌权的人有更多的优点,但最终还是把公司带入了歧途。现在这是常态。常态是伟大的公司不会永远存在。在漫长的历史长河中,几乎没有公司能永远存在。一百年前存在的公司非常少,两百年前存在的公司更少。而且几乎没有 1000 年前的公司,除了少数几家日本刀具制造商之类的。所以当你身处其中时,你可能会被稀释,认为某样东西是永恒的。它们看起来如此庞大。Apple 完全可能跌倒,我认为它们现在跌倒的理由比以往任何时候都多。它们在人工智能方面落后了,非常落后。它们的软件质量在很多方面都在下滑。部分原因是 TSMC 不是 Apple 的子公司,而是一家服务于 AMD 和 NVIDIA 等公司的代工厂,这些公司现在能够使用相同的先进工艺,竞争对手在硬件方面正在迎头赶上。这是我长期不关注 PC 硬件后学到的东西,哇,AMD 实际上制造的 CPU 和 Apple 一样快,甚至更快。它们还没有那么高效,因为 ARM 在某些基本效率上优于 x86,但它们仍然相当不错。所以 Apple 应该有理由担心。Apple 的股东也应该有理由担心。不仅是因为所有这些失误,还因为 Apple 是由老人经营的。我认为 Apple 的董事会平均年龄是 75 岁。他们的整个执行团队都超过 60 岁。这听起来非常年龄歧视。在某些方面,它确实有点年龄歧视。就像我对自己一样。我今年 45 岁,我不得不强迫自己真正地去了解人工智能,因为它是一个范式转变,很多人到了某个年龄就满足于停留在他们已知的东西上。他们不想回到初学者。他们不想重新学习一切。我认为,嗯,这对我 45 岁的人来说有点难。75 岁的人怎么做呢?——我得回到你刚才提到的,你是一位父亲。你能谈谈成为父亲对你生活的影响吗?——我认为关于父爱有趣的一点是,对我来说,我甚至不确定我想要它。是遇到对的女人,让她说服我,这是个好主意,我们才开始的。在我二十多岁或三十出头的时候,组建自己的家庭并不在我的优先事项列表上。真的是我遇到我的妻子 Jamie 的冲动,她告诉我这就是我想要的。我想要一个家庭。我想要结婚。我想要孩子。我想要三个。我犹豫了一下,哇,哇,哇。然后,好吧,我们去做吧。我认为这是一种幸运的意外,我生活中的一些部分一直很有动力,我知道我想要什么,如何前进,以及回报是什么。但说到组建家庭,那总是一个非常模糊抽象的想法,当然,总有一天,也许。然后它变得非常具体,因为我遇到了一个知道自己想要什么的女人。现在回想起来,这几乎是疯狂的。就像现实中的一个岔路口。如果那没有发生,我现在还在这里,没有成为父亲,没有家庭,考虑到我现在所知道的拥有家庭的快乐,我会感到一种存在的遗憾,我会……我不知道是否会是毁灭性的。我认为男性在追求这些事情上比女性有更长的时间窗口。有一些生物学事实。但最终拥有我现在的家庭,拥有我的三个儿子,这是一种变革性的经历,因为这是最重要的事情。这是一个公开的秘密。甚至不是一个公开的秘密。这是历史上所有人都知道的真相。你听任何有过孩子的人说,他们都会说,“我的孩子对我来说最重要。”然而,这种智慧直到你自己身处其中才能真正领会。我发现这些真相很有趣,因为你无法用语言真正传达它们。我可以告诉你,嘿 Lex,你在做什么?找个妻子,生几个孩子,赶紧行动。这些只是话语。它们并没有传达经历这件事的真正分量。而且你不能在没有经历过的情况下真正学会它。当然,你可能会受到影响,等等,我们都可以做出贡献,小火花和小种子可以在你的脑海中成长。但它仍然必须发生。现在我处于这种情况,每天都有巨大的喜悦,你认为你的生活满意度在 1 到 10 的尺度上,然后看到你的孩子理解某事、完成某事、学习某事、做某事、仅仅是存在,所带来的满足感,就会让你觉得,哦我的天哪,这个尺度不是从 1 到 10。它是从 1 到 100。我一直在这 1 到 10 的范围内玩耍。而有一个 1 到 100 的范围,它以一种本身就很有影响的方式让我感到谦卑。我一直认为我对生活的界限有相当的了解,在三十出头的时候,比如这是关于什么的?我的意思是,我已经在这个世界上足够长的时间了,我知道一些事情。然后你意识到,我不知道,我不知道。我不知道这个尺度要宽得多。我经常谈论拥有孩子的快乐,以及看到自己的 DNA,这对我来说很了不起,因为人类从远古时代就开始追求这一点了。我今天在这里是因为,嗯,30,000 年前,某个尼安德特人有了同样的认识,我应该繁衍后代,我应该延续我的血脉。而这一切都导致了我现在坐在这里。但直到我遇到对的女人,它才对我来说成为一个现实。而且我认为这有时在对话中不够充分,那就是西方世界的人们配对的方式存在问题。这是我们没有足够孩子的原因,因为没有足够多的夫妇,没有足够多的婚姻。没有很多这些……没有足够多的这些传统价值观,即使在 50、60、70 年前也是理所当然的。我们正在进行一项宏大的实验,看看如果我们移除一些制度会发生什么。如果我们不再重视婚姻作为一种值得追求的东西会发生什么。如果父母身份现在被一些人视为一种奇怪的或违背自我表达的事情会发生什么。这是一项宏大的实验,我很好奇它会如何发展。我更愿意把它当作一部电影来看,比如《人类之子》,我觉得那是一部好电影。我希望那不是现实。但我们正在经历现实,而我却身处一个非常传统的、充满爱的双亲家庭,有三个孩子,并且认为,这现在是顶峰。我一生中做过很多事情。我构建过软件,我构建过公司,我赛过车,我做过各种各样的事情,但我会毫不犹豫地用我的一切来换取我的孩子。这是一种非常迷人的人类体验,这种联系的深度是你拥有它之前无法欣赏的。但我也认为,有必要去宣传它。因为我们不断被告知不这样做的理由。哦,太贵了。嗯,你可能会离婚,然后你可能会损失一半。有这么多声音不断地阐述反对婚姻、反对生孩子的理由,而我们这些选择做传统事情、结婚生孩子的人有义务稍微宣传一下,这在 50 年前听起来会很荒谬,你不得不宣传如此基本的东西。但我在某种程度上已经有义务这样做。去宣传它,去说,你知道吗?你可以看看我所做的一切,如果你喜欢其中一些部分,请认识到对我来说,在这种情况下,孩子、家庭、妻子比这一切都重要。这听起来像陈词滥调,因为你已经听过一千遍了。通过变成陈词滥调,你可能开始相信它不是真的,它只是人们说的话,但它是现实。我认识的几乎所有我私下认识的父母,都认为他们的孩子是他们生活中最重要的事情。——所以你说了许多有趣的事情。首先,这似乎是,我知道很多父母,也许更有趣的是,我知道很多超级成功的人,他们是父母,他们非常爱他们的孩子,并且说孩子甚至帮助他们更成功。现在有趣的是,说到你说的,似乎对我们人类来说,更容易阐述负面因素,因为它们是具体的、实际的,你知道,成本更高,需要时间,你知道,他们可能会到处哭。他们是,你知道,微小的自恋者到处跑,或者别的什么。——这都是真的。——是的,到处拉屎,诸如此类的事情。但要阐述你所说的,有一个小生物,你爱它胜过你爱过的任何东西。很难用语言表达。你必须真正体验它。但我相信它,我想体验它,但因为科学方法,我看到很多人,他们实际上并不擅长爱,却完全爱上了他们的孩子。比如,你知道,非常……让我们直说吧,工程师们非常像“嘟嘟”,他们就是坠入爱河了。就像,好吧,那些人就像你说的,他们并不真正想要,他们并不真正考虑生孩子,一旦他们这样做了,一切都会改变。所以,你知道,但很难用语言表达。——我认为这也是困难的原因之一是,我的意思是,我喜欢孩子。不是说我主动不喜欢他们,但当我接触到别人的孩子时,我没有情感反应。有些女人有,对吧?她们看到一个婴儿,然后说,“哦。”我从来没有过任何这样的情感。我的意思是,我可以理解,我为你拥有孩子感到高兴。它并没有引起我任何情绪。当我看着我自己的孩子时,我所感受到的情绪,这并不存在于同一个宇宙中。所以你没有,你没有一个完整的平行,或者至少很多男人,或者至少我,没有一个框架来理解拥有自己的孩子会是什么样子。然后你体验它。就像“噗”的一声。而且发生得很快。这就是我发现的有趣之处。在那个小人类甚至能够回应你之前,你对婴儿产生的爱就发生了。不一定立刻,我不知道,不同的人有不同的经历,但对我来说需要一点时间。但一旦它发生了,它就像被马踢了一样。而且我也喜欢它也是一种普遍的经历。你可以是世界上最成功的人。你可以是世界上最穷的人。你可以在中间的某个地方。我们都分享这种经历,对大多数人来说,成为父母最终是他们生活中最重要的事情。——但你知道,和对的人一起经历这种经历真的很棒。但我认为因为我是一个非常有同情心的人,和错误的人在一起的代价对我来说很高。但我也意识到,我的一个朋友离婚了,但仍然非常爱他的孩子。这很美好。这很混乱,但所有的爱仍然在那里,而且,你知道,你只需要让它奏效。只是,我不知道,这种……离婚会毁了我。——你应该听听“生活学校”。他在 YouTube 上有一个很棒的节目。你会嫁给错误的人。如果你事先接受你会嫁给错误的人,那么你可能结婚的每个人在某些方面都会是错误的人。他们会惹恼你。他们在某些方面不会是你所希望的那样。浪漫的理想,一切都永远完美,这不利于结合并生孩子。因为我认为正如你刚才所说,即使事情变得糟糕,我发现我个人认识的大多数事情都分崩离析并变得糟糕的人,他们永远不会说,“我后悔了。”“我宁愿我的孩子不存在,因为一段关系破裂了。”我的意思是,我认为你应该非常努力。而且我认为这也是我们没有完全理解的那些围栏之一。当我们拆除它们并庆祝离婚有多容易时,例如,那不会产生一些负面后果。我不是说你不应该离婚。我不是说要回到过去。我只是说,文明经过数千年的发展,形成了一些确保其制度和生命延续的技术,也许我们没有完全欣赏。我的意思是,再次,这是 Jordan Peterson 和其他人更善于表达的,我从分析自己的情况中学到了很多。为什么这个巨大的负担,对你带到这个世界上的另一个人的生命负责,也是存在中最有益的部分?这很有趣。在我听到 Peterson 阐述承担你所知道的最重负担的价值之前,我一直认为负担是负面的。我为什么要承担孩子的负担?我可能会搞砸。我可能会成为一个糟糕的父母。他们可能会有不好的……所有这些事情,对吧?所有不这样做的理由。而很少有人阐述为什么你应该这样做。——是的,但我也应该补充一点,你刚才提到的,也许在西方,配对过程已经坏了。它坏了,技术让它变得更糟。是的,这很有趣。这整个事情还没有解决。所以招聘优秀的团队,这可能是配对方面解决得最好的。寻找优秀的人才。第二,寻找优秀的朋友。这也很难解决。——而且它正在崩溃。——它正在崩溃。第三是配对关系。这就像最糟糕的。事实上,技术让它变得更糟。这很有趣。——是的。这又是一个很好的例子,说明所有最好的意图最终都让我们走向了地狱。我非常喜欢 Louis Perry 对性革命并非绝对好处的分析,这是我以前从未想过的事情。当然,女性应该能够拥有自由和自决权以及堕胎权,以及所有这些。Louise Perry 也没有反对这一点,当然。但有一些我们当时没有意识到的第二顺序事实,而且我们可能没有现成的解决方案。这很有趣。你在无数种方式上让生活变得更好,但不知何故我们却变得更痛苦。为什么会这样?为什么人类会在苦难中找到意义?我认为其中一些是因为这是一个很难通过科学来回答的问题。再次,Peterson 很好地阐述了你必须通过艺术、通过作家、通过不同的……我差点说“认识模式”,然后我停了下来,因为这听起来像胡说八道。但有不同的方式来获取那些论文无法告诉你的深刻教训。——我的意思是,这一点也适用于宗教,例如。如果你从社会中移除宗教的软件,你最好有一个好的替代品。——我们已经有很多糟糕的替代品了,尤其是在过去的几十年里。宗教是我一直努力解决的问题,因为我不信教。我希望我信教。我现在可以完全理解拥有这样一个操作系统所带来的巨大价值,不仅在个人层面,而且在社会层面。而且还不清楚答案是什么。我认为我们在替代品方面尝试了很多死胡同,而人们以无数种方式填补了这个空白,这些方式似乎比所有宗教都糟糕,尽管宗教有其缺点,在无数方面都能够实现。——是的,宗教就像钴代码。它就是……——是的,这些制度,我们不完全理解规则以及它们为什么存在,以及如果我们移除它们会发生什么。是的,有些对我来说似乎很明显是那个时代的胡说八道。哦,你需要吃某种贝类,因为在那个地区的。有什么,有什么,有什么,好吧,行。但还有很多其他事情对维持社会长期运转至关重要,而我们不完全理解哪些是哪些。什么是胡说八道,什么是社会承重支柱。——你能谈谈孩子对生产力的影响吗?他们增加了你的生产力,减少了你的生产力,或者这是错误的问题?——我认为这是雄心勃勃的人们常常害怕生孩子的原因之一,因为他们认为我还有很多事情要做,我现在时间都不够。如果我再加入一个人,我怎么可能完成我想完成的事情呢?首先,我们一直每周工作 40 小时,而不是 80 或 100 或 120 小时。我认为这非常有益。B,孩子并不存在于真空中,只是他们自己被引入你的生活。希望有一个伴侣。在我生活中,我娶了一位出色的妻子,她决定在我俩在一起时辞去公司的工作,并且能够承担很大一部分责任。我刚才想说“负担”。我认为这正是它经常被呈现的方式,尤其是在女权主义的视角下,照顾自己的孩子是一种无偿劳动,必须以某种特定方式得到补偿,而不仅仅是把生命带到这个世界,抚养优秀人类的补偿。这种分析有些不对劲,我认为现代传统运动是对其的回应。我当然不确定他们是否拥有所有答案。但这种分析认为孩子是一种负担,如果女人选择在家带孩子,那就是女权主义野心的某种失败模式,这是不对的。我认为这实际上是一个死胡同。现在这取决于不同的人,不同的情况。我只能谈论我的生活,我娶了一位出色的妻子,她决定至少在孩子年幼时在家照顾他们,并承担了许多责任。现在这并不意味着我不需要参与其中,也不需要付出努力,但这让我能够继续每周工作 40 小时。但这使得这 40 小时更加严格。我有一个时间表,我早上 6:30 起床,我们必须在 8 点前出门。我通常需要和我的小儿子或中间的孩子玩一两局“堡垒之夜”。然后送孩子们去学校,进去,大概 8:30 开始工作,一直工作到下午 5 点,5:30,有时是 6 点。但之后是晚餐,我必须在那里。然后我必须给孩子们读书,等这一切都做完,我不想回去工作了。所以我的工作时间实际上是早上 9 点到下午 5 点,早上 9 点到下午 6 点,取决于当时的情况。有时会有紧急情况,你必须处理它们,但它使工作更加有条理。我发现了一些好处,也发现了一些生产力,我不能像以前那样闲逛了,一天会在下午 5:30 左右结束。如果我今天没有完成我想要完成的事情,到那个时候就结束了。我完成了,我得明天再试。而有了家庭和孩子之前,我就可以不做,然后在晚上补上。所以在这方面,它使我更有条理,但它并没有真正改变我的工作量。我仍然工作差不多相同的小时数。顺便说一句,这已经足够了。这是我们在我们最新的书中提出的一个关键观点,工作不必疯狂。工作时间足够了。40 小时一周实际上是一大笔时间,如果你不浪费它的话。大多数人确实浪费了它。他们在会议中浪费了它,他们在无关紧要的事情上浪费了它,而每天只需三个小时、四个小时的专注不间断的时间就能让你朝着你真正关心的目标迈进。——我认为孩子确实能让你更有效率,特别是像我这样的人。他们制造了紧迫感。比如如果你必须在下午 5 点前完成,这可能是一个反直觉的想法,但对于喜欢工作的人来说,你真的可以把一天填满工作中的杂事。如果你必须在下午 5 点前完成,你将不得不做深入的工作并完成它。比如真正专注的单一工作。然后你就会切断所有的压力。——它让你保持诚实。它让你保持诚实,因为你可以浪费一天,你可以浪费两天。但如果我浪费了一整周,我就会感觉很糟糕。现在这是我内在的一种驱动力,我感到满足和充实,如果我真的做了重要的事情,如果我回顾这一周,我会觉得,这真是美好的一周,真的。我们取得了进展。也许我们没有完成,但我们取得了进展,一切都变得更好了。我认为孩子在这方面确实帮助了时间管理。很多人需要这个,因为我发现对过度工作的庆祝太令人厌倦了。哦,我每周工作 60 小时或 80 小时或 100 小时,然后就像,首先,不,你没有。不,你没有。就像那 80 个小时充满了各种你称之为工作的杂事,而我却会嘲笑,而大多数人都会嘲笑。如果你真的分析了时间去向,你就会嘲笑。大多数必须完成的重要事情都是在两小时、四小时或五小时的连续不间断的时间段内完成的。困难的部分是确保你把它们都完成。所以别跟我说这个。时间足够了。而且,什么东西如此重要,以至于它排在延续你的血脉之上?我认为,再次,这个 DNA 坐在这把椅子上,旅行了 30,000 年才来到这里,而你却要浪费所有这些,只是为了发送更多的电子邮件,这其中有一种古老的荣誉。——有些事情也很难用语言表达,就是和孩子玩耍的乐趣。我不知道,表面上看,我可以自己玩电子游戏来获得这种乐趣。但不行,它就像,有什么神奇之处,对吧?——我从 19 岁开始就玩了上千小时的“堡垒之夜”,所有这些都是和我的孩子一起玩的。我从来不会玩“堡垒之夜”。嗯,我不知道我是否永远不会。如果不是因为我的孩子,我不会玩上千小时的“堡垒之夜”。对我来说,享受的是和他们一起做我碰巧也喜欢的事情。我真的很喜欢“堡垒之夜”。这是一款出色的游戏。我不用强迫自己和他们一起玩。我经常问,嘿,你们想玩“堡垒之夜”吗?但仍然,这是我能和他们分享的一项活动。这是我能和他们分享的热情。我开始和我的大儿子一起玩卡丁车。我赛车已经很久了,现在他们也开始玩卡丁车了,就在卡丁车赛道上,看着他们绕圈,看着他们越跑越快,看着他们学习这项技能,你就会想,我的人生还能做什么?在我 45 岁的年纪,我站在这里真正享受生活。我把他们带到这个世界。在这个阶段,还有什么比这更重要的事情,我会花时间去做呢?——好吧,就像你提到的,你喜欢赛车,而且你以世界级的竞技水平去做,这太棒了。你是怎么开始的?是什么吸引你赛车?你为什么喜欢它?——关于开始赛车,有趣的是,我直到 25 岁才拿到驾照。我在丹麦哥本哈根长大,那里的汽车税超过 200%。所以你付三辆车的钱,得到一辆。我甚至连一辆车的钱都没有,更不用说三辆了。所以我在成长过程中买不起车。我们小时候没有车,但哥本哈根是一个骑自行车、坐公交车或者像我长期以来那样玩轮滑的好城市。但到了 25 岁,我意识到我想在美国花更多时间。我还不确定我是否会搬到那里。后来事实证明是这样。但我知道,如果我想在美国度过时光,我需要有驾照。如果我不知道如何开车,我将无法很好地出行。所以我 25 岁时拿到了驾照。然后在那年晚些时候搬到了美国。我一直喜欢电子游戏,赛车电子游戏,“Metropolitan Street Racer”在 Dreamcast 上是一款让我沉迷的游戏。它是 Project Gotham 的前身,Project Gotham 是 Forza Horizon 的前身,我认为。——哦,好的,有趣。——我认为这是传承。一款很棒的游戏。几周前我刚在模拟器上启动了它。它仍然有点像在驾驶一辆真正的汽车,因为它有足够真实的汽车动力学。它不像 Sega Rally 那样的街机赛车游戏。但我一直喜欢这个。然后我 25 岁时拿到了驾照,搬到了美国,两年后,我在芝加哥认识的一个朋友带我去了芝加哥 Autobahn 乡村俱乐部,这是一个很棒的赛道,离芝加哥大约 45 分钟路程。我坐进了一辆赛车,第一次开了一辆赛车。我有了和开始研究 Ruby 时一样的伪宗教体验,我在这辆基本上是 90 年代的马自达赛车里跑了大约 20 圈,那是一辆相当便宜的赛车,但是一辆真正的赛车。单座,手动变速箱,但暴露的滑行轮胎,所有这些东西。在有了这种体验之后,首先,这是有史以来最棒的事情。就像驾驶赛车的身体感觉非常独特。我认为如果你开过快车,你可能只尝到了 2% 的味道。在单座赛车中,尤其是在你头部暴露在元素中的那种赛车中,你可以看到单个车轮,速度感如此之高,完全是另一个层次。——所以你能谈谈吗?所以即使在那辆马自达上,你也能感觉到,你感觉到了什么,赛道在你身上回响,你看到了吗?你感觉到了抓地力吗?——哦,是的,你不仅能看到颠簸,因为你直视着车轮,你也能感觉到所有的颠簸,因为你使用的是光头胎。这是一个非常硬的设置。这不像把一辆快速的街车开到赛道上试着开一圈。——所以你能感觉到滑动,牵引力吗?——是的,你感觉到滑动。驾驶赛车的乐趣很大一部分在于以我们所说的附着力边缘驾驶。汽车实际上在轻微滑动。几百分之一的滑移角是驾驶赛车最快的方式。你不想滑太多,看起来很棒,烟雾缭绕,但那不快。你想驾驶的方式就是以附着力极限为驾驶方式,你正在以轮胎所能承受的最大程度旋转汽车。然后稍微多一点,然后玩弄它,让它保持在这个水平。因为当你处于附着力极限时,你基本上只是

距离失控只有微小的移动。我的意思是,不需要太多。然后汽车就开始旋转。一旦开始旋转,你就失去了抓地力,然后你就撞墙了。危险与技巧的这种平衡是如此令人陶醉。而且它也比赛车电子游戏好得多,因为关键性提升了两个档次。我经常想到那些非常喜欢赌博的人,我觉得就像,你们不就是在玩扑克吗?就像不,重点不是扑克。扑克可能是其中的一部分,但重点是我可能会失去我的房子,对吧?就像有些人对赌博上瘾一样,是因为有真实的东西在赌注上。当你坐在一辆赛车里时,有非常真实的东西在赌注上。如果你搞砸了,至少,你会失控,然后狠狠地撞到墙上,那将是昂贵的。最糟糕的是,你可能无法活着出来。即使现代赛车比以前安全得多。但仍然存在真实的危险因素。有些人仍然会在赛车中受重伤甚至死亡。与 60 年代那些疯狂的人们参加一级方程式赛车时相比,这已经很少了,他们中的 13% 的车手可能无法活到年底,因为他们会死在熊熊燃烧的火焰球中。但仍然有一些。而且我认为,因为有东西在赌注上,这确实促成了这一点。但还不止于此。还有一种身体上的感觉。你所有的力量都被激活了。有心流。我认为这真正巩固了我为什么会上瘾,因为我一直,我喜欢从编程中获得的心流,但从编程中获得心流是一个非常不稳定的过程。我不能只是坐在键盘前说,“好吧,让我们开始心流吧。”事情不是这样的。问题必须恰到好处。它必须在恰当的时机与我的技能相匹配。这有点像一场彩票。而在赛车中,这根本不是一场彩票。你坐进车里,启动引擎,然后驶上赛道,我几乎可以保证获得心流。因为你需要,或者至少我需要 100% 的大脑处理能力才能以我能达到的速度行驶而不发生碰撞。所以没有时间去想昨晚的事,或者下周的会议,或者产品发布。从字面意义上讲,这是完全的禅意。我想象一个非常擅长冥想的人,他们可能会进入那种状态,在那里一切都很清晰,你就在当下,除了你和下一个弯道,什么都没有。这是一种非常令人上瘾的体验。所以在我经历了那之后,我欲罢不能。我抓住一切机会去赛道。连续四年,我每个周末都去赛道。到那时,我终于积累了足够的技能和公司方面的成功,足以负担得起参加所谓的“真正的赛车”。于是我开始了。我开始驾驶这些保时捷,然后一旦我进入其中,一旦我进入所谓的“真正的比赛”,我就想知道你能把这个带多远。没过多久我就决定,“你知道吗?我能做到这一切。”我在赛车界最伟大的英雄是汤姆·克里斯滕森,一位丹麦同胞。他们称他为勒芒先生。世界上最伟大的耐力赛。勒芒 24 小时耐力赛的获胜次数比任何其他人都多,汤姆·克里斯滕森赢得了九次。所以汤姆真的让我对勒芒产生了兴趣。我从 80 年代就开始看勒芒了。我最早的记忆就是在电视上看那个节目。这场比赛从 20 世纪 20 年代就开始了。但在 80 年代,我有点迷上了。然后在 90 年代末、2000 年代初,当汤姆开始获胜时,我和几乎所有其他丹麦人一样,开始近乎虔诚地观看比赛。所以我想,“你知道吗?我想去勒芒。”而这就是赛车的魔力,如果我开始打篮球,我无法设定一个现实的期望,认为我会进入 NBA,然后进入总决赛。或者我开始打网球,我会去温布尔登比赛,这根本不会发生。但赛车在这方面很特别,因为它需要相当多的钱来维持这些赛车的运转。这非常昂贵。这就像经营一家小型初创公司。你需要飞很多人去世界各地,购买昂贵的设备等等。所以你需要大量的资本。而我通过公司的成功获得了一些。所以我可以做到,这意味着我可以去勒芒。所以我把这个作为我的目标。我想去勒芒。我于 2009 年开始参加真正的比赛。三年后,也就是 2012 年,我第一次站在了勒芒的发车线上。

我们应该说,勒芒,24 小时耐力赛。我的意思是,这太疯狂了。

有三名车手,请注意。所以不是一个人连续驾驶 20 小时、24 小时。但即便如此,这仍然是一场非常艰苦的比赛,无论是身体上还是精神上,尤其是精神上。当你醒着超过 24 小时后,你的头脑就不如刚醒来时那么敏锐了。勒芒也有有趣的一点。比赛大约在下午四点开始。所以比赛开始时,你已经醒了半天了。然后还有 24 小时才能完成。你会在车里驾驶的时间通常在 1.5 小时到最多 4 小时之间。规定是每六小时最多驾驶四小时。我在勒芒单次驾驶时间最长可能达到了两个半小时。这非常耗费精力。你以每小时 200 英里的速度进入一些弯道,赛道上还有另外 60 辆车。每当我处于我的正常类别,也就是 LMP2 类别时,我会有 GT 赛车,它们更像是法拉利和保时捷,我需要超车。然后我还有这些超级跑车,这是顶级类别,它们正在超我的车。所以你有很多事情要做,而且你必须保持两个半小时的专注才能做到这一点。这是保证长时间获得令人难以置信的心流的绝佳方式。这就是你为什么会上瘾。这就是我为什么会上瘾。

你得给我讲讲这个视频。你开着这些 LMP2 赛车的视频。

哦,是的。

这太酷了。这太酷了。

这可能是我职业生涯中最喜欢的战斗。

[评论员] 海内迈尔·汉森超越了佩特,增加了五分……

是的,这是我在上海国际赛车场与尼科·穆勒比赛。

你在这里外面?

我在外面……

这有多酷?

蓝色和白色的。我们绕着赛道跑了一整圈,中间只有一张纸的距离,在这条后直道上。我离他这么近,因为我想迫使他转向赛道的另一边,这样他就不能把我堵死。我们那时已经战斗了大约 40 分钟了。我设法让这位专业车手在我身后保持了 40 分钟。他终于超了我,但我们一直战斗到最后。这确实展示了这两种赛车的性能。勒芒原型车。我们实际上从不接触。我们离对方只有一英寸左右。然后我们继续在上海赛道上比赛。

多么酷啊。你是怎么变得如此出色的?就像什么?我的意思是这是一个迷人的故事,对吧?你能够变得如此出色。

我对于我这样的车手来说已经相当不错了,我被称为绅士车手,这意味着我不是专业车手。和许多优秀的绅士车手一样,在我们状态最好的时候,我们可以与那些一生都在从事这项运动的专业车手竞争。我们与专业车手之间的区别在于,专业车手能够每次都做到这一点,或者或多或少每次都能做到。所以我不能一直都这么好。当一切都恰到好处时,我可以与专业车手竞争,但这并不是赢得冠军的方式。这不是你如何获得工厂的报酬。你必须每次都做得很好。所以这是一个巨大的区别。但其中一些也是因为,当我意识到赛车是我想要认真对待的爱好时,我真的下定决心了。我投入了数千小时。

你有没有撞过车?最糟糕的撞车是什么?

我撞过很多次车,但谢天谢地,敲木头,我没有受过重伤的撞车。

你有没有把车撞坏?

哦,是的,哦,是的。我撞坏了很多车。

那感觉怎么样?你撞坏了一辆车。你是怎么……

如果你在一场真正的比赛中,并且其他人依赖你,那感觉糟透了。不仅仅是车本身,虽然有时这些车修理起来也很昂贵,这很糟糕,而且以某种方式浪费,当你撞坏这些车时。但你让团队失望的感觉。耐力赛是一项团队运动。你不仅有你的机械师,通常还有你的队友。所以当我撞车时,我只会觉得,“该死,我本可以避免的。”

是的,但你也可能死了。

你知道什么有趣吗?我从不那样想。我认为你不能。因为我认为一旦你开始考虑死亡的可能性,你就无法做到。你无法开得很快。

好吧,我当然不想谈论卡尔·荣格和弗洛伊德,但我敢肯定,那总是在你脑海的某个角落。你并没有把它带到表面。

是的,这是吸引力的一部分,是赌注的一部分,这意味着这不仅仅是虚拟的。我不能只是按重置,重新开始,重新启动。如果我撞坏了这辆车,我们将出局,或者我们将处于劣势,或者它将被毁坏,或者我可能会受伤。我受过几次轻伤。实际上,在我们赢得勒芒 24 小时耐力赛的那个赛季,我在训练一辆 F3.5 赛车。那是一辆非常快的车。这是一项很好的锻炼,但它也没有动力转向。所以一些赛车,尤其是敞篷车,没有动力转向。这意味着方向盘基本上直接连接到前轮。所以如果你撞坏了其中一辆车,前轮突然转动,如果你不把手从方向盘上移开,你真的会伤到手。我还没有驾驶过足够多的这类赛车,以至于我知道我必须,或者已经培养出那种本能,我必须把手从方向盘上移开。所以我没有,我真的伤了我的手,这只是在勒芒 24 小时耐力赛前一个月。所以我心想,“唉,我今年得错过了。”我没有打石膏,只是严重扭伤了。然后奇迹般地,在比赛前一周,我心想,“是的,实际上,现在没事了。”所以得以参加。如果我看到我的团队继续赢得比赛而我却不得不坐在场边,那将是巨大的遗憾。但我确实非常幸运,因为我的大多数撞车事故都只是昂贵的或运动上的不便。我从未受过重伤。但我见过很多人受过伤,事实上,我今年的队友,也是多年的队友,皮特罗·菲蒂帕迪在斯帕驾驶赛车。斯帕是历史上最伟大的赛道之一。它有一个标志性的弯道叫做 Eau Rouge,这可能是赛车运动中最著名的弯道。在爬坡之前有一个巨大的压缩。它非常快,是一个非常困难的弯道。就在他完成压缩时,他的车失控了,他失去了动力转向,直接撞上了墙,摔断了双腿,基本上面临着他的职业生涯可能结束的前景。我还有其他队友和认识的人受过严重伤害,这真的伤害了他们。但有趣的是,正如你所说,你认为这会让你铭记于心。在我们赢得 2014 年比赛的前一年,同一辆车在勒芒比赛中有一位丹麦车手,我当时也在比赛,他死了。他在赛道上有雨时失去了控制,赛道的设计非常糟糕,栏杆后面有一棵非常大的树。他以全速撞上了那棵树,承受了 90 G 的冲击力,当场死亡,这真是一次极其糟糕的经历。那一年我获得了第二名,这本该是值得庆祝的。但它只是被玷污了,因为不仅一位车手死了,一位丹麦同胞死了。一个我认识的人死了。那很艰难。

所以把天气条件也考虑进去,你提到了赛道的天气状况。天气是干的还是湿的?

这是其中一个重要因素。

即使是去年的勒芒。当时在下雨,我出来了,自从 2012 年我第一次比赛以来,我就没有在勒芒 24 小时耐力赛中犯过严重的错误,当时我在比赛还剩四小时的时候把车开进了沙坑,我们花了几个圈才被拖出来,但这并没有真正改变我们的结果,因为当时赛场就是这样分散的。我多年来犯过一些小错误,但都没有真正让我们出局。在去年的比赛中,当时在下雨,我先是撞上了一辆福特野马,因为我在潮湿的路段进行了过于雄心勃勃的超车,没能及时刹住车,然后我坐在砂石坑里待了两个圈,感觉非常糟糕,我知道我们的比赛结束了。在一场我们非常有竞争力的比赛中。你并非每年都能得到一辆有竞争力的赛车、一个有竞争力的团队和一套有竞争力的装备。我知道这有多么罕见。所以知道我们当年有机会,而我却浪费了它,感觉真的很糟糕,但这还在加剧。我回到了赛道,勉强又跑了一段,然后又一次在进入保时捷的入口处陷入了砂石坑,当时又开始下雨了。所以这就是赛车如此令人上瘾的原因之一,因为高潮非常非常高。当你赢得勒芒 24 小时耐力赛这样的比赛时。感觉太不可思议了。有太多的情感。但如果你搞砸了,低谷就会非常非常低。

你开车时在注意什么?有哪些参数?你在加载什么?你是在感受抓地力吗?你基本上是在增加速度,看看它对抓地力有什么持续的反馈作用,然后你试图管理它,并试图找到最佳的滑移角度?你是用眼睛在看吗?你闻到什么了吗?你只是在听风声,还是也在看赛场?比如你怎么没撞到那个人?你们离得很近,只有几英寸,对吧?所以你必须注意这一点。关于那场特别的战斗,我们真的只有几英寸的距离,这真的很令人着迷。我无法完全解释,但人类可以发展出惊人的空间感。我看不见我车尾的边缘,但我确切地知道它在哪里。我可以在脑海中建立一个心理模型,它给了我这辆车的精确尺寸,这样我就可以在竞争对手的车或墙壁几英寸的范围内行驶,而在事情顺利的情况下都不会撞到它们。这辆车大约有两米宽,五米长。而且你什么都看不见。后视镜实际上很糟糕。这些车没有后视镜。你看不见后面。你只能通过两个侧后视镜看到。但当你足够熟练时,你就会形成这种直观的心理模型。但我实际上最关注的是我运行一个程序。当我来到赛道时,我试图为每个弯道加载我所知道的最佳程序。我的刹车点是什么?我的加速点是什么?我的刹车拖曳曲线是什么?我试图通过自己找到并以最快的速度行驶来部分地加载这个程序。但比这更重要的是通过模仿我的专业竞争对手或队友。所以我通常总是和专业人士一起比赛。现代赛车产生的数据量非常巨大,你可以在每次出赛后分析所有这些数据。你可以看到你踩刹车踏板的精确轨迹,你在转向输入方面做了什么。当你踩油门时,你可以看到你损失的每一毫秒都体现在这些图表中。所以我试图做的是,我试图查看图表,然后我试图加载它,就像“这就是我必须做的”。哦,在第 17 个弯道,我必须在刹车上轻 10 巴。所以我试图加载这个程序,然后我试图重复它。然后还有所有改变的事情。你的轮胎变化很大。这些轮胎的寿命通常只有 40 分钟。有时在勒芒我们可以开得更久,但在一些赛道上,它们可能只有 40 分钟就会明显衰退。所以你必须管理好这一点。抓地力在不断变化。所以你的程序必须突然适应这些不断变化的情况。然后在耐力赛中,你不断地与其他赛车互动,因为你正在超越较慢的类别,或者你正在被一个更快的类别超越。所以这是方程的一部分。然后你试图在附着极限周围驾驶赛车。所以你同时考虑所有这些因素。但对我来说,最重要的是努力成为一个机器人。我如何能够连续两个半小时精确地重复这一系列步骤,而不犯任何一百毫秒的错误?

是的,低延迟算法。

这确实是其中很大一部分。你的延迟对于捕捉赛车开始打滑至关重要。你在身体上会感觉到 G 力有点不对,滑移角度有点不对,然后你必须反向转向。显然,最优秀的赛车手凭直觉就能做到。我有一些直觉。我并不完全拥有所有直觉,所以我偶尔会打滑。但这才是挑战所在。

根据你所研究和理解的一切,要实现赛车领域的精通需要什么?成为世界上最好的赛车手需要什么?

痴迷是其中一部分。当我阅读和听到关于塞纳和其他伟大车手的故事时,他们就是极其专注的。马克斯·维斯塔潘是现任世界冠军,他也是那种类型。观看马克斯的比赛非常迷人。我的意思是,他是一位杰出的赛车手,但他实际上什么都不做。当他不在赛道上时,他就在模拟赛车。就像他实际上在电子游戏中进行更多的比赛,而他已经进行了所有这些比赛。

有没有什么特别的技能让你觉得他拥有超凡的能力,是所有这些痴迷的一部分?是多种因素,还是他们真的能够,就像你说的,发展出一种感觉?他们能够达到滑移的边缘吗?

他们能够发展出非常精细的感知能力,来感知赛车何时打滑。他们可以感觉到车身传来的微小的瞬间或运动,通常是通过他们的臀部传递上来。这就是为什么我们称之为“屁股仪表”,它会让你感觉到车身松动,或者你即将锁死。你可以真正地打磨这种感觉。然后另一件事是你必须有非常好的反应时间。当你观察伟大的 F1 车手时,他们的反应时间通常不到 200 毫秒,这很棒。即使是 10 毫秒的差异也会产生巨大的影响。当你看到 F1 发车时,例如,他们进行原地起步,然后看到五个红灯亮起。当最后一个灯熄灭时,他们应该松开离合器并出发。他们可以掌握这个时机。所以你可以确切地看到谁的反应时间。即使是慢了 20 毫秒,也可能决定你在第一个弯道是领先还是落后。

赢得比赛有多少是关于争夺位置的策略?

有一部分是这样,还有一部分是关于胆量。谁更想要?这正是危险感出现的时候。费尔南多·阿隆索在铃鹿对阵舒马赫时有一句名言,我想。他们正要进入一个极其快速的弯道。这非常危险。阿隆索基本上说,我本来要超车的,因为我知道他有妻子和孩子在家。

这太狠了。

绝对无情,对吧?

是的,哇。

我知道他比我更看重生命。所以有时这有点像扑克。谁会退让?在这方面,这有点像一场胆小鬼游戏。有时它不起作用。没有人退让,你们俩都撞车了。但通常一个人会先眨眼。

超车可以发生在内侧和外侧吗?

只要你的车有一点点在赛道上,你就可以在任何地方超车。

然后你就即兴发挥,冒险。多么棒的运动。然后塞纳,当然,是一位传奇的冒险家。

是的,甚至在他之前,当,我的意思是他在 90 年代去世时。但到了 90 年代,赛车已经比尼基·劳达在 60 年代比赛时安全多了。那种危险程度已经不复存在了。仍然只有一点点残留,它仍然是危险的,但远不如那时。而且很难跨越时代来比较,谁是史上最伟大的车手。我认为塞纳是,这是一个公平的论点,但我们没有数据。我们不知道他与谁竞争。如果把他放在今天的马克斯·维斯塔潘面前,他会怎么样。我有时确实觉得你可能会有点怀旧,怀念那些过去的伟大车手,但世界在前进,新的记录不断被打破,专业性也在不断提高。有时我认为这对这项运动不利。有很多专业车手不仅驾驶技术高超,而且非常擅长成为企业代言人。而以前情况完全不同。以前赛车界有更多有鲜明个性的角色,他们可以闪耀,因为没有数十亿美元的赞助让他们害怕失去。

荒谬的问题,有史以来最伟大的汽车是什么,或者也许是驾驶起来最有趣的汽车?

对我来说,有史以来最伟大的汽车是帕加尼·宗达。

[Lex] 好的,我正在查找,帕加尼·宗达。

[DHH] 帕加尼·宗达是由一位名叫霍拉西奥·帕加尼的了不起的阿根廷人制造的。

[Lex] 我的天,那是一辆漂亮的汽车,哇。

这是一辆华丽的汽车。你可以查找我的。那是帕加尼·宗达 HH。所以那是我在 2010 年参观了摩德纳的工厂后定制的汽车。偶然间我得到了这辆车,但它基本上成了我最喜欢的车。2005 年,我看了一集《Top Gear》,其中一位主持人驾驶着帕加尼·宗达 F。我当时就想,“这是世界上最美的车。”这是世界上声音最不可思议的车。如果有一天我有这个机会,这就是我想要的。然后我在 2010 年有了这个机会,从那时起我就一直拥有这辆车。我永远不会卖掉它。它确实是一件经受住了时间考验的杰作。历史上有一些伟大的汽车,它们在当时就被认为是伟大的。这辆车至今仍然很棒。

你有没有开着它去赛道?

我开过,它在那方面很糟糕。嗯,我不想说它糟糕,只是它不是为此设计的。它是为公路设计的,所以它才如此出色。有很多快速的汽车,它们是将赛车改装成公路用车。你实际上不想要一辆公路赛车。一辆公路赛车很烦人。它太硬了。太吵了。太不舒服了。你实际上不能开着它去公路旅行。

所以开着它在普通公路上感觉很好?

完全,完全。

你当然总是遵守限速?

总是。这就是我喜欢在西班牙拥有这辆车的原因,因为他们稍微放松一些。并非完全放松,但比很多地方都要放松。在丹麦,我没跟你开玩笑,如果你在高速公路上行驶的速度超过限速的两倍,他们就会没收你的车并保管。你拿不回来了。他们甚至不在乎那是你的车还是不是。比如如果你借了我的车,你超速两倍,它就没了。所以他们不在西班牙这样做。我的意思是,在德国高速公路以外的大多数地方,如果你超速两倍,他们就会生气。出于各种公平的原因,我并不是说你应该开得快得多。但有些特殊的道路,你可以尽情驰骋,而且没有人处于危险之中。那是一种令人难以置信的感觉。而且我认为其中一些限速确实有点愚蠢。我不是凭空说的。在德国,有辉煌的高速公路。在高速公路上,有很多路段没有速度限制。他们对无速度限制的高速公路非常执着,这顺便说一句,对德国人来说非常奇怪。他们通常喜欢规则。他们通常非常精确。然后他们有这个辉煌的东西叫做高速公路。几年前有一个很好的案例,一个人开着一辆布加迪·凯龙;在高速公路上以每小时 400 公里的速度行驶,他把它录下来发到了 YouTube 上,然后有人起诉了他。因为即使他们没有速度限制,他们也有规定你不能鲁莽驾驶。他赢了官司。他没有鲁莽驾驶。他只是开得非常非常快。我曾几次开过高速公路。我和我妻子在 2009 年进行了一次欧洲公路旅行,我租了一辆兰博基尼盖拉多。我们开到了每小时 200 英里。我以前在赛道上开过每小时 200 英里或接近的速度。那感觉是一回事。在公共道路上行驶,每小时 200 英里感觉非常非常快。

吓人?

实际上有点吓人,是的。因为你一直在想,在赛道上,你认识路,你认识路面。你通常可以走一遍赛道。你知道是否有凹陷。在公共道路上,你不知道是否突然有坑洼。德国高速公路上应该没有坑洼。但感觉有点吓人,但也令人兴奋。速度本身就非常有趣。我不知道我带出去的任何人开快车。嗯,实际上我知道有几个人。我带出去的大多数人在快车里都会咧嘴笑。人们在高速行驶时会咧嘴笑,这是人类的反应。

你知道你最快开到多少吗?

我可能是在勒芒,我认为当时 LMP2 赛车达到了最大功率,有 600 马力,而且轮胎非常粘,我们开到了每小时 340 公里,也就是略高于每小时 200 英里。略高于每小时 200 英里。那确实感觉很快。速度很有趣,比如从每小时 150 英里到 160 英里,感觉并没有太大区别,那 10 英里/小时。但从每小时 190 英里到 200 英里,感觉速度快得离谱,而作为百分比变化,实际上比从 150 英里到 160 英里要小。但一旦你达到那个极限,就会有一种指数增长的感觉,它完全是另一个层次。

是的,因为对我来说,比如每小时 110、120 英里感觉很快。200 英里?那太疯狂了。

确实很疯狂。

我得问问你的编程设置的细节,IDE,所有那些东西。让我们描绘一下完美的编程设置。你有一个你喜欢的编程设置吗?你很灵活吗?比如有多少显示器?什么键盘?什么椅子?什么桌子?

有趣的是,如果你问我,让我想想,一年半前,我会给你和过去 20 年来我给任何人的答案一样。我想要一台 Mac。我喜欢 Magic Keyboard。我喜欢单显示器。苹果生产一款很棒的 6K 32 英寸 XDR 显示器,我至今还没找到有人能超越它,我仍然在使用它,尽管我不再使用苹果电脑了。我仍然使用他们的显示器,因为它太棒了。但我一直是一个单显示器的人。我喜欢大屏幕,但我不想要多个屏幕。我从来没有发现这真的适合我的感知。我只想专注于一件事。我不想让所有东西都到处都是。我一直使用多个虚拟桌面,并且能够在这两者之间切换。但我今天的设置是 Linux。我大约一年前改用了 Linux,因为我终于受够了苹果,再也无法忍受了。然后我使用一款低调的机械键盘,名为 Lofree Flow84,这是我听过的声音最美妙的键盘。我知道有很多机械键盘的鉴赏家可能会对此提出异议。这太薄了,或者太响了,或者太咔哒了,或者别的什么。但对我来说,Lofree Flow84 是一种我甚至不知道存在的喜悦。这很有趣,因为我的意思是,我编程已经很久了。机械键盘已经存在了很长时间。而且键盘,当你这样看它时,它看起来很普通,它看起来并不奢华。但你按下按键时获得的触觉感觉,你听到按键敲击键盘时的咔哒声。这真是太棒了。我真后悔自己一直被困在苹果的泡沫里这么久,以至于我甚至没有去市场上寻找这个。我知道机械键盘的存在,但坦率地说,我以为这只是一个极客的东西,只有比我更极客的真正极客才会关心。然后我走出了苹果的泡沫,突然我不得不重新寻找一切。我不得不找一个新的鼠标,找一个新的键盘,找一切。我想,“好吧,让我试试机械键盘。”我试了好几个。Keychron 是其中一个大品牌,我一点都不喜欢。我试了好几个其他键盘,然后我终于找到了这个键盘,然后我就想,“天使在歌唱。”你为什么在我生命中?我们程序员花这么多时间与这些按键互动。这确实很重要,以一种我没有完全欣赏的方式。我以前为 Apple Magic Keyboard 辩护,就像,“嘿,它很棒。它确实是一款很棒的键盘。而且我认为,就其本身而言,这种超低调、超短行程确实是一款不错的键盘。但一旦你尝试过长行程的机械键盘,就再也回不去了。

你确实需要记住,在很多方面,无论是在软件方面还是硬件方面,你都会花很多时间在电脑前。这是值得的……

这是值得投资的。

也值得探索,直到你找到让你“天使在歌唱”的东西,无论是什么。

没错。我实际上有点后悔,尤其是对这个该死的键盘。我的意思是,我本可以多年来一直听着这些美妙的咔哒声,但有时你必须真正走出舒适区,才能睁开眼睛看到其他东西的存在。我对 Linux 也有同样的感受。所以,我从 90 年代末开始就在服务器上使用 Linux 了。我们当时在 Linux 上运行服务器。我从未认真考虑过将其作为桌面选项。我以前从未直接自己运行过 Linux。我一直认为,“好吧,我想专注于编程。我没有时间处理所有这些配置文件和所有这些设置的麻烦等等。”而苹果已经足够接近了。它建立在 Unix 的基础上。我为什么要费心去 Linux 呢?这又是一件事。我需要尝试新事物,尝试别的东西,才能意识到除了苹果还有其他东西。同样,这不是因为我讨厌苹果。我认为他们仍然制造不错的电脑。我认为很多软件也相当不错。但我已经意识到,作为一名 Web 开发者,Linux 更好。Linux 就是更好。它更接近我部署的环境。工具实际上非常出色。而且如果你花点时间设置它,你就可以记录一个可重现的环境,我现在已经通过这个 Omakub 的概念或项目完成了,我可以在 30 分钟内设置好一个新的 Linux 机器。而且它是完美的。它不是好得不能再好。不是我还需要花两个小时。它是完美的,因为你可以将开发环境的所有方面都编码进去。而且我不知道。老实说,我甚至不知道 Linux 可以看起来那么好。如果你看看标准的 Ubuntu 或 Fedora 启动,我的意思是,它并不丑,但我会毫不犹豫地选择 Mac。你看看 Omakub,我的意思是,我当然有偏见,因为我根据自己的品味建造了它。但我看着它,心想,“这更好。这很美。”然后你看看那些真正的 Linux 设置,人们会疯狂地折腾一切,然后你会想,“哦,是的,我记得电脑曾经是这样的有趣,当有这种个性和这种设置时。它不仅仅是所有人都计划好的相同的东西。我认为这是苹果有时的一面,他们有非常强烈的意见,而且他们的意见非常好,他们有非常好的品味。它看起来很漂亮,而且看起来完全一样。而 Linux 有更多的多样性和更多的纹理和风味。有时也有烦恼和错误等等。但我现在运行 Linux。它是基于 Ubuntu 的,上面有 Omakub 的东西。Lofree 键盘。我使用罗技,它叫什么?MX 3 鼠标,我喜欢它握在手中的感觉。我不喜欢它的外观。我实际上一直是 Magic Mouse 的忠实粉丝,很长一段时间。我认为苹果将触控板集成到鼠标中是一个天才的想法,我一直使用它。我一直认为人们因为需要翻过来充电而抨击它很可笑。因为电池可以持续三个月,然后你充电半小时。我想,“这与我的品味非常契合。”如果某样东西很漂亮,我并不介意付出一点不便,而 Magic Mouse 很漂亮。但它在 Linux 上不起作用。所以我想到了别的东西。S3 很好,但我有时确实希望像 Magic Mouse 一样。那相当不错。

是的,Linux 在自定义一切、平铺、宏等方面确实非常出色。我也在 Windows 中使用 AutoHotKey 来做同样的事情,或者只是根据你的偏好自定义整个东西。

如果你是一名开发者,你应该学会用键盘控制你的环境。它更快,更流畅。我认为我 Omakub 设置中一个我真正欣赏的愚蠢之处在于,我可以在屏幕刷新所需的时间内,大约五毫秒,从一个虚拟桌面切换到另一个。即使在 Windows 上,你也无法做到如此流畅。你可以接近,但无法做到如此流畅。在 macOS 上,无论出于何种原因,苹果坚持在虚拟桌面之间切换时有一个令人恼火的动画,这让你不想这样做。你不想运行全屏应用程序,因为在虚拟桌面之间切换太麻烦了。你从一个出色的 Linux 设置中获得的即时性,简直是另一个层次。

是的,这似乎是一个微妙的事情,但你知道,毫秒和延迟之间的差异,例如切换虚拟桌面。我不知道,它改变了……

它改变了你使用电脑的方式。确实如此。

和 VR 类似,对吧?如果存在某种延迟,或者它会让你完全脱离其中。

而且很有趣的是,我实际上不得不看,我认为是 YouTube 上的 ThePrimeagen,当他展示他的设置时,我看到了他切换虚拟桌面的速度有多快。我一直在使用虚拟桌面,但我不喜欢切换太多,因为只是因为那个延迟,然后我想,“哦,你可以在 Linux 上做到这一点?哦,那很酷。”所以我运行它,然后我现在的首选编辑器是 Neovim。

哦,好的,好吧。我们没时间了。不,好吧,你做了很多年,你用了,是什么?TextMate。

是的,TextMate。

TextMate,是的。

那实际上是我离开苹果的主要障碍。其他一切我都想,“你知道吗?我可以应付。”但 TextMate 是,而且仍然是一款很棒的编辑器。我帮助它诞生到这个世界。程序员 Allan Odgaard 是我的一位好朋友,我们从一起搬电脑参加派对的日子起就认识了。他是一个狂热的 Mac 用户。在 2005 年,他正在编写这个编辑器,我帮助他进行项目管理,让他保持正轨,让他专注于发布一些东西。因为我真的很想要它。我想,这是我最后一个认为我永远不会更换的编辑器。

请原谅我不知道,但这个编辑器有多功能?

它功能非常丰富,但在某些方面它是一个图形驱动的编辑器。它很早就有了记录宏的方法,并且拥有复杂的语法高亮显示。它做了一些第一批功能,而且它是一种非常愉快的编辑体验。我认为如今很多人会使用 VS Code。VS Code 在某些方面与 TextMate 处于同一宇宙。而且实际上我认为它与原始的 TextMate 捆绑包兼容,原始的 TextMate 格式。所以它确实开辟了一条道路,但它也没有发展。现在很多人认为这是一个巨大的问题。他们说,“哦,它需要有更多的功能。它需要有所有这些东西。”我说,“我对这个文本编辑器很满意。”这根本没有改变。基本上,当 Allan 停止工作十多年后,我不需要别的东西了。因为正如我们最初的讨论,我不需要 IDE。我不需要编辑器为我写代码。我想要一个文本编辑器。我想要直接与字符交互。而 Neovim 在某些方面允许我做到这一点,甚至比 TextMate 更好。我爱 TextMate,但你知道 Vi。一旦你学会了命令,而且听起来,我有时觉得 Vi 的粉丝们夸大了学习难度,因为这让他们显得更厉害,因为他们能够做到。它并没有那么难。而且我认为,学习足够的组合招式来达到“哇,我在任何其他编辑器里都做不到”的程度,并不需要太长时间。

你花了多长时间?顺便说一下,我不知道,我还没有。哦,我知道,理智上。但就像对待孩子一样,我还没有完全投入进去。我还没有用过 Vim。

你有一个惊喜。嗯,我大约在一年半前切换的,花了三天时间。我有三天时间在咒骂,我觉得它太糟糕了,永远不会成功。然后我花了三天时间在烦恼,而下周我就觉得,“这太棒了。我哪儿也不去了。”但大约 20 年前,也就是 2000 年代初,我也曾有过一点优势。我尝试了 Vim 大约一个夏天,但没有成功。我当时不知道为什么不喜欢它。但 Neovim 真的很好。Neovim 的关键在于认识到你不需要自己构建整个编辑器。有很多 Neovim 的狂热者会说,“这是如何从头开始编写配置文件的。”在 17 集里,这需要三个星期。啊,我没那么在意。我喜欢一个很棒的编辑器。我喜欢稍微定制一下,但不是太多。所以你必须将 Neovim 与 LazyVim 配对。Lazyvim.org 是 Neovim 的一个发行版,它能让你开箱即用地获得出色的编辑器体验,而无需繁琐的操作。

荒谬的问题,我们谈论了很多编程语言。你告诉我们你多么喜欢 JavaScript。它是你第二喜欢的编程语言。那么 TypeScript 会是第三名吗?

TypeScript 甚至不在这个宇宙中。我讨厌 TypeScript 的程度和我喜欢 JavaScript 的程度一样。

所以你讨厌什么,哦,天哪,我没聪明到能理解其中的数学。好吧,在我问其他编程语言之前,如果你能把你的 TypeScript 仇恨浓缩成人类可以理解的东西,那理由是什么?

JavaScript 在某些方面与 Ruby 的元编程很相似。而 TypeScript 只是把这复杂化到了令人抓狂的程度,当你试图写那种代码时。即使你试图写普通代码,那些喜欢它的人从中获得的好处,比如自动完成,对我来说都不重要。我不关心自动完成,因为我没有使用 IDE。现在我明白这是它与众不同的原因之一,为什么。我没有看到好处。我只看到成本。我看到额外的输入。我看到有时你必须做的类型体操,以及很多人放弃并直接使用 any,对吧?就像他们实际上并不使用类型系统,因为它太令人沮丧了。所以我只感受到了 TypeScript 的沮丧以及 TypeScript 在代码中的混淆,它没有给我带来任何回报。再次,我明白有回报。我不需要回报。所以就我的情况而言,我不想做这种权衡,我也不想采用一种语言,它本质上是一种动态语言,就像 Ruby 一样,然后把它变成一种假装是静态类型的语言。我觉得这在智力上是侮辱性的。

你认为它会,你认为它应该死 TypeScript 吗?

我不想剥夺别人的享受。所以如果你喜欢 TypeScript,那就尽情享受吧。如果你使用 TypeScript 是因为你认为这是专业程序员应该做的事情,那么我允许你,你不必使用 TypeScript。

像你这样才华横溢的程序员,DHH 在说垃圾话,这真是太令人愉快了。这就像我生命中最喜欢的事情之一。如果你在和初学者说话,每个人都应该学习的前三门编程语言是什么?

我百分之百会从 Ruby 开始。它对初学者来说就像魔法,在理解核心方面……

关于条件和循环以及其他等等的概念,因为这使得它非常容易。即使你只是在制作一个向终端输出的 shell 程序,在 Ruby 中运行 hello-world 基本上就是 puts,P-U-T-S,空格,开始引号,hello world,结束引号,你就完成了,对吧?没有多余的东西。没有需要包装它的东西。有其他语言也这样做,尤其是 Perl 或 Python 会相当相似。但 Go 不会,Java 也不会。有很多其他语言有更多的仪式和样板代码。Ruby 没有这些。所以它是一种很棒的入门语言。有一本书叫《Learn to Program》,作者是 Pine,它基本上使用 Ruby 来教授基本的编程原理,我看到很多人强烈推荐。所以那是一种很棒的语言。- [Lex] 你会多快转向 Rails?- 这取决于你想做什么。如果你想构建 Web 应用程序,就立即转向 Rails。学习 Ruby 和 Rails,因为我认为真正有助于掌握编程的是构建你想要的程序,对吧?如果你只是在抽象地学习它,就很难激励自己真正去做。嗯,有些人学习语言只是为了好玩。大多数人不是。大多数人学习它是因为他们有一个使命。他们想构建一个程序。他们想成为一名程序员。所以你必须用它来做一些真实的事情。而且我实际上发现,通过这种方式学习编程也更容易,因为它驱动了你的学习过程。你不能一下子学完所有东西。你不能只是坐下来阅读语言规范,然后说,哦,就像 Neo 一样。我现在会功夫了。我现在会 Ruby 了。它不会那样下载。你实际上必须在真实的程序中愤怒地敲出来。- 是的,是的,当然。- 所以我会从那里开始。但第二,我可能会选择 JavaScript。因为如果你想处理 Web,JavaScript 就是你需要知道的语言。而 Web 是有史以来最伟大的应用程序平台,如果你正在制作商业软件、协作软件、所有这些东西。如果你正在制作电子游戏,你应该去学习 C++ 或 C 或其他类似的东西。但如果你在 Web 应用程序领域,你就必须学习 JavaScript。无论你还学什么,你都必须学习 JavaScript。- 所以如果你正在学习 Ruby,Ruby 在编程概念方面缺少什么,让你需要其他语言?- 我不知道是否有任何概念缺失,但它没有构建 3D 游戏引擎所需的那些速度或低级内存访问。没有人会用 Ruby 来构建那个。在 Web 技术方面,你可以用 Ruby 构建相当低级的代码。但总有一天,你会达到极限,你应该使用其他东西。我不是一个只推荐 Ruby 做所有事情的人。一旦你达到了 Web 应用程序所涉及的抽象级别,Ruby 就非常棒了。但如果你正在编写,例如,HTTP 代理,Go,它非常适合。我们最近在公司为各种原因编写了相当多的 HTTP 代理,包括我们的云迁移等等。和我一起工作的程序员之一 Kevin,他用 Go 编写了所有这些。Go 拥有原语,并且拥有出色的性能和速度来做好这一点。我强烈推荐它。如果你正在编写一个通用的 HTTP 代理,就用 Go 来做。它是一种很棒的语言。不要用 Go 来编写你的业务逻辑。我知道有人这样做,但我看不出有什么意义。- 那么你会说这三个,Go、Ruby 加 Rails、JavaScript?- 是的,如果你有兴趣处理 Web,我会选择这三个。Go、Ruby 和 JavaScript。- Go、Ruby 和 JavaScript,好的。函数式语言?- 有人在谈论 Ocaml。- 他们总是会出现。这一定是一种 OCaml 工业综合症之类的。但他们总是会提到 OCaml。- 我很喜欢有如此热爱函数式语言的人。那些人不是我。我一点也不在乎。就像我关心函数式原理,当它们在孤立的情况下帮助我,而那里就是比其他一切都好。但本质上,我是一个面向对象的家伙。我就是这样思考程序的。我喜欢这样思考程序。我就是这样将一个大的问题空间分解成一个领域语言。对象是我的最爱。- 是的,我也是。所以我用 Lisp 编写了很多用于人工智能应用的程序,用于基础的。比如 Othello、国际象棋引擎之类的东西。我确实尝试过 OCaml,只是为了强迫自己编写一个非常基础的生命游戏。一个小的模拟。它更……你知道,Lisp 就是到处都是括号。它实际上一点也不可读。- 这就是我用 Lisp 遇到的问题。- OCaml 非常直观,非常易读。它很棒。- 我真的应该在某个时候学习一门这样的语言。我已经编程很久了,我还没有真正用一门完全函数式编程语言做过任何严肃的事情,这有点令人尴尬。- 是的,但我必须弄清楚,我敢肯定有答案。我能做什么对我来说是有用的,而且我真的想去构建?- 是的,是的,这是我的问题。- 函数式语言更适合。- 没错。- 因为我真的想好好体验这门语言。- [DHH] 没错。- 是的,因为我仍然,是的。在这个阶段,我是一个非常面向对象的思维。- 是的,这也是我的问题。我不太关心计算机科学中的这些低级问题。我关心的是高级问题。我关心的是编写软件。我关心的是与 Web 应用程序和业务逻辑非常契合的抽象层。我已经接受了这一点。即使,正如我们谈到的,当我还是个孩子的时候,我真的很想成为一名游戏程序员。然后我看到了编写碰撞检测引擎需要什么。我心想,是的,那根本不是我。我永远不会喜欢向量矩阵操作或任何这类东西。这太多的数学了,我更像是一个写作的人,而不是一个数学的人。- 我觉得,就像你今天说话的方式一样,你有一种诗意的文学式的编程方法。- 是的。- 是的。- 这很有趣,这实际上是完全正确的。我十年前在 RailsConf 上做过一个主题演讲,我称自己为软件作家。我的意思是,我不是第一个说软件作家这个词长期以来一直存在于人们的口语中。但大多数程序员在试图认真对待时所采用的现代身份是软件工程师。我拒绝这个标签。我不是工程师。偶尔我也会涉足一些工程方面的工作,但绝大多数时候,我是一名软件作家。我为人类消费和我的个人喜悦而编写软件。我之所以能做到这一点,是因为我使用像 Ruby 这样的高级语言,处理协作软件和待办事项列表以及所有其他东西。同样,如果我试图将我的才能应用于编写 3D 游戏引擎,不,那不是正确的思维方式。那不是正确的身份。但我发现软件工程师的身份有点过于扁平化了,我想我们应该有软件作家和软件数学家,例如。然后这些实际上比工程师更能丰富地描述你正在工作的抽象级别。- 是的,而且我认为如果人工智能越来越成功,我认为我们将越来越需要软件作家技能。因为我觉得那是那个领域,因为它不是作家。你将不得不做软件。你将不得不成为一个计算机人。但有一个更……我不知道,我只是不想浪漫化它,但它更具诗意,更具文学性。它更像是写一篇好的博客文章,而不是……- 我实际上希望人工智能在写作方面有更高的标准。我觉得它能接受我潦草、不完整的句子,这有点冒犯。我希望 AI 有一个严格模式,它会拍我的手指。它只是输入关键词,然后说出正确的语言,进行发音,进行标点符号,因为我喜欢那样。我喜欢精心打造一个恰到好处的句子,它没有被稀释,没有肉,没有个性。它简洁。它不至于过于华丽。它恰到好处,对我来说,写作阶段就是令人上瘾的。而且我发现,当编程达到最佳状态时,它几乎等同于那个。你还必须解决一个问题。你不仅仅是在传达一个解决方案。你必须弄清楚你想说什么,但写作也有这个。我写一篇博客文章的时候,一半的时间我不知道我到底会用什么论点。它们是在写作过程中形成的。软件写作也是如此。你知道大致你想解决什么样的问题。你不知道具体要怎么解决。当你开始打字时,解决方案就会出现。- 而且,据我所知,你和 Jason 正在写一本新书。它还处于那个主题的早期阶段。我想他说,他在推特上说,这本书的标题大概是,我们事先不知道我们在做什么,之类的。那种主题。然后你一边做一边弄清楚。- 这是其中的很大一部分。试图让更多的人有信心相信自己的直觉和自己的感觉,并意识到培养你胃里的超级计算机实际上是一项职业生涯的工作。而且你不应该因为过度……或者甚至不复杂,而是因为分析,因为智力而放弃这些感觉。很多时候,当我们回顾我们不得不做出的重大决定时,它们都来自于直觉,你无法完全解释,为什么我认为这是对的?嗯,因为我在这行干了 20 年了,我见过很多事情,我跟很多人聊过,这些都在潜移默化地变成正确的答案。很多人对此持怀疑态度,或者无法信任,因为他们觉得他们无法理性地解释。我们为什么要这样做?嗯,因为我就是这么想的,该死的。作为一个自力更生、独立的创始人,不欠别人生意,也不必产生回报,这是一种巨大的特权。因为我觉得很多真正的东西会在你试图向别人解释你为什么这样做,你为什么做这些决定时悄悄溜走。如果你没有要回答的人,你就可以自由地跟随你的直觉。这是一种非常令人愉快的工作方式。而且它也常常是正确的工作方式。你的直觉知道很多,虽然你无法解释,但它通常是准确的。- 是的,必须制定计划可能会让人瘫痪。我经常,我的意思是,我想有不同的大脑。首先,我迫不及待想读那本书,如果它真的出版的话。我经常觉得,在我生活中做的一些更有趣的事情,我事先真的不知道我在做什么。而且我认为我周围有很多关心我的人,他们真的希望我知道我在做什么。他们会说,计划是什么?你为什么要去做这件疯狂的事?如果我必须等到有计划,我就不会去做了。他们在这方面有不同的思维方式。有些人确实是计划者,这也许能激励他们。我认为大多数创造性的追求,大多数真正有趣、最新颖的追求都是这样的,你必须先迈出一步,然后一边做一边弄清楚。- 我在《Rework》中最喜欢的文章是最后一篇,标题是“灵感是会消逝的”。我认为这很好地概括了这一点,如果你花时间制定详细的计划,当你完成时,你可能已经失去了灵感。如果你在那一刻跟随灵感,相信你的直觉,相信你自己的能力,你会弄清楚的,你会得到更多。你会踏上一次你否则不会踏上的冒险。无论是商业决策还是生活决策,你都必须抓住灵感。有一套很棒的儿童读物,是一位日本作家写的,关于追逐一个想法并试图抓住它,它被精美地描绘成一个漂浮在周围的想法,你需要抓住并抓住它。我认为这很好地捕捉了灵感会消逝的概念,它会消失。如果你只是把它放回架子上说,嗯,我必须对此勤奋。我必须制定一个计划。你可能会用完,然后就没有动力继续下去了。- 我必须问关于开源的问题。要运行一个成功的开源项目需要什么?你已经谈过这个问题了。开源是民主的,这是一个误解。它实际上是精英制的。这是一个很棒的说法。所以通常还有一个仁慈的独裁者在顶端。所以你能谈谈吗?你自己也成功地运行过开源项目,并且自己也是一个仁慈的独裁者。- 这里会有一些有偏见的证据,但我……- 但为什么君主制是最好的。- 太棒了。我们绝对应该有独裁者,他们应该控制一切,尤其是当独裁者是我的时候。现在,嗯,我认为我早就学到了一点,在开源中快速耗尽精力的方法是将其视为一项业务,就像你的用户是客户一样,就像他们对你的时间和你的注意力以及你的方向拥有合法性的主张一样。因为我几乎立即就遇到了这个问题,当时是 Ruby on Rails。一旦它发布了,就有无数人对我想把它带向何方有各种各样的意见。而且不仅仅是意见,而是实际的要求。除非你实现 Oracle 数据库自适应,否则它将永远是一个玩具。实际上,正是这个确切的要求促使我在早期的一次 Rails 会议上放了一张幻灯片,上面写着“去你的”。- [Lex] 是的,我看到了。- 我不会按你们说的做。我在这里是作为礼物的赠予者。我分享的是我自己的时间、自己的意愿写下的代码。你不需要说谢谢。我的意思是,如果你说了,那会很好。你可以拿走代码,做任何你想做的事情。如果你愿意,你可以贡献回来,但你不能告诉我该做什么,该去哪里,该怎么做。我不是供应商。这是开源用户偶尔会遇到的一个根本性误解,因为他们习惯于从非常关心他们业务的公司购买软件。我关心人们使用我的软件。我觉得这很棒,但我们没有交易关系。当我告诉你该做什么时,我得不到任何回报,除了烦恼。我也不想要,所以你可以留着。所以我的开源理念从一开始就是,我必须主要为自己做这件事。我喜欢别人在我的开源项目中找到用途。这不是我的主要动机。我不是主要为别人做的。我主要是为我自己和我的目标而做的,因为正如亚当·斯密所说,我们期待每天的肉不是出于屠夫的仁慈。而是出于他的自身利益。而且我实际上发现这是一个美丽的观点,当我们在追求自身利益时,我们的评论就会增加价值。尤其是在开源领域。这也是为什么我拒绝“开源正处于某种危机”的说法。说存在资金危机,我们必须花更多钱。不,我们不必。开源从未像现在这样好过。开源控制的软件领域比现在任何时候都要多。根本不存在危机。一些制作开源的人和许多使用开源的人存在误解。开源主要是像商业软件。你购买的东西,然后你可以提出要求。而且客户永远是对的。客户不总是对的。即使在商业领域,在开源领域也并非如此。在开源领域,客户,就其本身而言,是礼物的接收者。我们正在进行一场礼物交换。我来给你我的代码。如果你喜欢,你可以使用它。如果你有一些代码符合我的发展方向,我很乐意收回这些礼物。我们可以这样继续交易。我给你更多的礼物。你给我一些你的礼物。我们一起把所有礼物汇集起来,这样新来的人就能得到一座礼物山。这就是开源的神奇之处,当我们都在追求自身利益时,它增加了共同体的总价值。所以我正在为 Rails 构建我需要的东西。你知道吗?你想让我这样做。你不想让我代表别人构建我不需要的东西,因为我会做得一团糟。当我能通过自己的使用来评估软件质量时,我就会构建出更好的软件。我需要这个功能。我将构建一个好的版本,我将只构建足够我使用的。所以我不会让它臃肿。我不是在试图吸引客户。我不是在寻找什么角度。我只是在构建我需要的东西。如果你带着这种心态进入开源领域,即你为自己而建,其他一切都是额外的,我认为你具备了走下去的所有要素。我认为那些在开源中精疲力竭的人,是因为他们抱着这样的想法:“我付出了这么多礼物,我其实自己并不需要它们,但我希望别人需要,也许他们也会给我一些钱。”这是一个注定失败的提议。基本上从来没成功过。如果你想为你的软件赚钱,你就应该卖掉它。我们有一个非常好的商业软件模式,人们可以制作那种软件,然后出售它。但我发现很多混乱,姑且礼貌地说,在开源贡献者中,他们想两全其美。他们喜欢开源的工作方式。他们甚至可能喜欢开源带来的地位,但他们也希望通过制作开源来谋生。因此,他们偶尔会遇到那种感觉自己不被赏识的员工会产生的那种不满,当别人没有足够努力来认可他们伟大的礼物时。- 然后他们可能会离开。我希望我对运行这些项目的个人的心态有更多的了解,比如他们是否感到悲伤,或者他们是否需要更多的钱,或者他们是否……这真是一个黑暗的盒子。- 它可以是。- 我的意思是,当然有一些沟通,但我遗憾地看到太多次他们就这样离开了。- 是的,而且我认为这实际上也是开源之美的一部分。- 就是离开。- 你没有义务永远做这个代码。你只需要做你愿意做的事情。这基本上是你自己的义务。- 但是,我知道,好吧……所以你可能会批评一些反对意见。你写了一篇关于“直到互联网尽头”的博客文章,关于 ta-da list。有一个美丽的文章,你找到了一个很好的平衡。但我不知道,你用你创造的东西给人们带来了很多快乐。这不是一种义务,但照顾你创造的东西确实有一种美。是的,而且不要忘记。我认为,开源创作者没有看到足够多的,我的意思是,有多少人的生活因此而变得更好。有一些软件我只是默默地经常使用。它们给我的生活带来了快乐,我希望我能很好地传达这一点。有捐赠的方式,但它效率不高。通常很难捐赠。- 是的。对一些人来说,这变得更容易了。GitHub 捐赠是一种方式。我给几个人捐赠,即使我不喜欢这种模式。我也接受我们可以有多种模式。我接受我可以出于一套动机做开源,而其他人可以出于其他动机做开源。我们不必都以同样的方式行事。但我确实想反驳“除非我们都开始为开源付费,否则开源就处于某种危机之中”的误解。那种模式已经存在了。那就是商业软件。它运作得非常好,并且建立了很多很棒的公司。期望也非常明确。我付你这么多钱,我得到这个软件。一旦你开始将金钱混入开源,事情就会变得非常混乱。很多时候是由于这些不匹配的期望。如果你觉得你是一个饥饿的艺术家,一个开源开发者,并且你理应得到 X 金钱,因为你的软件很受欢迎,你是在自欺欺人,你需要停止。回到正轨,认识到你正在向世界贡献礼物。如果你收到金钱补偿,好吧,那是一笔奖金。但如果你需要金钱补偿,你就收费卖软件,或者去一家软件公司工作,他们会雇你做开源。有很多这样的公司。事实上,这可能是当今世界上开源软件开发的主要模式。商业公司制作他们自己需要的开源软件,然后将其贡献回来。- 所以我很高兴你在这里划了些硬线。这是一个很好的时机来提出我认为是,也许是有史以来最伟大的开源项目之一,WordPress。你在 10 月 24 日谈到了 WordPress 的创始人 Matt Mullenweg 在一篇名为“开源皇室和疯狂的国王”的博客文章中发生的一些事情。这是一篇非常好的博客文章,关于“终身仁慈独裁者”这个开源项目模式的想法。然后基本含义是,Matt 作为 WordPress 的 BDFL,在他的与 WP Engine 的斗争中有点迷失了方向。我也应该说,我真的很喜欢 WordPress。它给我带来了快乐。我认为它是一个真正的……它是开源可能是什么的灯塔。我认为它让互联网变得更好。它让很多人创建了很棒的网站。而且我也认为,现在你可能不同意这一点,但从我看到的一切来看,WP Engine 让我感到不适。我认为他们不是这里的“好人”。我不喜欢。我理解这种沮丧。我理解这一切,但我不认为这可以原谅这种行为。这有点……这与你刚才所说的有点相反,那就是当你有一个如此庞大的开源项目时,就像当你是一个如此庞大的王国的国王时,你就有了一点责任。总之,你能谈谈你对 Matt 的同情以及你的批评,也许描绘一条他和他可以再次获胜的道路吗?- 首先,我同意你所说的 WordPress 的存在是一件多么美妙的事情。世界上或整个世界中,没有多少项目对互联网的影响能像 WordPress 那样大。他为这项工作赢得了无数赞誉。所以这是我的参与,基本上是我的前提。你知道吗?我对 Matt 用 WordPress 建立的一切感到无比尊重。整个生态系统围绕它建立起来的一切。这是一个真正的奇迹。但有一些原则比我对相关人物的个人同情心更大。我同意。与 WP Engine 相关的 Silver Lake 私募股权公司不是我的天然盟友。我不是私募股权公司与 VP Engine 进行某种游戏的天然盟友。那不是我的兴趣所在。我的兴趣基本上是一套原则。原则是,如果你发布了开源的东西,人们就可以自由地按他们认为合适的方式使用它。并且他们可以自由地将代码、资源或金钱捐赠回社区,按他们认为合适的方式。你可能不同意他们是否做得足够,是否应该做得更多,但你不能在你把免费软件的礼物送给世界之后,然后说,现在你使用了这份礼物,你实际上欠我一大笔生意,因为你用我免费给你的东西太成功了。你不能拿回礼物。这就是为什么我们有开源许可证。它们精确地规定了双方的义务。开源的使用者不能要求开源的制作者做什么,怎么做。而开源的制作者也不能突然带着赎金通知用户说,实际上你欠我很多使用费。我 100% 对这种互动过敏。而且我认为 Matt,不幸的是,无论出于何种原因,都过于沉迷于他认为自己应得的东西,以至于他未能意识到他正在摧毁什么。WordPress 和 Automatic 已经赚了很多钱。这是 WordPress 的奇妙之处。这是一个产生数亿美元的项目,而 Matt 觉得他没有得到足够。这不是一个好论点,兄弟。你不能违反这些开源许可证的精神和文字,然后开始发出要求信,即使是给那些不太值得同情的人。这涉及到我对开源的总体解读的根源。GPL 是一个特殊的许可证,在某些情况下,它实际上要求使用它的人贡献代码。我从来不喜欢 GPL。如果你不想给我,我也不想要你那糟糕的代码。我能用那做什么?你丢弃的代码……我完全不赞同斯托尔曼的这一愿景。我喜欢 MIT 许可证。对我来说,这是完美的许可证,因为它非常简短。我认为是两段,三段。非常简短,基本上说,这是些软件。它不附带任何保修。你不能起诉我。你不能要求任何东西,但你可以随心所欲地做。祝你好运。在我看来,这是完美的开源互动。而且必须遵守该许可证。这些许可证,总的来说,即使是 GPL,即使我不喜欢它,我们也必须遵守它们。因为如果我们只是在觉得有点不公平的时候,就轻易地抛开这些许可证,我们就失去了一切。我们失去了允许开源蓬勃发展并成为商业中不可或缺的一部分的整个框架。我的意思是,当开源最初站稳脚跟时,它与商业软件处于战争状态。斯托尔曼一直与商业软件处于战争状态。比尔·盖茨也长期以来一直与开源处于战争状态。开源许可证和它们提供的清晰度使我们能够结束这场战争。今天,商业软件和开源软件可以和平共处。我制作商业软件。我卖 Basecamp,我卖 HEY,然后我还制作了很多开源软件,我免费赠送。如果我们开始违反这些合同,那就行不通了。没有一家商业公司会说,“让我基于这个开源项目来构建我的下一个项目。如果我还要承担一个疯狂的制造者七年后出现并要求我支付 5000 万美元的责任。”那不是一个有利于商业合作或任何其他事情的环境。而且这基本上是错误的。我认为有一个关于这方面实际结果的分析,我认为这些结果很糟糕。还有一个关于伦理的论点。这是不对的。你不能事后出现并要求什么。在我看来,这与我们之前谈到的苹果公司的情况没什么两样。苹果公司只是出现,觉得他们有权获得 30% 的业务。不,那不对。那不公平。所以我认为 Matt 不幸的是,无论出于何种原因,都过于纠结于他认为自己遭受的不公,因为 VP Engine 在制造一款好产品并且没有给予足够的反馈方面赚了很多钱,而在 Matt 看来,这太糟糕了。- 我认为,也许我读得太多了,但可能还有一些个人因素,他们不仅没有给予足够,而且可能含蓄地承诺他们会给予,然后在他的脑海中以那种方式利用他,就像人际互动一样。然后你就会在人际关系上感到沮丧,而忘记了更大的伦理问题。就像一个人一直说,你知道,承诺你会做某事。然后你醒来一天,一年或两年后,等等,我一直被骗了,我甚至不知道这是否与钱有关。- 我也会生气。当人们让你失望时,生气是完全可以的。但这并不能证明推翻几十年的开源许可证以及我们围绕它建立的实际判例法是合理的。这就是我选择介入的原因,因为我喜欢 WordPress。我不使用 WordPress。我不是那个社区的一员。我实际上没有在这场战斗中站队。如果说有什么偏向的话,那就是偏向 Matt,因为他也是一位 BDFL。我希望看到他在这方面做得好。但我也认为这里有一些原则比我个人感情更重要。我不想让 Rails 因为它是开源的,以及公司是否可以依赖它并以此为基础建立业务而沾染污点。因为,也许有一天我会变成 Matt,我会变成 Matt King,然后带着勒索信出现。不,去他妈的。我们在这里要保护的东西太多了。这里有太多东西比你个人的恩怨或你认为自己应得的抱怨更重要。- 你会推荐什么?你认为他应该怎么做,才能挽回局面,才能治愈?- 决定,这是奇怪的事情。他可以决定放弃。对于有驱动力、有野心的人来说,接受自己错了,放弃并放下武器是非常非常困难的。我早期曾希望这是可能的。我还没有看到任何证据表明 Matt 对此感兴趣,我对此深感遗憾,但那是他的权利。当他违反开源的精神和道德时,我将继续发声,但我希望他能接受这是一个非常糟糕的主意。他做了一个糟糕的赌注,我认为,我认为他认为他可以侥幸逃脱。他们会付钱,他可以施加压力。我的意思是,我知道那种诱惑。当你身处一个非常重要的项目的负责人位置时,你知道这会带来巨大的权力,而你确实需要极大的纪律来约束它,而不是在每一个你感到委屈的步骤都行使这种权力。在 Ruby on Rails 的 20 多年里,我感到委屈了无数次。我一直非常努力地不让那些……有时是琐碎的,有时是实质性的抱怨随着时间的推移而渗透到生态系统的基础中,并冒着毁掉一切的风险。- 作为 Rails 王国的国王,这些年来权力是否让你头昏眼花?- 我敢肯定。我的意思是,谁不会呢?- 你会在你的房间里踱步生气吗?- 我偶尔会。我惊叹于所建之物,所能实现之物。据我估计,有超过一百万个应用程序是用 Ruby on Rails 制作的,像 Shopify 和 GitHub 这样的公司以及无数其他公司都建立在我曾经开始的东西之上。这非常令人欣慰。但你真的必须小心不要闻自己的尾气太多。而且你必须同样小心,不要听那些讨厌你的人太多,也不要听那些超级粉丝太多,而是要根据你正在努力的目标的价值和原则,根据你自己的记分板来评估。我试图屏蔽掉这些,然后就说,嗯,我之所以在做 Rails,是因为我喜欢写 Ruby。我喜欢用 Ruby 来制作 Web 应用程序。这是我的北极星。我将继续这样做,我将继续分享我在此过程中发现的所有开源礼物,仅此而已。这已经足够了。我不需要从中得到所有东西。这有时就像那个认为我放弃了 Jira 或其他东西的人一样,而不是做 Basecamp,多年来有人问,为什么你不为 Rails 收费?我的意思是,你不知道有多少钱是通过 Rails 赚到的吗?如果我们只看 Shopify,它价值数十亿美元。我不是亿万富翁,那又怎样?我拥有的足够多了。我得到了我应得的份额。不过,我想说的是,我也足够内省,意识到如果它没有像它对我自己的生意那样成功,也许我会更容易受到诱惑。也许如果你看到别人在你工作的基础上建立了巨大的成功公司,而你却一贫如洗,你可能会被诱惑去对此感到有点恼火。我在 Rails 世界里也见过这种情况,有些人贡献了大量的工作,然后当他们觉得没有得到足够的回报时,就非常生气。我很幸运,Jason 和我建立的 Ruby on Rails 的生意非常成功。而且我赚到了我需要赚的钱,我不需要去追逐剩下的钱。- 但我们也应该明确,你这个位置上的许多人都在追逐金钱。追逐金钱并不难。基本上你拒绝了金钱。你做出了很多拒绝金钱的决定。- 也许吧,我也想到了马特这个例子。他可能认为有唾手可得的钱。而且并不那么容易,对吧?看起来是低垂的美元,结果却是一些非常酸的葡萄。结果他可能通过破坏整个 WordPress 的信任和生态系统,并在选择使用 WordPress 或其他东西的人们心中打上问号,从而摧毁了巨额财富。所以我经常想,当人们认为,你把钱留在了桌子上。首先,那又怎样?我不需要所有的钱。但其次,也许钱根本就不在桌子上。- 也许成本。即使你得到了钱,也许其他方面的成本,就像我们谈到的那样,会超过你可能得到的任何金钱。意思是,我认为你说过让你快乐的是心流和宁静。这两件事。非常,非常优美地表达了。而且,你知道,赚钱可能会给你带来经营更大事务的责任,这会带走你从……根本上来说,对你来说,心流意味着编程。然后宁静就像,我认为你还有一篇很棒的文章,关于“极乐是一种空闲的日程”。- 当我看到即将到来的一周,我发现我没有任何预定的会议,这很常见,或者也许我一天只有一个小时的会议。我对自己说,你知道吗?这本可以很容易地变得不同。我们可能经营着一个由数百人或数千人组成的公司,而我的整个日程表都会被其他人的注意力要求和时间填满,我会非常痛苦。我看着它,然后想,我还能要求什么?这是一种非常好的状态。我确实不是一直都有这个。在我职业生涯的早期,我确实有一种感觉,比如,我需要更多一点。更安全一点。我记得一项非常有趣的研究,一群研究人员问了一些赚了特定金额的人,他们需要多少钱才能感到安全?他们问那些净资产为一百万美元的人?你需要多少钱?可能需要两百万。两百万我就好了。然后他们问净资产为五百万的人,你需要多少?啊,十万,我需要十万。问那些有一千万的人,你需要多少?两万。每次人们都需要他们原来需求的两倍。我做了几次翻倍,直到我意识到,你知道吗?这太傻了。我已经达到了我希望达到的目标,而且是百万倍。那么还有什么可以追求的呢?现在这并不意味着如果更多的钱来到我这里,我会拒绝。当然不会。但这确实意味着我可以自由地设定其他事情的优先级。而且我也认为你意识到,正如金·凯瑞会说的,我希望每个人都能得到他们想要的所有钱,然后他们会意识到那不是答案。金钱可以解决很多问题和焦虑,然后它会产生一系列新的问题。而且它也触及不到人类体验的很大一部分。世界上充满了痛苦、焦虑、受伤的富人。世界上也充满了痛苦、焦虑的穷人,我宁愿做一个痛苦、焦虑的富人,也不愿做一个穷人。但它不是那种能解决一切问题的魔杖。而且,同样,这是那些无法用语言传达的见解之一,就像有了孩子一样。我从来无法说服一个不富有的人,财富不会解决他们所有的问题。- 你经常引用的一句我非常喜欢的名言是可可·香奈儿的名言:“生活中最好的东西是免费的。”而第二好的东西则非常非常昂贵。我想任务是专注于围绕自己最好的东西,比如家人和所有这些,而不要在意其他东西。- 我可以轻松地说你可以关心其他东西。只是要知道优先顺序。如果你有幸拥有一位你爱的伴侣,一些你喜爱的孩子,你已经赢得了大多数人类能够实现的最伟大的奖项。世界上大多数人,如果他们到了婚龄并且有孩子,如果你问他们什么最重要,他们都会说。无论贫富,他们都会这么说。当你追逐第二好的东西时,很容易忽视这一点。因为你知道吗?它们也很棒。我真的很喜欢帕加尼·宗达。那是一辆非常昂贵的车,如果我没有在生意上取得相当大的成功,我将无法获得它。所以我也不想否定它。有钱很有趣。它不像你想象的那么有趣,也不像你想象的那么持久。而这些其他东西,拥有一份你喜欢的职业和追求,能够以坚定的姿态承担负担,并且再次,带着一种意义感,这是不可思议的。拥有家人,拥有朋友,拥有爱好,拥有所有这些对世界上大多数人来说都是可用的东西,这就是胜利。这并不意味着你必须放弃你的野心,这并不意味着你不能争取更多,但这确实意味着如果你不意识到它不会以某种魔术般的、虚幻的方式让你完整,那将是愚蠢的。它真的不会。- 是什么让你对我们正在进行的这一切的未来感到乐观?人类文明。- 我觉得乐观比悲观更容易,因为我不知道哪种方式。所以如果我可以选择,为什么不选择相信它会成功呢?就像我们在想象中遭受的痛苦比在现实中遭受的更多。这是斯多葛主义的一句名言。而且我也认为我们有一种倾向,很多人类都有这种倾向,在面对未知事物时会感到悲观。例如,气候变化让很多人对未来感到焦虑和悲观。你什么都不知道。40 年前,我们认为问题是地球会变得太冷。我碰巧相信,地球正在变热,而且二氧化碳与此有关,这可能是正确的。我们是否有正确的措施及时解决它,如果这甚至可能的话,是完全不确定的,我们不知道。如果你确信世界将要完蛋,那么它就是。就在这里,在你今天的脑海里。气候变化可能会在 200 年后消灭这个物种,而不是明年。不是 10 年后。生活可能会变得更不愉快,可能会有更多负面影响,等等。是的,好吧,然后等到困难来临时再应对。不要提前承受。你通过四处走动而沮丧,这对地球有什么帮助?- 我认为我们今天的整个谈话也是一个迹象。只是两个人类在交谈。我们有数十亿人,我们身上有一些东西想要解决问题并建造酷的东西。所以我们将通过我们自己制造的麻烦来解决问题。这就是人类所做的。我们给自己制造麻烦,然后想出办法,建造火箭飞船来摆脱这些麻烦。有时火箭飞船会制造其他问题,比如核弹头,然后,我确信,我希望,想出避免这些问题的方法。然后会有纳米机器人,然后会有外星人来,纳米机器人和外星人之间会发生一场大规模的战争,这将把我们所有人类团结起来。- 有趣的是,只是为了回应你提到的一个观点,比如原子弹。当它第一次被发明时,很多人认为我们实际上已经终结了地球上的生命,对吧?或者也许是因为相互保证的毁灭,我们阻止了过去 80 年的第三次世界大战,让超级大国至少没有正面攻击对方,并将他们的战斗限制在代理人战争中。你知道吗?代理人战争并不好,但它们可能比核武器的第三次世界大战要好。所以很难在当下判断什么是真正的益处,什么是。而且我认为我们应该更加谦虚。我当然随着时间的推移变得更加谦虚,认为我知道事情会如何发展。我认为大流行病对很多人来说是一个巨大的时刻,当时有如此多的确定性,关于这个干预是否有效,那个干预是否无效。而大多数人都错了。当然,很多非常聪明的人,非常有资格的人,都完全、灾难性地错了。所以一点点智力上的谦逊,我回顾一下,然后说,你知道吗?我不是病毒学博士,我也不声称我好像看到了事情将如何发展。但那些真正专家的人,他们犯了很多错误。没有人知道任何事。我每天都提醒自己这一点。没有人知道任何事。我们无法预测一个月后的经济。我们无法预测一个月后的世界事务。世界太复杂了。- 是的,当我看了 Netflix 的纪录片《黑猩猩帝国》时,你知道,黑猩猩有一个等级制度,所有这些看起来都与我们人类惊人地相似。我们是最近的后代。所以这些专家,有些黑猩猩有博士学位,有些没有。有些非常强壮。有些是像 beta 男一样的。他们在奉承阿尔法。有很多有趣的动态在起作用,这与当今的地缘政治非常吻合。它们没有核武器,但它们的行为性质与我们相似。所以我认为我们几乎不知道发生了什么,但我确实认为有一种基本的合作意愿。一种基本的同情心,支撑着人类的精神,它就在那里。也许这只是我过于乐观。但如果确实如此,那么我们就会没事。- 能力肯定在那里。我们是否选择这种能力,谁知道呢,在什么情况下?我认为接受我们都有能力做到这两者,都能做出令人难以置信的慷慨和善良,也能做出残忍。我认为,荣格,他关于阴影的整个理论非常准确。我们内心都有这种能力,接受我们试图培养我们人性中更好的部分,而与之抗衡的是我们有时会表现出最糟糕的一面。- 我很兴奋地想知道接下来会发生什么。作为人类真是太棒了。我不想死。我有点想活一段时间,看看我们所做的所有酷事。我想看到的一件酷事是所有你创造的软件和你发的所有推文。你在 Twitter 上惹的所有麻烦。大卫,是的,我是一个巨大的粉丝,就像我说的。感谢你为世界所做的一切,感谢你激励了数百万开发者,其中之一就是我。感谢你这次精彩的谈话,兄弟。- 非常感谢你邀请我。- 感谢收听 DHH 的这次谈话。要支持这个播客,请查看描述中的赞助商,并考虑订阅此频道。现在,让我用 DHH 和 Jason Fried 的《Rework》中的一些话来结束。你所做的才重要,而不是你所想、所说或所计划的。感谢您的收听,希望下次再见。