Stack Overflow 从来就不是为新手设计的

原标题Stack Overflow Was Never Designed for Beginners

在 Stack Overflow 十周年之际,Jeff Atwood 与 Lex Fridman 谈谜题、领导力、Discourse,以及为什么一个软件团队的健康程度,取决于它改动一个词的速度有多快。

JAJeff Atwood嘉宾
频道
Lex Fridman Podcast
发布
2018年11月29日
视频
1:20:09
阅读
27 分钟
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

2018 年,Stack Overflow 迎来十岁生日,联合创始人 Jeff Atwood 与 Lex Fridman 对谈,解释了网站为何变得如此严格,他为何不再大量写代码,以及他为什么要打造 Discourse,好让社区真正拥有自己。他认为,程序员的驱动力来自那些可以用数据暴力破解的谜题;语言不过是更高层级的代码;而任何软件公司的脉搏,就是从“改掉这个词”到用户看到改动之间的时间。途中,他还讲到 Coding Horror 与一笔被拒绝的 8 万到 10 万美元报价之间的关系,感谢了 Joel Spolsky,并把投票、维基和声望拼接成一个“弗兰肯斯坦”式的系统;他还把机械键盘看作一种让生活值得过的、不必要的仪式。

  1. 1被问到是什么驱动大多数程序员时,Atwood 毫不犹豫地说:谜题。躲起来,死磕一个问题,让电脑跑上十亿次试验,直到数据堆起来给你答案。
  2. 2作为管理者,让他意外的反转是:语言也是代码。清楚地指挥别人做事,能让你完成的工作比自己写代码多得多。
  3. 3决定要靠把人一步步带过推理过程来落地。直接从“天上的火云”扔下一个结论会失败;展示目标、选项和取舍,通常能换来一句:我未必同意,但我明白你的出发点。
  4. 4Atwood 在十周年时的判断很直接:Stack Overflow 从来就不是为新手设计的。新手需要实时屏幕共享、聊天和练习场,而这个网站本来就不是为了提供这些而建的。
  5. 5衡量一家软件公司,看它把产品里的一个词改掉并上线要多久。这段时间就是它的心跳。两周是警告,一个月就基本等于死了。
  6. 6面前有选择时,挑那个会让你有点紧张的选项。它吓不到让你跳崖,却真正能让你成长。拒绝出售 Coding Horror,正是 Stack Overflow 得以出现的原因。
全文

按章节阅读整理后的全文

01

程序员被谜题驱动,而谜题可以用数据暴力破解

Lex Fridman 向这个全球最大编程社区的联合创始人抛出一个简单的问题:驱动大多数程序员的是什么?名声、财富、过程本身,还是归属感?Jeff Atwood 的回答很简短:谜题。他描述自己躲起来,死磕一个问题,直到它被逼出答案,几乎靠的是暴力破解。电脑快到足以把人类要花上一辈子的工作跑上几百万次,直到答案出现。

他和 Fridman 都认同,乐趣在于反复摆弄:经过挣扎,最终产出真正能用的东西。数据本身也是乐趣的一部分。大多数程序员写的那种天真的洗牌算法有一个严重缺陷,如果一个不够老练的程序员为赌场写洗牌程序,这个缺陷就尤其致命。发现它的方法不靠聪明。把洗牌跑上十亿次,然后看各个分桶。公平的洗牌应当让各种朝向的分布相等;天真的方法做不到。

蒙提霍尔问题(Monty Hall problem)也是同样的模式。三扇门,关于其中一扇门的信息,正确的选择总是换门——这个结果会把人吓一跳。写一个从不换门的程序,再写一个总是换门的程序,比较两边的分桶,你不用在算法上很聪明,就能看到答案。你无需从理论上去推导,可以用数据暴力破解。

02

语言就是代码;领导者的工作,是对问题保有热情

