← 返回列表
Lex Fridman Podcast播客29 Nov 2018来源: lexfridman.com主持: Lex Fridman

Jeff Atwood: Stack Overflow and Coding Horror

一句话导读

这篇访谈讲的是程序员Jeff Atwood分享他做Stack Overflow和Discourse的经验。他认为编程的核心不是靠聪明推导,而是靠“暴力破解”——写程序跑很多次,看数据结果,比如洗牌算法对不对,跑十亿次看分布就知道。他看好Discourse这个论坛工具,认为它能帮社区摆脱Facebook那种“公司城”模式,让用户自己拥有数据。他提到Stack Overflow(他联合创立的问答网站)靠“同行认可”驱动,而不是钱;Discourse是他现在做的项目,目标是成为讨论的默认选择;他还提醒Facebook(社交平台)通过免费VPN收集用户数据,有风险。

AI 摘要AI 生成 · 可能有误 · 以原文为准

Jeff Atwood,Stack Overflow与Stack Exchange联合创始人,在Lex Fridman播客中探讨了程序员的核心驱动力。他认为,编程动机主要源于“解谜”的乐趣,即独立攻克难题的挑战,而非名声或财富。核心观点是,编程本质是“暴力破解”(brute force)过程——利用计算机的高速运算反复尝试,直至找到答案。例如,他提到“洗牌问题”(shuffling problem)中,朴素算法存在巨大缺陷,通过运行程序十亿次并观察数据分布(如卡片排列的均匀性),即可验证错误。同样,Monty Hall问题(三扇门问题)中,直觉上不合理的“换门策略”被证明为正确选择。重要结论是

全文约 11 分钟 · 8 个章节
深度解读

本期速览

Jeff Atwood(Stack Overflow 与 Stack Exchange 联合创始人、Coding Horror 博客作者、Discourse 创始人)在 Lex Fridman 播客中探讨了程序员动机、社区建设与领导力哲学。核心判断:编程的本质是“暴力破解”——利用计算机的高速运算反复试验,通过数据分析克服认知偏差,而非依赖直觉或天才式的算法推导。


主题一:编程动机——解谜与暴力破解

Jeff Atwood 认为,驱动程序员的核心动力是“解谜”的乐趣,而非名声或财富。 编程本质上是利用计算机的高速运算能力,通过反复试验(brute force)来寻找答案。他举了两个经典例子:

  • 洗牌问题(shuffling problem):大多数程序员写的朴素洗牌算法存在巨大缺陷。验证方法不是靠数学推导,而是“运行你的洗牌程序十亿次,然后看数据分布——你应该得到所有卡片的均匀分布”。如果数据桶显示不均匀,算法就是错的。
  • Monty Hall 问题(三扇门问题):直觉上“不换门”似乎合理,但“写一个程序模拟游戏,分别执行‘从不换门’和‘总是换门’,然后比较结果——你会立刻看到正确答案是换门”。

关键洞察:你不需要“聪明”地推导出答案,你可以“用数据暴力破解它”——运行程序十亿次,观察数据桶,答案自然浮现。数据分析是克服认知偏差、发现真相的核心工具。


主题二:Stack Overflow 的演化——从“弗兰肯斯坦”到严格系统

Stack Overflow 并非一开始就明确是 Q&A 系统,而是从多个成功模式中“弗兰肯斯坦”式拼凑出来的。 Atwood 回顾了其设计来源:

来源 借鉴元素
Digg / Reddit 投票机制,按票数重新排序答案
Wikipedia 可编辑性(不仅编辑自己的帖子,还能编辑他人的帖子以保持更新)
博客 所有权归属——“这是我说的话,声誉归我”

核心发现:程序员被“同行认可”驱动,而非金钱或老板。 声誉系统是 Stack Overflow 的关键洞察——“来自同行的认可才是事情做成的动力”。

系统走向严格的原因

1. 防止“意外学习”:早期允许“你最喜欢的编程笑话”这类问题,但发现它们不是“你工作中真正面临的问题”——“没人会说‘我不知道最好笑的笑话,所以今天没法编译代码’”。

2. 声誉系统的公平性:如果某人因转发笑话获得 500 票,而另一人因解决复杂正则表达式问题只获得 50 票,程序员会感到不公平。

3. 严格产生更好结果:Atwood 用编程语言类比——“松散类型 vs 严格类型,现在 TypeScript 证明了严格类型能发现 50 个潜在 bug。严格不是目标,但严格产生更好的结果。”

关于“严格 vs 刻薄”:Atwood 区分了“严格”和“刻薄”——“严格是正确的,但不意味着刻薄、愤怒或恶意”。他提出一个有趣的理论:程序员长期与计算机打交道,会不自觉地“变成计算机”——计算机是“世界上最大的混蛋”,一个分号就能让太空任务坠毁。程序员内化了这种严格,变得“不宽容、简短、直接”——这是职业危害,而非本意。


主题三:领导力——以身作则、激情与反馈循环

Atwood 认为领导力的核心是“以身作则”和“对问题的真正激情”。 他提出两个关键原则:

1. 以身作则:“最难看清的人就是你自己。你对自己的看法极度偏见,往往比他人对你的看法更苛刻。” 领导者的行为(包括不做什么)都在传递信号。

2. 对问题的激情,而非对解决方案的激情:以 Discourse 为例,他真正热爱的问题是“如何让群体沟通不沦为狼嚎”——如何应对网络喷子、如何让人们使用完整句子、如何让人们不互相伤害。