问到是什么激励他本人,Atwood 承认自己几乎不再写代码了。在 Discourse,他做的是管理工作,而他以前很看不起这种工作。他说,程序员把管理者看成自己什么都不做的人。后来出现了一个反转:语言就是代码。能够指挥别人,会让你完成比独自一人多得多的事。写代码是用形式化的语言告诉机器做什么;说话则是用自然语言告诉人做什么。本质是同一件事,只是抽象层级更高。

什么是好的领导者?首先是以身作则,成为你希望别人成为的样子。等你有了孩子,这会变得很累,因为他们会看你,哪怕是你自己已经不再留意的那些方面。世界上最难看清的人是你自己。你很容易评判别人,却对自己的行为有很大的偏见,往往比任何别人对自己都严苛得多。实际的问题是:你的行为,是否代表着你希望别人如何表现。很多领导者在这一点上搞砸了,传递出的却是相反的信号。

第二个特质是努力工作,但他指的不是耗尽时间的加班。他指的是对问题真正的热情,不一定是对你自己方案的热情。在 Discourse,问题是群体如何沟通,而不至于分崩离析,变成狼嚎一般的状态:恶意挑衅、残缺的句子,人们彼此伤害,而不是达成共识。对自己方案充满热情的人,被质疑时就会戒备。对问题充满热情的人,看到更好的答案出现时会兴奋。几天之内,你就能分辨出两者的区别。

03

把决定讲给人听,而不是从天上扔下来

Fridman 追问自我觉察。如果你看不见自己,你怎么知道哪些行为,包括你没有去做的事,在传递错误的信号?Atwood 把答案分成两部分。第一是流程反馈。Discourse 有三位联合创始人,他们在做决定之前会先把问题讨论清楚。如果一个社区的规则由一个人说了算,那很危险:这个人可能会有糟糕的一天,或者出点什么事,整个社区都会跟着他一起陷入困境。多人分享领导权、相互提供反馈,是更安全的设计。

第二是内心那个小小的声音:直觉、良心,肩上的天使和恶魔。大多数人想做对的事,也希望别人认为自己是好人。也许有少数反社会者不在乎,但对一个决定会让你有什么感受保持敏感,依然重要。Fridman 指出了其中的一个陷阱:对程序员来说,恶魔的声音常常太大。开发者,尤其是内向的人,往往过度自我批评。然而领导力仍然要求你推进那些人们可能会怀疑的决定。

应对之道是把人一步步带过决策过程。这就是博客和沟通的意义所在:语言是另一种代码,是“我得出这个结论所用的程序”。直接宣布决定是最终的,并不能令人满意。如果你说:我们一直在考虑这件事,这是发生的情况,这是我们的目标,这是可选的方案,我们认为这一个最好——得到的反应就完全不同。也许我并不完全同意,但我能理解你的出发点。这不是一个从天上火云里随意扔下来的裁决。如果人们仍然不同意,可能只是因为他们的目标不同,而不是说谁是坏人。

04

Stack Overflow 是投票、维基、博客和声望拼凑出来的怪物

Atwood 说,Stack Overflow 是一把非常专门的手术刀:面向程序员的、结构化的、维基式问答。他和 Joel Spolsky 一开始以为自己在做讨论区。很快他们意识到,他们做的是问答,是人类交流中一个很窄的子集。他们最初想纠正的错误,是 Experts Exchange:那里数据很好,体验却糟糕,让人觉得像在被二手车推销员纠缠。Atwood 把很多人已经不记得 Stack Overflow 所取代的那个东西,视为成功的标志。

与其说他们发明了一种新形式,不如说是把已经见过成效的东西缝合起来。投票和排序借鉴了 Digg 和 Reddit。维基式编辑,包括编辑别人的帖子,让答案能保持最新。博客式的归属感:这是我的声音,这是我知道的东西。还有声望体系,因为关于程序员动机的关键洞见,是同行的认可。来自老板的钱不会长久,而同行说“这个人真的懂行”,却会长久。Atwood 把最终的成果称为“弗兰肯斯坦”式的拼接,并且把这视为赞美。

随着时间推移,页面几乎容不下跑题的内容。答案应当回答问题、澄清问题,或者提供一种替代方案,因为在编程中通常会有五到十种做法。早期他们就发现,有些问题下面有数百个回答,这些其实不是问题。它们是讨论,是他们一开始允许、后来又禁止的东西:最喜欢的编程食物,最搞笑的编程漫画。他仍然喜欢的检验标准是:这是不是你在工作中真正遇到的问题。没有人会因为不知道最搞笑的编程漫画,而坐在办公桌前无法继续工作。

05

严格是手段,更好的结果才是目标

第二条规则关乎学习是如何发生的。Atwood 区分了偶然学习和有意学习:前者像 Reddit 式的随意浏览,你晃进来,学到树蛙能活三年——这个事实他马上承认是自己刚编的;后者则从一个问题出发,围绕它回填知识,哪怕是编译器理论,因为你需要那一小块理论才能让自己继续前进。Stack Overflow 只服务于后一种人。规则随着时间越来越严格,人们依然抱怨。他刚写过一篇十周年的文章,大意是“Stack Overflow 长大后想成为什么”,其中大部分篇幅都在解释,为什么这个网站对新人很苛刻。

声望本身就制造了张力。程序员看到有人因为一个笑话,或一幅他们甚至不是作者的漫画拿到 500 个赞,会很反感。这和一个复杂的正则表达式答案不同,后者解释了行为的原理,以及下次如何避免。第二种声望是挣来的。第一种则像是在窃取别人的劳动成果。Atwood 对此表示理解:从某种程度上说,反对者是对的。