关于决策与反馈

  • 避免独裁:“一个领导者拥有绝对法律规则的系统非常危险。那个人会有糟糕的一天,或者发生什么事。” 他推崇多人领导、互相反馈的模式。
  • 决策透明化:不要只说“这是最终决定”,而要“展示我得出这个结论的程序”——“这里是我们思考的过程,这里是我们看到的数据,这里是我们选择这个选项的原因”。即使别人不同意,也能理解你的出发点。
  • 90-10 规则:90% 的社区反馈不可操作(糟糕、疯狂或无法立即执行),但 10% 是“黄金和钻石”——其中 5% 是你从未想到的 brilliant idea。

主题四:Discourse 的愿景——对抗“公司城”与兴趣图谱

Discourse 的使命是让每个社区拥有“自我所有权”,对抗 Facebook 式的“公司城”模式。 Atwood 对 Facebook 的批评集中在两点:

1. Facebook 关心的是 Facebook,而非用户:“他们非常擅长执行,但几乎没有道德指南针。”

2. “公司城”的危险:“所有人类沟通都被 WhatsApp、Instagram 和 Facebook 隐性拥有,这是非常令人不安的。”

兴趣图谱 vs 关系图谱

  • Facebook 的核心是关系图谱(同事、亲戚、朋友)
  • 论坛/社区的核心是兴趣图谱(“我喜欢特斯拉”、“我喜欢悠悠球”)
  • Atwood 认为兴趣图谱更有力量:“我与悠悠球社区的联系,比与那些不常见面的朋友更紧密。”

Discourse 的商业模式:不依赖广告(“广告在 Discourse 上几乎不起作用——用户讨厌它,它不赚钱”),而是通过托管服务赚钱,同时鼓励用户使用 Patreon、Amazon 联盟链接等替代方案。


主题五:编程的未来——更高层次的抽象与“停止写代码”

Atwood 提出一个反直觉的观点:要成为一个真正有效的程序员,最终必须停止写代码。 这不是说编程不重要,而是说编程的“更高层次抽象”是自然语言——通过激励他人、给予方向来解决问题。

编程抽象层次演进

  • 汇编语言 → C 语言(跨架构抽象)→ Python/Ruby(解释型语言)→ 自然语言(最高层次)

关键指标:迭代速度(“心跳”)

“如果你想知道一个软件公司的核心能力,就看从‘我们需要把这个词改成另一个词’的想法产生,到实际部署到用户手中需要多久。如果这个心跳很慢,你基本就死了。”

关于 AI 与编程:Atwood 对 AI 持谨慎态度——“AI 有点过度推销。它更多是‘人们是可预测的’——计算机有大量数据,可以做出基本预测,但这不叫 AI,这叫好的启发式算法。”


提及的标的

标的 嘉宾态度 关键数据
Stack Overflow 已离开,但肯定其设计哲学 10 年历史;早期从博客 40,000 订阅者起步;声誉系统是核心
Discourse 当前项目,强烈看好 2013 年启动,5 年项目(后改为 10 年);最低服务器成本 $5/月;使用 Ruby on Rails + Postgres + Redis
Facebook 风险提示(公司城模式) 收购 WhatsApp 和 Instagram 是“极其聪明的决定”;通过免费 VPN 收集网络流量数据
Experts Exchange 被颠覆对象(已成功替代) “当人们不再记得你想替代的东西时,你就彻底赢了”
GitHub 正面评价 微软收购是“极其聪明的收购”;使源码控制变得普及
Tesla 正面提及(作为迭代速度案例) 可 OTA 更新,迭代周期以天计,与传统车企“年”为单位形成对比
WordPress 正面类比(Discourse 的目标) 作为“博客的默认选择”,Discourse 希望成为“讨论的默认选择”

值得记住的判断

1. “编程本质是暴力破解”(Jeff Atwood):不要试图用算法推导答案,写程序运行十亿次,看数据桶——数据会告诉你真相。洗牌问题和 Monty Hall 问题都是例证。

2. “程序员会不自觉地变成计算机”(Jeff Atwood):计算机是“世界上最大的混蛋”——一个分号就能让太空任务坠毁。长期与计算机打交道,程序员会内化这种严格,变得不宽容、简短、直接。这是职业危害,不是本意。

3. “严格产生更好结果”(Jeff Atwood):以 TypeScript 为例——松散类型 vs 严格类型,现在共识是严格类型能发现 50 个潜在 bug。Stack Overflow 的严格规则同理,不是为严格而严格,而是为更好结果。

4. “迭代速度是软件公司的核心健康指标”(Jeff Atwood):从“把‘回复’改成‘答复’”这个想法产生到部署上线的时间,就是你的心跳。如果心跳很慢,你基本就死了。

5. “要成为有效的程序员,最终必须停止写代码”(Jeff Atwood):编程的最高层次抽象是自然语言——通过激励他人、给予方向来解决问题。这是“用更高层次语言编程”。

6. “选择让你害怕一点的那个选项”(Jeff Atwood):面对决策时,选那个让你紧张但不至于跳崖的选项。他拒绝 $80,000-$100,000 出售博客,选择了“更害怕”的拒绝,才有了后来的 Stack Overflow。

7. “兴趣图谱比关系图谱更有力量”(Jeff Atwood):Facebook 围绕关系(同事、亲戚、朋友),论坛围绕兴趣(“我喜欢特斯拉”、“我喜欢悠悠球”)。兴趣社区能产生更深层的连接。

8. “90% 的反馈不可操作,但 10% 是黄金——其中 5% 是你从未想到的 brilliant idea”(Jeff Atwood):社区反馈的价值不在于数量,而在于那 5% 的意外洞察。Stack Overflow 的许多功能都来自 Meta Stack Overflow 的社区反馈。