他后来引用了一个编程上的类比。松散的类型系统在 Ruby 社区里很受欢迎:不用声明,靠事后用单元测试抓 bug。后来 Anders Hejlsberg(他开发了 C#,Atwood 称他为语言设计领域最伟大的头脑之一)给 JavaScript 加上了严格的类型系统。采用 TypeScript 的团队不断报告说,他们发现了五十个自己之前并不知道的潜在 bug。他坚持认为,严格本身不是目标,它也不等同于残忍、刻薄或愤怒。严格带来更好的结果。这一点,正是人们对 Stack Overflow 最容易误解的地方。

06

问答在人们只想闲聊的地方走向消亡,所以有了 Discourse

通往 Discourse 的旅程,始于一个限制。Stack Overflow 只适用于有数据、事实和科学依据的主题,或者有一部可以查阅的知识大全的领域。答案必须可以验证。Stack Exchange 引擎让网络上的人可以提议新的问答站点;扑克和乐高是其中的两个,结果效果都很糟。这些主题太社交化了。扑克玩家想聊雪茄、酷炫的牌组,以及自己会怎么打这手牌。乐高迷想展示作品,然后说看这多酷。这些都不是问题。没有人会被“我拿到同花顺该怎么办”卡住。它们更像是一个可以闲逛的机会。

2012 年末和 2013 年初,Atwood 再次审视论坛软件,发现它四年来没有任何进步,这让他很恼火。他热爱兴趣社群,而它们却没有像样的工具。初创公司找他,带着一个想法;他的第一个问题总是:你们为什么不去问用户,而来问我?当他们问到具体怎么做,他说自己心里开始响起“悲伤的长号”音效,因为每一款用来与客户交谈的产品,都是他羞于推荐的软件。这也是最有价值的反馈所在之处。在 Stack Overflow 上,他花了大量时间在 Meta Stack Overflow。九成反馈没法用,一成是金子,而他最爱的,是其中那五个百分点:那些他完全没有想到的点子。

对他来说,关键在于兴趣图谱,而不是 Facebook 的关系图谱。Facebook 对世界的理解是状态更新:一个朋友在某家餐厅吃饭了。论坛聚集的则是热爱同一件具体事物的人:电动汽车、特斯拉的做法、某位创始人的风格、某种设计伦理。他引用 The Oatmeal 的特斯拉漫画,作为几乎所有兴趣社群的起源神话:有人钻得极深,然后把它分享出来。他也用同样的方式描述自己:同时只对几件事极度热情,并且一钻就是多年,而不是在很多东西上浅尝辄止。论坛让这种做法成为可能。他不想要一个一切都归 Facebook 所有的世界。他要的是能够拥有自己、定立自己规则的社群,而不会因为买书不够多,就被 Barnes & Noble 赶出门。

他小心地赞扬他所反对的东西。Facebook 非常擅长执行。收购 WhatsApp 和 Instagram 是极其聪明的决定。它们在智能手机上免费分发 VPN 软件,回传流量数据,好让它们看到什么正在流行。他仍然认为,Facebook 没有多少道德指南针:Facebook 在乎的是 Facebook,而不是你和你的问题。Discourse 是开源的。你可以拿去,托管在任何地方,并且深入钻研你感兴趣的任何东西,包括初创公司深入钻研某个具体问题、需要与生活在其中的人交流的那种方式。

07

一个社区,始于某个十年如一日有话要说的人

Fridman 问了一个实际的问题:怎样从一个人走到一千人?靠运气、技能、时机、坚持,还是工具?Atwood 从一个听众开始。他欣赏的某个人曾经把写博客描述为:有一件有趣的事要说,并且有一种有趣的说法,然后坚持做大约十年。有趣是指不完全与别人说的一样。有趣的说法,则是要有娱乐性。接着是仪式感。宣布你每周博客三篇,并且坚持下去,因为在坚持几年之前,你不会走得很远。如果你充满热情,它就不会感觉像工作。

Coding Horror 始于 2004 年,名字取自 Steve McConnell 的《代码大全》(Code Complete)中侧边栏的一幅插图,这本书至今仍是 Atwood 最喜欢的编程书。那个图标在代码里代表危险,而它打动他,是因为编程中的关键洞见是:你是自己最大的敌人。每次写东西,都要想想以后会怎样把自己坑了。他在开博之前给 McConnell 写了信,请求使用那幅插图;McConnell 同意了,而且一直同意下去。Atwood 当时在一家制药公司工作,那里编程并不是核心产出,身边也没有可以聊这些的人,所以他把这份执念倾注到博客里。他认为自己是个执行者,而不是点子的人,这也是他喜欢社区反馈的原因之一:只要你愿意花三个小时阅读,从中挑出一个好点子,人群就会整天天马行空地提想法。

当他告诉 Joel Spolsky,自己有一股能量,想要做点什么时,博客已经有大约 40,000 名订阅者。读者在博客上投票选出了 Stack Overflow 这个名字——他指出,命名是计算机科学里最难的问题之一——几乎所有早期的测试用户都来自他的读者和 Joel 的读者。当人们发现你在等他们的反馈,而不是什么都听,那是不可能做到的,他们就会跟随你。他所知道的最好的写作建议是:把草稿大声读出来,反复读,直到它听起来像你在说话,只是措辞稍微好一点,因为你有更多时间去思考。从旧的编程书里挖掘常青的概念,你可以同意,也可以反对。你不必假装这个想法是原创的。你需要的是一个经得起时间考验、值得讨论的东西。

2007 年,有人出价大约 8 万到 10 万美元收购这个博客,相当于一年的薪水,一次付清。他和人商量,犹豫过,最终拒绝了,因为那样它就不再属于他了。他喜欢给出的一条原则是:面对一组选项,挑那个稍微吓人一点的——吓人,但不至于跳崖,只是让你紧张的那个。安全的选择通常意味着你没有推动自己。对他来说,更吓人的选择是说不,看看博客会走向何方。他认为,如果当时他说了好,大概就不会有 Stack Overflow 了。

08

复盘失败,然后承认这个网站从来不是为新手准备的

两家公司都始于一种让他感到不满的状态。对 Stack Overflow 来说,那是 Experts Exchange。对 Discourse 来说,那是尴尬的论坛软件,它无法与 Reddit、Twitter 或 Facebook 竞争,是他不愿放到自己网站上的软件。他发了关于论坛的帖子,发现一款名为 Forum Wars 的恶搞游戏,多伦多的 Robin Ward 联系了他,两人都热衷于同一个问题。Atwood 的反应是:他们要创办一家公司了。关键的种子,是一个你非常在乎的想法,外加一个能够核查你是否在做错误决定的联合创始人。然后研究这个领域,并带着一种偏见——他认为大多数人都会跳过这一步:不要只盯着成功案例。成功案例很无聊。要看失败,因为那才是人们在实验的地方,而失败的原因往往与想法的质量关系不大。

弗兰肯斯坦式的设计并非没有代价。Stack Overflow 中仍然存在大量张力,这就是为什么人们抱怨问题被关闭。Fridman 本人在该网站上发过很多帖子,他注意到提问时的焦虑。Atwood 同意,目标是提出一个能帮助后面那一长串人的问题,这对只关心自己问题的人来说很难推销。他不认为这个网站能彻底改变其运作方式。他仍然耿耿于怀的是,提问页面自 2011 年以来就没有变过,而那恰恰是新用户最需要帮助的时刻。截至访谈时,好消息是提问流程变得更像向导式的,包括帮你写标题,避免只写“我有个问题”,还有一个可选加入的特别指导队列。他对此并不反对。

他不愿放弃的,是他们一开始就有的大城市精神。你来纽约,不会指望有人热情地迎接你。这并不是城市无礼;人们都是忙碌的专业人士,并且他们假定你也一样,所以你应当带着调研和细节,提出尽可能好的问题。这让一些人不舒服,但他并不认为,想要为新手找一个更轻松的地方,有什么错。他仍然认为 Stack Overflow 从来不是为新手设计的,即使 Joel 说过不是这样。天才可以用它。新手想要的是实时屏幕共享、实时聊天、资源,以及一个用来实验的练习场,而这些网站都没提供,因为那从来不是它的受众。重复问题是一个残酷的计算机科学难题,因为人们惊人地擅长用一个相同的词都没有的方式问同一个问题。其中一些重复问题应当存在,作为指向某个标准答案的路标。十份同样的答案会贬低声望,而程序员最讨厌的就是这个。

09

好的程序员像电脑一样思考,这是职业病

为什么程序员有时候有点刻薄?Atwood 的理论是环境使然。如果你整天和混蛋共事,你也会变成一个。而电脑如果不是世界上最大的混蛋,又是什么呢?它没有时间理会你的废话。一个错误,一切就崩溃;一个分号就曾让太空任务失败。你把那位同事内化了。你开始认为任意的严格就是好的,认为错误代码 56249 是完全足够的提示,因为那就是机器给你的东西。你忘了做一个人。

他引用了侦探小说的套路:伟大的侦探会内化罪犯,自己也有一点点像罪犯。真正优秀的程序员会像电脑一样思考,因为这就是工作。内化得太深,你就会变成电脑。你并不是刻薄,确切地说,你是对缺乏严格没有耐心。你不宽容,简洁,“错了,下一个”。有人问该怎么修,你的本能反应依然是:错了,下一个问题——对电脑来说很正常,对坐在你对面的人来说却令人困惑。他回忆起 1990 年代那个关于 IT 人员的“move”小品,把它视为这种职业病的大众版本。

那么,什么样的程序员才算优秀的单兵?他认为你不应该只做一个单兵。他引用了《Masters of Doom》中的 John Carmack,指出做出 Wolfenstein 和 Doom 的人,没有 Stack Overflow,没有 Wikipedia,也没有 Discourse。你必须是天才,才能从第一性原理出发去发明东西。如今你不必是天才了,这意味着你也不该单打独斗。你必须擅长在网上做调研,并能提出经过充分研究的问题,那种问题在你打出第一个字之前,就已经意味着三个小时的功夫。在 1980 年代和 1990 年代初期,没有别的地方可去。Atwood 学习 Visual Basic 时,曾经拨打微软的技术支持热线。Steve Sinofsky 发帖说,C++ 第 7 版附带的文字材料约有 10,000 页,因为你不这么查,还能去哪里弄明白呢?

10

要成为高效的程序员,终究要停止写代码

Atwood 作为公众人物这些年的最大洞见,是一个他知道听起来令人沮丧的观点:要想作为程序员变得高效,你终究要停止写代码。他指的是用更高层级的语言编程。最早是汇编,要针对具体架构硬编码。然后是 C,可以跨 ARM 或 x86 抽象。然后是 Python 和 Ruby。比编程语言更高的,是口语和书面语言——激励别人、给出指导、提出“如果我们这样做会怎样”。你是在用这个世界上最高层级的语言写作,对他来说,就是英语。Patrick McKenzie(Hacker News 上的 patio11,后来在 Stripe 工作)有一篇广为流传的文章,说一旦你走得足够远,把自己称为程序员,就会成为职业发展的绊脚石。Atwood 认为他说得对。

看看 Coding Horror 的档案,他说,里面有很多观点都在说,编程关乎人,多过关乎代码,但这在你亲身经历之前并不真正说得通。这些人能相处吗?他们能互相理解吗?你甚至能解释你在做什么吗?你解决的是正确的问题吗?他把《人件》(Peopleware)和《代码大全》摆在一起:软件就是人;人首先就是软件。一旦跨过某个技能门槛,你就能解决摆在面前的任何合理的工程问题。你不必从零开始编写算法。你无法用代码解决的,是你的经理是个混蛋。这比一个讨厌的框架、Sam 的糟糕提交,或者 Dave 跑到荒野里去写些天知道是什么的东西,更能让你瘫痪。那个让所有人压力大到陷入瘫痪的有毒同事或老板,才是真正的瓶颈。

Fridman 问,转向自然语言是否意味着失去了底层构建的能力。Atwood 不太担心。Discourse 起初是用 Ruby 做的,而他对 Ruby 并不熟,但他依然有 for 循环、递归和堆栈跟踪。他不是那种纯粹的新手;他需要的是运用他已经掌握的概念。只和 Robin Ward 合作时,他意识到,每次他拿一个愚蠢的 Ruby 问题去打扰 Robin,Robin 就不是在做第一个 alpha 版本。这是对两个人时间的浪费。与其靠自力更生,不如去招募更多称职的程序员——先是 Sam,然后是 Neil。到了某个时候,写代码本身就会成为完成项目的负担。

11

公司的心跳,就是它改动一个词的速度

一旦有了原型,你优化的是迭代速度:你能多快转动那个曲柄。他们第一次为争取种子轮融资而演示的 Discourse 很糟糕。他至今还留着那些截图,看了让他尴尬。纸面上设想软件如何运行,与真正生活在其中的感受之间有很大的差距,所以你要先发布那个丑陋的版本。他有一条很多人喜欢的推文,他把它当作根本原则。如果你想衡量任何一家软件公司的核心能力,就计时这件事:有人说产品里的这个词应该改,因为对用户来说会更清楚——比如把 respondents 换成 reply——然后你从这个想法开始计时,直到改动推送给用户。这段间隔就是你的生命周期,你的健康状况,你的心跳。如果心跳非常缓慢,你基本上就死了。

他不是在故作玄虚。如果一个明显更好的词要花两周、一个月,甚至好几个月才能改掉,你就无法迭代,也就什么事都做不成。Fridman 拿特斯拉几天就能完成的空中升级,与其他汽车公司要花上几年来对比。Atwood 同意,这种差异在那些公司适应的速度上很明显,然后他补充了一条注意事项:成为蜂鸟也不是目标。心跳必须健康而合理,而不是慌乱。软件是这样造出来的:做出一个改动,与之共处,说“那真是个糟糕的主意”或者“要是加上 Y 会更好”,然后再次转动曲柄。你做得越多,就越能领先竞争对手。等他们追上来时,你已经在一年之内远远超出了他们的位置。

他热爱不断变化的软件,也不理解那些因为某个东西挪动了位置而生气的用户。时常改动它:这种可塑性正是软件酷的地方。有些改动确实糟糕,这样的例子他见过不少,但与你正在构建的东西的本质作对,是没有道理的。拥抱健康的循环。人们不太会变,所以投资于理解人,就像学习 1970 年代的 Unix:几十年后它依然有效,而最新的 JavaScript 框架大概只能用两年。Discourse 本身最初被定为一个五年的项目,很快就改成了十年。他说,任何软件项目,都要花三年才能做出你真正想要的东西,而第一版一定很糟糕,他们的也是。你还是得发布它。1.1、1.2、1.3 版本才是你变好的地方,前提是你能迭代得够快。他希望 Discourse 成为讨论界的 WordPress:当一群人需要聚在一起时的默认答案。开源,免费,在 VPS 上每月约 5 美元,用更大的构建模块搭建,面向未来十年,而不是共享主机。

12

手机改变了文化,Unix 依然胜出,而机械键盘是一种仪式

谈到编程的未来,Atwood 更多是被提升的基线打动,而非某种全新的本质。他 1992 年毕业时没有学过源代码管理;即使在 1990 年代后期,仍有人没有被教过,这让他难以置信。GitHub 是微软收购的,他称之为极其聪明的举动,这意味着任何想要合理源代码管理的人都已经有了保障。编程并没有变成另一种活动,但被视为基础的那一层已经抬高了数个数量级。大约自 2010 年起,智能手机把一台电脑放进了每个人的口袋,这是一场巨大的社会变革,它的好与坏我们仍在消化。作为一个极客,那曾经是他梦想中的世界,他还是那句常见的提醒:小心你所祈求的。这并不是乌托邦。他已经转向了 Unix 的观点:在很长一段时间里,编程的基础仍将是命令行。他看不到地平线上有什么神奇的可视化编程,也想不出哪种智能手机手势能对应编程。文化层面的变化很大,编程层面的变化却不大。

在他 2018 年的叙述里,人工智能被过度吹捧了。很多所谓 AI 的东西,只是观察到人是可预测的。Discourse 会标记一次来自纽约的登录,一小时后又来自旧金山的登录,因为 60 分钟内跑了 2000 英里,很可疑。这是一种启发式方法,不是 AI,而且 VPN 就能骗过它。好的软件会预判需求,就像 Google 根据你的手机每天放在哪里来预测你的通勤路线。他对于把这称为完整的人工智能有所保留。这是计算机变得更好的表现,因为智能手机突然产生了位置和通信数据,可以输入基本的启发式方法和一些花哨的算法,就像一个朋友说:我看到你在家,要不要一起吃晚饭?在真正的编程中,他认为辅助是可能的,因为重复的东西太多了,而 Clippy 那句“看起来你在写一个 for 循环”则是个糟糕的例子。更好的版本是更大的乐高积木:不要自己写 HTTP 库,直接用一个已经经过实战检验的。WordPress 让非程序员通过插件几乎能做任何事。他预计会有更多的拼接、更少的“真正的编程”,而他认为这是好事,因为你需要的大部分东西已经存在了。他过去以为 Unix 是浪费时间,现在则完全转过来了:Unix 派的人基本上是对的,而微软和 Windows 在服务器上基本上是错的,只要剥开一两层,你仍然会找到 Unix。Discourse 本身就是一大碗交付给客户端的 JavaScript,外加在主机处理器上进行的排序和基础工作——这也是对这一转变的又一次押注。

Fridman 提出,广告在最好的情况下,会把人与他们本来就想要的东西连接起来,这听起来像 Discourse 的兴趣图谱。Atwood 有逆向思维的一面:如果广告给你看的是你本来就会喜欢的东西,他其实是支持广告的,并认为支持那些做事的人是理性的。他还是不情愿地装了广告拦截器,因为现在的广告动辄带来 30 到 40 兆字节的加载量。它们让他想起 Stack Overflow 出现之前的 Experts Exchange,而那张广告科技公司的标志图,满是小公司,简直有些尴尬。实际上,很少有 Discourse 站点靠广告维生。这种模式太稀释了,报酬低,用户又讨厌。订阅、Patreon 和亚马逊的推广链接是有效的。他曾经付钱给一个他以前常去的网站,让其改用 Discourse,因为旧软件太糟糕,他都不愿意再回去,并告诉站长放弃那些令人厌恶的广告,转而全力经营 Patreon 和推广链接。这奏效了,对于创作者尤其如此。干净、快速、精准投放的广告会很棒。我们离那还很远。

对话里的最后一件东西,是 Atwood 参与设计的机械键盘 Code Keyboard。他承认这是一种癖好。你在任何东西上都能编程,哪怕是屏幕键盘——这个想法让他感到恐怖——或者是没有手感反馈的老式薄膜键盘。机械键盘表达的是:你在乎与电脑交流的主要方式,就像播客主播在乎自己的麦克风一样。你能感受到那一下咔哒声。它表明你重视基本功,而基本功之一,就是打字足够快,能把脑子里的想法转化为代码库中的代码。练习打字可以让你成为更好的程序员。他弹钢琴;那种触感滋养了他的热情。手工键盘爆发式增长——他估计仅 Massdrop 上就有 500 个项目——他关注的一位前 Tech Report 记者,每周都会发一组键盘美图。Fridman 收藏了一堆悠悠球。从技术上讲,你只需要一个键盘。Atwood 说,这些不必要的宗教式器物,正是让我们成为人的一部分。它们让生活值得过。严格来说,没有什么是必要的。这正是重点。

同频道的其他文章

3:36:56EN → 简体中文
Lex Fridman· 2026年9月16日播客精神病学至今没有属于自己的青霉素主持 Lex Fridman历史学家 Andrew Scull 与 Lex Fridman 谈到,这门学科对症状有所缓解,但没有哪一种重大精神疾病真正被根治;过度自信的时候,代价要由病人来扛。Mental HealthPublic HealthNeuroscience
5:15:51EN → 简体中文
Lex Fridman· 2026年8月26日播客 · 2 人对谈DHH 没有亲手写一行 Omarchy Quattro 的代码嘉宾 DHH · 主持 Lex Fridman与 Lex Fridman 一次充满怀疑的对话过去十三个月后,Rails 的创造者讲述了 Opus 4.5、一群编码智能体(Agent)和一个一分钟的 Linux 安装器,如何结束了他一凿一凿手写 Ruby 的时代。编程智能体Vibe Coding智能体工程+3
3:12:58EN → 简体中文
Lex Fridman· 2026年8月12日播客 · 2 人对谈一个冷水澡,二十位冠军:Khabib Nurmagomedov 是如何炼成的嘉宾 Khabib Nurmagomedov · 主持 Lex Fridman在马哈奇卡拉的一间学校体育馆里,七十个人共用一个淋浴间,而且只有冷水。Martial ArtsCombat SportsCoaching+3
3:46:18EN → 简体中文
Lex Fridman· 2026年7月28日播客 · 2 人对谈抽掉奴隶制,就没有美国内战嘉宾 Gary Gallagher · 主持 Lex Fridman1860 年,美国奴隶主名下的奴隶价值,超过了全美所有铁路和工厂的总和。Political PhilosophyLeadershipHistory
3:51:47EN → 简体中文
Lex Fridman· 2026年6月30日播客 · 2 人对谈46% 的皇帝被暴力推翻,帝国照样延续下来嘉宾 Anthony Kaldellis · 主持 Lex Fridman历史学家 Anthony Kaldellis 与 Lex Fridman 一起走过 2200 年的罗马史,并主张我们所说的拜占庭,其实就是罗马本身。Political PhilosophyGeopoliticsLeadership
2:53:42EN → 简体中文
Lex Fridman· 2026年5月29日播客 · 2 人对谈月亮一直在下落,却总也落不到地球上嘉宾 Biggest Mysteries in Physics · 主持 Lex Fridman费米实验室(Fermilab)物理学家 Don Lincoln 在与 Lex Fridman 的对谈中说,物理学的历史就是一部统一的历史;反物质(antimatter)、暗能量(dark energy)和万物理论(theory of everything)依然远在我们能做的实验之外。Quantum MechanicsScience CommunicationPhilosophy of Science