先锋 趋势 方法 投研 作者
ThePrimeagen:编程、AI、ADHD、生产力、成瘾与上帝|Lex Fridman Podcast #461
返回节目精读

ThePrimeagen:编程、AI、ADHD、生产力、成瘾与上帝|Lex Fridman Podcast #461

摘要

  • AI 编程工具奖励有经验的判断力,却可能把新手困在机器的水平上。 ThePrimeagen 认为,这些工具最适合可预测、范围狭窄且文档完善的工作,但在定制化设计、大上下文推理、调试,以及判断某件事是否“感觉对了”方面表现较弱。Lex 表示,AI 提高了他的生产力和乐趣,同时也认同“总有一天你得摘掉辅助轮”。

  • AI 最大的风险可能不在代码生成,而在提示注入、自动化滥用、许可证和市场操纵。 Agent 获得的权限越大,潜在损害面就越广;自动生成的漏洞报告可能对维护者制造“注意力拒绝服务”。ThePrimeagen 还推测,供应商可能通过“高级训练数据”把广告主偏好植入模型行为;两人也提出了 GPL 衍生代码输出尚未解决的问题。

  • 基础设施规模依然是可防守的工程挑战,但不同平台面对的工作负载截然不同。 Netflix 能够预测需求,并通过 OCA 节点预缓存有限的内容目录;YouTube 每天必须吸收约 100 万小时的新上传内容,同时完成排序和分发;Twitch 则要实时接收、转换并转播视频。ThePrimeagen 认为,“Netflix 面对的本质上是更容易的问题”,但仍认可这 3家公司的工程能力。

  • 在成熟公司里,组织接口可能压过技术复杂度。 调换《黑镜》季序需要元数据、存储、服务、电视、移动端和 Web 系统约 20名工程师协作,但 Netflix 通过任命一名拥有充分权限的“队长”,在约 3周内完成了工作。ThePrimeagen 认为,能动性会筛选出多维度工程师,而会议排队和金手铐则可能让优秀员工整天“实际上像僵尸一样工作”。

  • ThePrimeagen 长期有效的生产力公式,是把积累的苦功转化为直觉,而不是崇拜捷径。 他曾两次挂掉微积分预科,第三次拿到 C,却在 30分钟内完成一场 2小时的微积分期末考试,并取得全校最高分;之后,他成为约 400名学生中唯一完成微分方程期末考试的人。他对“聪明地工作,而不是努力工作”的替代说法很直接:“努力工作,变得聪明。”

  • 他的创作者商业路径,是让身份、分发和产品差异化不断复利,而不是把受众当作一夜之间形成的资产。 他曾多年一边在 Netflix 工作一边直播,经常每周 3晚播到凌晨 2点;随后与剪辑师 Flip 以 50/50分成建立 YouTube 收入;最终离开一份安全的 10年职业,全职做内容。Terminal Coffee Company 则通过面向开发者的 SSH-only 下单体验,把这套身份延伸到了商业领域。

  • 个人底色是一段复原故事:信仰、家庭和责任取代了寻求认可与逃避现实。 他 4岁或 5岁接触色情,7岁时父亲去世,之后经历毒品、自杀未遂和学业失败;约 19岁时,他所描述的与上帝相遇,以及良知的出现,成为转折点。他最深的主张并不是纪律消除了所有弱点,而是宽恕松开了仇恨,妻子提供了实用的“作弊码”,而爱让这些工作有了值得指向的地方。

精读

1. 链表让软件显得没有边界

  • ThePrimeagen 认为,自己第一次感受到编程的乐趣,是在 Montana State University 的第二门数据结构课上。当他看到一个 Node 类包含一个指向自身类型的私有成员时,原本“列表只能装 10个或 20个元素”的僵化认知被打破了:“没有尽头。”软件突然像是可以表达几乎任何东西。

  • 他能够想象这种结构“在空间中跳跃”,像根系穿过内存。Lex 将其延伸为一种关于人的隐喻:每个节点只知道自己的邻居,就像人生活在一个更大世界中的局部网络里。

  • 但这种表达力也会带来内存泄漏;如果分配的内存没有释放,结果就是“无限痛苦”。

2. 只有当问题值得递归时,递归才会变得显而易见

  • ThePrimeagen 起初把阶乘和斐波那契数列看成“一个非常复杂的 for 循环”。教材中的汉诺塔例子进一步加深了他的恐惧,让他怀疑自己根本不是程序员;他在实验室花了 8或 10小时试图理解递归。

  • 一道迷宫作业终于给出了正确的问题:向上、右、下、左探索,标记走过的格子,再回溯。他意识到:“我一直都理解递归,只是从来没有遇到过一个适合使用它的问题。”

  • Lex 回忆起深度优先搜索、Lisp、国际象棋引擎和细胞自动机带给自己的顿悟:简单的局部规则,可以生成令创造者本人都感到意外的复杂系统。

3. 编程最深的痛苦不是困难,而是确定

  • 在 Schedulicity,ThePrimeagen 知道自己每天都会取出一个对象、对它做映射,再把它展示在网页上。他并不了解代码库的每一行,但知道每项工作的形状。

  • “编程最糟糕的部分,是你已经知道解决方案的时候。”当工作只剩下把脑中的答案搬运到手上,创造力和不确定性就消失了。

  • 这也是他把自己定位为通才和工具工程师,而不是永久专才的原因。他希望学习下一个陌生问题所需的一切,从 UI、内存到 WebSockets 和构建系统。

4. 编程世界远不止 Web

  • ThePrimeagen 反对 Twitter 上常见的“编程就是 Web”的视角。嵌入式系统、机器人、机器学习、网络、操作系统、性能优化、编译器和开发者工具,构成了截然不同的编程世界。

  • 他建议每个程序员都亲手构建一次编程语言,因为这项练习会揭示:熟悉的语法和运行时行为都是设计选择,而不是自然法则。

  • 2012年和 2013年,他构建过一个能够像 iPad 2一样捏合缩放的浏览器 UI,包括 canvas 和矩阵运算;在 Grunt 和 Gulp 之前,他还手写过 JavaScript 构建系统。在 Netflix 的 10年里,他的大量工作是为其他开发者打造工具,包括电视端的 WebSocket 和 framing 代码。

5. 当交付一个网站不再奏效,DevOps 就开始了

  • ThePrimeagen 对“DevOps”的使用比较宽泛,指的是让已经上线的服务在规模扩大后继续运行的人。一个小型 PHP 或 WordPress 网站可以交给 Linode、DigitalOcean 或其他主机商;更大的服务则需要更复杂的构建、部署、基础设施和可靠性工作。

  • 他承认 platform、cloud、infrastructure 和 site-reliability 工程师之间一直存在命名争议。但在实际语境里,人们听到 DevOps,通常会想到那些管理服务器生命周期和系统可靠性的人。

  • Lex 回忆 Google 的基础设施运维人员像巫师,因为他们能让大规模算力持续运行而不宕机。

6. 失去亲人和早期暴露,塑造了漫长的认可寻求

  • ThePrimeagen 说自己在 4岁或 5岁第一次接触色情,此后直到 20多岁,色情每天都占据着他的思绪。他 7岁时父亲去世;哥哥当时约 11或 12岁,后来陷入毒瘾。

  • 哥哥在他 8岁时让他接触大麻。大麻断断续续持续到约 11或 12岁,之后又重新开始;15至 18岁期间,饮酒变得严重。高中时期,他遭到嘲笑、被孤立,并感觉自己格格不入。

  • 临近毕业时,他曾自杀未遂并住院。之后他使用 LSD、蘑菇和甲基苯丙胺;他还说,摄入过量的酸让自己多年都能在高对比度物体旁看到细小的波纹线。

7. 与上帝相遇后,良知先于成就出现

  • 大约 19岁时,在 Montana State University 的 South Hedges,ThePrimeagen 感受到他所描述的“戏剧性且真实的上帝临在”。他体验到一个选择:是否继续沿着自我毁灭的道路走下去。

  • 改变并没有立即发生。他睡了一觉,醒来时似乎没有变化;但后来,色情、大麻、伤害他人或做错事,突然会带来深重的羞耻。“那天晚上之后,我有了良知。”

  • 学业恢复是渐进的。他拿高中 GPA 2.14开玩笑,也提到一位老师在评语中称他是自己教过的最差学生。他曾挂掉微积分预科,学习了约 1年半,最终发现学习变得容易起来。

8. 高中之所以像永恒,是因为那套等级体系占满了视野

  • ThePrimeagen 给陷入困境的青少年的建议,首先从尺度开始:高中会让同龄人看起来像构成了整个未来,尽管其中许多人后来会成为“你生命中最不重要的人”。

  • 他鼓励年轻人趁后果相对有限时多做尝试。Lex 不赞成去揍别人,而是建议练习巴西柔术或其他身体训练,以建立自信和自卫能力。

  • 他们拒绝认为学校里的低地位会预示人生中的低地位。高中等级体系奖励的是泛化能力、物质信号和本地人气;古怪和内省可能在更晚的人生阶段更有价值。

  • 但他们保留了一个前提:接受挑战确实可以发展自我认识,“只要它没有击垮你”。

9. 社交媒体把青少年地位变成了可见的数字

  • ThePrimeagen 认为,当社会地位变得可以量化时,青春期会更难熬。一个青少年不再只是被贴上“酷”或“不酷”的标签,而是能看到 32,514个粉丝和 12个赞这样的数字。

  • 这种表面上的精确,会让排斥感看起来像是对一个人价值的客观测量。Lex 提供了另一种框架:被浅薄的本地等级体系拒绝,可能意味着某种独特品质正在别处形成。

  • 他们认为,那些在高中占据主导地位的人,通常没有太多理由质疑自己;而局外人可能被迫审视自己的价值观和目标。

10. 色情的伤害隐秘、累积,并发生在关系之中

  • ThePrimeagen 认为,色情比甲基苯丙胺或香烟更难戒,部分原因在于社会不会围绕戒色情形成支持体系。一个人可以私下、短暂地消费色情内容,然后回到日常生活,没有人知道。

  • 他的主要反对理由是道德和关系层面的,而不是统计学层面的:色情训练一个人为了私人欲望而使用另一个人,把人变成商品。他认为,这影响了自己看待曾经交往女性的方式。

  • 他提到多巴胺、反复打开标签页,以及接触性化图片后更糟糕的决策,但他说更深层的问题是:把人客体化,对灵魂是否有益。

11. 性既不是亲密关系的证明,也不是与亲密无关

  • Lex 认为,把性征服作为首要目标,会贬低亲密、友谊和长期伴侣关系。他也认为,一定的性经验可以降低焦虑,让年轻男性意识到,发生性关系并没有找到合适的人重要。

  • ThePrimeagen 同意,性可以提升年轻男性的自信并提供有用经验,但认为更深层的目标是持久的浪漫关系或友谊。Lex 以自己与妻子相处 15年的关系作为对照;ThePrimeagen 则说,自己的妻子以及两人之间的信任,才提供了更深的价值。

  • 性频率是一种不完美的诊断指标:长时间没有性生活可能意味着关系不健康,但频繁性生活并不能证明这段关系有意义或有益。

12. 信任之所以深化关系,是因为脆弱会带来后果

  • ThePrimeagen 说,他尽量不看其他女性或色情内容,让妻子永远不必怀疑他的忠诚。他认为,关系的深度与信任密切相关。

  • Lex 补充说,脆弱是信任的前提或组成部分。相互暴露脆弱会创造亲密感,尽管公开暴露会让风险更大。

  • ThePrimeagen 仍认为这种风险值得承担。他称找到妻子是自己人生中第二重要的事件,仅次于那一夜与上帝相遇、从而启动了此后整个人生的夜晚。

13. 戒掉色情,需要保护一段尚不存在的未来关系

  • ThePrimeagen 不是靠找女朋友来停止色情的。“不能靠替换一个问题来停止它。”他必须意识到,自己的行为正在从一个尚未遇见的未来妻子那里夺走某些东西。

  • 当这一认识从“我的头脑进入我的心里”时,戒断就从单纯的自我优化变成了责任。他并不声称这是放之四海而皆准的万能解法。

  • 他把没有根本改变的化学缓解,比作一种药:它能让人看见田野上美丽的雨,但庄稼仍在死去。Lex 将“未来妻子”扩展为一个可能蓬勃发展的未来,而成瘾可能会阻断这个未来。

14. 毒品强化了体验,却没有提供意义

  • Lex 把死藤水和迷幻药描述为掷骰子。他自己的经历是积极的,但拒绝推荐这些东西,并总体建议人们远离毒品。

  • ThePrimeagen 相信精神世界的存在,并说致幻剂带来的体验,从深刻而美丽到怪异而糟糕都有。他不会抹掉自己的过去,但也认为,没有人需要这些经历才能明白人是有价值的。

  • 对他而言,甲基苯丙胺像没有最初 15分钟“舞会狂欢”的可卡因:取而代之的是持续约 12小时的躁动强度。它适配了他的高能量气质,却仍没有带来他所寻找的东西。

15. 在毒品和工作中,逃避都可能伪装成目标

  • Lex 认为,酒精部分是一种社交道具:手里拿着饮料让人有事可做,也传递出人们应该享受生活的信号。但他把这种作用与“有意义的互动必须依赖酒精”区分开来。

  • ThePrimeagen 把自己的吸毒归入逃避,以及对毒品无法提供的某种感觉的追逐。编程可以带来满足和兴奋,但他怀疑,大多数程序员都不可能在工作中找到完整的人生目标。

  • 分心最终会开出账单。眼下的交换可能感觉划算,但延迟支付的成本会变得巨大。

16. 重复练习把数学不及格生变成了考试第一名

  • ThePrimeagen 上过 3次微积分预科:前两次挂科,第三次拿到 C。之后,他用 30分钟完成了一场 2小时的微积分期末考试,取得全校最高分,并在微积分和微分方程中拿到最高分;在约 400名学生中,他还是唯一完成微分方程期末考试的人。

  • 他的办法是反复练习。他参加课程,去数学学习中心,针对教材奇数题后的答案做题,直到三角代换和 Taylor–Maclaurin 级数等技巧变成自动反应。

  • 他需要先看具体例子,才能理解抽象理论。最初这些工作压得他喘不过气;后来,随着机械操作退到幕后,编程和数学变得更像演奏乐器,而不是完成苦差事。

17. “聪明地工作”掩盖了识别聪明工作的经验要求

  • ThePrimeagen 痛恨“聪明地工作,而不是努力工作”,因为这句话假设一个人已经知道什么叫“更聪明”。大多数困难工作都始于不确定性,因此高效方法往往只有在持续投入之后才能被发现。

  • Lex 同意,这句话可能暗示那些正在挣扎的人只是错过了某个显而易见的捷径。有经验的工程师也可能忘记,自己后来获得的效率曾经依赖怎样的苦功。

  • ThePrimeagen 的替代说法是:“努力工作,变得聪明。”聪明工作是对早期劳动进行压缩后获得的能力,不是劳动的替代品。

18. 好的目的地应该配得上旅程

  • 抨击“旅程比目的地更好”这句话的是 Lex,而不是 ThePrimeagen。按字面理解,这句话意味着每一步都在走向一个更糟的地方。

  • 他更喜欢这样表述:“享受旅程,庆祝目的地。”重点不是否定过程,而是否定那些贬低完成本身的空洞格言。

  • ThePrimeagen 则用关于进步和原地打转的丧气海报来回应。

19. 他的母亲提供了持续努力的范本

  • ThePrimeagen 说,父亲去世后,母亲每天工作 18小时,让家庭继续运转。当他决定在学业和个人生活上重新站起来时,他把母亲作为内在动力的来源。

  • 他后来许多努力,都与希望母亲知道自己感激她所做的一切有关。他在附录结尾说:“谢谢你。爱你,妈妈。”

20. 失败的创业项目,训练了 Netflix 后来识别出的技能

  • 看完《社交网络》后,ThePrimeagen 决定用 PHP 5.2 和 jQuery 创业。他经常每天编程 12小时,有时连续 24或 36小时,代价是损害了自己的亲密关系。

  • 他的短信营销公司 Via Text 在 2010年前后运营,当时他称约 80%的手机仍是功能机。公司在短信营销普及前失败了;他认为这是时机不佳,而不是自己具有先知般远见的证明。

  • 他的父亲在 1991年或 1992年前后尝试过预付费长途电话卡公司,约 6年后,类似服务才开始流行。其他项目还包括名为 Grief Feed 的 Facebook 生日自动化工具。

  • 真正留下来的收益,是持续探索、技术练习、完成项目,以及在企业环境中沟通的经验。

21. Netflix 招聘的是 5年的准备,而不是一次面试表现

  • 创业失败后,他在 Schedulicity 和 WebFilings 工作,每周通常约 60小时。他积累了 UI 状态机、矩阵密集型界面、构建系统和 RxJS 经验。

  • 2013年,Netflix 经理 Jeff Wagner 亲自发信,邀请他参与电视端 JavaScript 和 RxJS 工作。ThePrimeagen 遵循一条规则:只要面试邀请确实是私人发出的,就绝不拒绝。

  • 面试期间,他打电话给妻子,因为两人必须决定是否搬去 California。他已经觉得自己拿到了这份工作,因为面试考查的正是他 5年来每周约 80小时持续练习的技能。

22. 加入 Netflix 在纸面上安全,在现实中却充满风险

  • 搬离 Montana 前往 Los Gatos 时,他的妻子已经怀孕 36周;他们在那里谁也不认识,也没有医生。第一个孩子很难照料,而缺乏家人支持让妻子承担了更重的负担。

  • Netflix 当时的文化手册强调“快速招聘,快速解雇”。他在面对分娩以及巨大的文化和地理变化时,离开了一份稳定工作,加入一家要求很高的公司。

  • 他欣赏 Silicon Valley 的活力,因为那里的人都在尝试创造东西;但他也承认,把生活的大部分内容商业化是有代价的。

23. Netflix 的电视技术栈奖励愿意进入丑陋底层的人

  • Netflix 给了他一台 PlayStation 3,让他学习电视端代码。较新的电视应用叫 Darwin;老设备使用 Plus UI。

  • 中间层用 Groovy 编写,旁边还有一个自研响应式实现 WX。他说,在约 40名工程师中,没人真正理解 Groovy 系统是如何工作的。

  • 测试 Observable.sleep(1) 时,他发现这个号称多线程的系统可能让线程死锁。重复测试后,他让 staging 环境整个下午都锁死了。

  • 他花了一天阅读语言参考文档,补上缺失的工作,最终成为唯一理解这个被忽视层的人。

24. 推荐场景需要再多一层间接关系

  • Netflix 的一次改动,把电影对象列表改成了推荐对象列表。同一部影片可以因为不同原因出现在两行中,例如因为用户偏好 Bruce Willis,或者偏好“硬汉做硬事”。

  • 如果把解释直接附在视频上,每次出现都会继承同一条证据。推荐对象则允许每个展示场景携带自己的解释。

  • 这个例子体现了 ThePrimeagen 偏好的工作范围:产品含义、数据建模、响应式服务和电视端代码,并不是相互隔离的专长,而是一个相互连接的问题。

25. 打印调试用稀疏证据绘制地图

  • ThePrimeagen 在学校编写政府机器人时,培养了 printf 调试方法。他的教授提供了一台电脑、一个机器人、不完整的手册,以及涉及 flash、Ethernet 和行星煎饼电机的任务。

  • 在 Netflix,代码可能运行在他无法直接访问的 AWS 机器上。打印输出和日志让他能够重建发生过什么、检验直觉,并推断边界情况。

  • Lex 把这种方法比作在黑暗房间里用手摸索。ThePrimeagen 认为它取决于上下文;游戏开发者可能从交互式调试器中获益更多。

26. 重写旧代码,往往会重现隐藏在其中的原因

  • 在开发 Falcor 时,ThePrimeagen 认为另一名工程师写的请求去重代码很奇怪。他删掉代码,开始进行更干净的重写。

  • 每个边界情况都解释了原设计中的一个奇怪选择。最后,他几乎重现了相同的设计,并得出结论:“在这件事上,我才是白痴。”

  • 他仍然建议为了学习而从零实现系统,例如创建 TCP socket 并解析 HTTP;但他把这种练习与随意替换已经解决的生产代码区分开来。

27. 一个 Falcor 请求就能让一台 Netflix 机器失效

  • 这个漏洞的正确名称是 Recursive Grizzly Attack,而不是“Repulsive Grizzly Attack”。Falcor 路径可以用很短的请求表达行、列和属性的范围。

  • 一个请求如果申请最大到 10,000的范围,再进行实体化,就可能创建数十亿个 JVM 对象,随后还要尝试序列化它们。一个请求就能杀死一台 AWS 机器。

  • 如果 UI 由 50台机器提供服务,大约 50个请求就能让 Web、电视和移动端的导航失效。已有的视频流可能继续播放,但用户无法进入新视频。

  • 这个问题已经在生产环境存在多年,因此回滚意味着最远退回到 2011年。团队只能向前修复。

28. 安全上,攻击者只需找到一条被忽视的路径

  • ThePrimeagen 区分了高流量洪泛攻击和让单个请求成本最大化的输入。一个病态正则表达式可能让每个请求耗时约 10秒,因此几百个请求就足以拖垮服务。

  • Cloudflare 像外部的“强壮保镖”,可以过滤流量,降低被入侵设备造成的影响。

  • 他认为,社会工程学是长期的重要攻击向量。打电话的人只要提供一个假的 PIN,就可能诱使对方纠正它,并说出真正的 PIN。

  • 攻击者的优势是不对称的:找到一条可利用路径,比证明不存在任何路径容易得多。

29. AI Agent 扩大了最不为人理解的安全攻击面

  • ThePrimeagen 预计,AI 会让社会工程学变得廉价且可规模化。提示注入之所以困难,是因为语言本身可能跨越设计者原以为会由指令守住的边界。

  • Lex 把更大的软件能力描述为刀锋边缘:能力越强,可能造成的损害也越多。ThePrimeagen 的阶段性建议是,在理解攻击面之前,不要给系统太多权限。

  • Lex 还指出,YouTube 的上传和自动化接口已经创造了技术、审核和法律攻击向量,包括违禁材料,以及被错误标记为适合儿童的视频。Agent 只是给这些既有风险增加了一个更灵活的语言接口。

30. 生产事故不可避免,部署纪律必须匹配系统

  • ThePrimeagen 误解了 PHP static 的生命周期,导致数据在请求结束后仍然持久化,让用户看起来像是来自错误的国家。

  • 他曾破坏 Lady Gaga 的倒计时揭晓:广告牌停在 0,除非用户刷新页面。他还在“Add to My List”中引入了死循环,导致页面冻结;人工 QA 同样没有发现后一个问题。

  • 直接部署到生产环境,适合了解整个产品的单人开发者。对于有许多贡献者同时工作的规模化公司,这会非常危险。

  • 测试应该遵循耦合度和爆炸半径。视觉上隔离的改动,与深度耦合的库代码不同;后者的变化可能在其他地方产生连锁影响。

31. 无聊的技术栈可能胜过时髦架构

  • ThePrimeagen 尊重 PHP、jQuery 和 SQLite,因为创业公司未必需要昂贵的服务、最新的 React 或时髦的基础设施。大量软件都是老旧而不完美的代码,却仍然包含困难的维护问题。

  • Lex 指出,现代浏览器 API 已经覆盖了许多当初促使人们使用 jQuery 的场景。ThePrimeagen 的回答是,熟悉会消除未知的未知,使老工具成为最快的选择。

  • 代价在于表达范围:另一种语言可能更自然地表达某个状态或问题。他偏好的平衡是深度熟悉,加上有意识的探索。

32. YouTube 不断变化的内容目录,让 Netflix 的缓存问题显得有边界

  • ThePrimeagen 提到,YouTube 每天有超过 1000亿次观看和超过 10亿小时观看时长,每天约有 100万小时视频上传。

  • YouTube 必须决定在每个观看者附近缓存哪些新鲜、个性化且多分辨率的内容。新鲜度会影响相关性,因此平台不能简单地预缓存一个已知的发行目录。

  • Netflix 知道发行计划,可以通过 OCA 节点预缓存有限内容,例如在需求到来前预缓存《Stranger Things》第 5季。

  • Twitch 则必须接收直播视频、转换格式和码率,并几乎同时完成分发。所有系统都很难,但它们的不确定性位于不同位置。

33. 大型组织会把一次下拉菜单反转变成系统工程项目

  • 在 Netflix 发布自己的《黑镜》第 3季版本前,负责人不希望观众首先看到第 1季第 1集。反转季序需要修改元数据、存储、服务层,以及 Web、移动端和电视客户端。

  • 同一能力还必须支持反转单集顺序、隐藏季号或集数,以及 Chelsea Handler 等日播节目的内容。

  • 约 20名工程师参与其中。ThePrimeagen 成为队长,从每个必要团队招募工程师并负责协调,项目耗时约 3周。

  • Lex 指出,自主权伴随法律和产品风险,但两位嘉宾都倾向于保留足够的能动性,以便快速行动并修复错误。

34. 能动性会筛选出能够跨越代码边界的工程师

  • ThePrimeagen 认为,拥有授权的工作会筛选出那些既能写代码、解释问题、说服他人,又能动员团队的人。这些能力与实现能力同样有价值。

  • 等待高管会议数周,可能让优秀工程师离开、停止贡献,或者只剩下金手铐和舒适却毫无意义的日常。

  • 他把一个没有理由尝试的工作场所称为自己的“死刑”。危险不仅是交付变慢,更是把有才能的人变成整天“实际上像僵尸一样工作”的人。

35. 长期副业让创作者转型变得可承受

  • ThePrimeagen 在 2018年 6月左右开始直播 Fortnite,部分原因是为了学习游戏机制,以便参与 Netflix 的 Extra Life 慈善活动。该活动支持儿童癌症研究,并允许他选择一家医院。

  • 一场关于 Vim 的编程直播吸引了约 30名观众。他在 Netflix 工作期间继续直播:工作、吃饭、给孩子读《指环王》或《霍比特人》,然后每周 3晚直播或打游戏到凌晨约 2点。

  • 在 Streamer Awards 上,Pirate Software 给了他一枚挑战币,并鼓励他全职做主播。最终,他在前一年 4月离开 Netflix;那时他在那里已经接近 10年,因为随着年龄增长,非同寻常的机会会越来越少。

36. 创作者独立性用企业安全交换了受众波动

  • Netflix 提供了有挑战的工作、喜欢的同事、好的老板,以及在舆论转向反对他时的退路。全职直播则让受众波动成为他收入的一部分。

  • 这份工作很孤独,因为没有产品团队、经理或工程师群体供他观察他们如何解决问题。

  • 剪辑师 Flip 提议全职合作。两人同意将 YouTube 收入 50/50分成,并在收入几乎为 0的那些月份继续合作多年。

  • ThePrimeagen 最怀念的,是观察其他工程师用意想不到的方式解决问题,并从他们的方法中获得新的工具。

37. “ThePrimeagen”成了对无趣技术地位的拒绝

  • 这个名字来自《Turok 2》,游戏最终 Boss 叫 Primagen。访谈没有确认该游戏的副标题。ThePrimeagen 小时候也曾在 Graal Online 使用这个名字。

  • 2017年或 2018年前后,他重新启用这个称号,因为他认为技术文化自命不凡、排斥他人,而且痴迷于展示聪明。

  • 他希望新手可以提出愚蠢的问题,为了学习而重复造轮子,构建奇怪的东西,而不把缺乏经验当成道德失败。

  • 这个不寻常的名字最终成了他想创造的、以乐趣优先的反文化的鲜明符号。

38. 胡子先于策略出现,后来成为品牌

  • 胡子始于 No Shave November。直播时,观众对胡子做出反应,把“mustache time”变成了一个反复出现的玩笑。

  • 他刮掉胡子后,想念它带来的能量;尽管妻子并不热情,他还是重新留了起来。一个临时笑点变成了可识别的人物特征。

39. 学习一门语言,需要同时构建它并阅读它的设计决策

  • ThePrimeagen 的动手方法是直接开始构建,遇到障碍就逐个搜索:main、条件、函数、模块等等。风险在于,程序员可能只是把另一门语言的习惯翻译过来。

  • 受 Mitchell Hashimoto 启发,他也会完整阅读语言参考文档。Zig 参考文档大约需要 8–10小时读完,并配合小实验把概念内化。

  • 初学者应从小型、具体的程序开始;有经验的程序员则可以先用参考文档建立设计决策索引,再开始实现。

40. AI 可以个性化学习,也可能把理解过程自动化掉

  • ThePrimeagen 把 AI 看作 Google、Stack Overflow 和书籍解释的更个性化继任者。AI 可能比通用教材更快为他找到那个能解锁递归的迷宫问题。

  • 危险在于习得性无助:询问错误,修改建议的那一行,然后继续前进,却没有记住解释。

  • Lex 建议生成简单代码,再逐行修改以观察行为。ThePrimeagen 补充说,阅读生成代码并不等于亲手写出代码;他阅读 C++ 的能力强于凭记忆生成 C++。

41. JavaScript 是最广泛的第一门语言,但不是最终语言

  • ThePrimeagen 推荐 JavaScript 作为第一门语言,因为初学者可以画出并动画化一个方块,发起网络请求,构建后端,使用数据库,以及渲染 2D 或 3D 图形。

  • Python 擅长数据和机器学习。Lex 和 ThePrimeagen 推测,许多 Python 库底层依赖 C 或 C++,但没有把这说成已确认的普遍事实。

  • HTML 和 CSS 可以参与构建图灵完备的系统,但 ThePrimeagen 对编程语言的实际定义要求它具备函数、条件或循环。

42. 有用的语言组合应该跨越不同约束

  • ThePrimeagen 不接受一份普适的 Top 5语言榜单。C 或 C++适合游戏和嵌入式工作;C#、Java、JavaScript 或 Go 适合后端;Python 在数据和机器学习领域占据重要位置。

  • 他建议先探索一种动态语言,如 Python、JavaScript 或 Lua;再探索一种约束更严格的语言,如 Rust、Go 或 C++。

  • Lex 认为函数式编程是自己的知识空白,并提到想探索 Swift、Elixir、OCaml、Lisp 和 Odin。ThePrimeagen 说,Elixir、Odin 和 OCaml 都拥有热情的社区。

  • ThePrimeagen 实际使用最多的是 Go。Jai 和 Zig 是他的副业项目;Jai 需要手动处理 Berkeley sockets、DNS、TCP 和 IRC 解析。

43. 基准测试领先,可能体现的是表达方式而非语言魔法

  • Lex 提到一项覆盖近 100种语言的测试,其中 Zig 看起来最快。ThePrimeagen 提醒,Zig、C 和 C++可以共享 LLVM 后端,因此速度差异可能反映的是表达目标算法的方式不同。

  • 在另一项基准测试中,加入 noalias 告诉编译器传入内存没有其他指针指向它,从而允许一次优化,使 Zig 版本比 C 版本更快。

  • 他认为 Zig 处于 C 和 Rust 之间:C 提供广泛的能力和危险,Rust 提供更强的安全约束,而 Zig 提供 optional 和部分安全性,同时保留更多底层控制。

44. Rust 把内存安全绑定到作用域,并让可变性显式化

  • ThePrimeagen 看重 Rust 把所有权与作用域连接起来。当栈变量离开作用域时,相关堆内存会自动清理,不需要垃圾回收器,也不需要手动记住 free

  • 他也喜欢显式可变性:变量必须标记为 mut,才能被修改。

  • Rust 的安全性限制了表达能力。C 能表达的东西,Rust 可能无法表达,因此这种保护也可能根据问题不同而显得束缚。

45. 元编程在仍然使用同一种语言时最优雅

  • ThePrimeagen 认为自己是元编程初学者。C++17 元编程功能强大,但很难调试。

  • Zig 的 comptime 让编译期编程仍然处于普通语言之内。程序可以在编译期构造素数,并在运行时使用结果。

  • 他有兴趣用 ChatGPT、ElevenLabs、客户端和 WebSockets 测试 Zig 与 Jai,尽管他承认 Jai 需要更多手动网络工作。

46. Twitch 聊天通过变成嘈杂的分布式控制器击败了 Doom

  • ThePrimeagen 把 Doom 的 ASCII 移植版发送到浏览器,让 Twitch 聊天控制游戏。多数人按下 W 时,角色会向前移动 150毫秒;F 负责开火。

  • Twitch 本身有约 5秒延迟,因此游戏状态被放到另一个网站上,典型延迟约 70毫秒。1,000至 1,400人帮助通关了第一关。

  • 为降低向大量观众发送彩色 ASCII 的成本,他尝试了四叉树、游程编码,以及基于亮度选择字符的方法。

47. 平台会产生不同类型的受众行为

  • Twitch 拥有共享文化,梗和表情会跨频道传播。ThePrimeagen 报告称,自己在 Twitch 上约有 1,500–3,000名观众,在 YouTube 上有 800–2,000名,在 X 上约有 50名。

  • YouTube 更加碎片化:每条视频都有自己的小型社区,人们可能先“游”到不同时间戳,再回应聊天。Lex 看重 YouTube 对游戏文化之外人群的开放性和可访问性。

  • X 正在形成共享文化,但直播受众小得多。两位嘉宾都认为,平台设计、排序方式和用户预期会塑造最终形成的话语环境。

48. 软件设计大约从 5,000行开始暴露成本

  • ThePrimeagen 把 1,000–5,000行视为小型项目或功能。到了 5,000–10,000行,早期决策开始要么释放项目,要么拖累项目。

  • 他会在这个阶段测试设计质量、测试策略,以及系统扩展到 20,000行的能力。百万行代码库很少是一个整体,通常包含来自不同时期的不同风格。

  • Lex 补充说,随着系统增长,调试会揭示这些选择的后果。

49. 断言把不可能状态变成即时证据

  • Lex 主张使用断言,让本不该存在的状态直接触发崩溃。ThePrimeagen 将其与 John Carmack、NASA 式严谨性,以及 TigerBeetle 的 Joran Greef 联系起来。

  • 按 ThePrimeagen 的说法,TigerBeetle 使用精确的整数大小、始终开启的断言,以及确定性模拟测试,能够运行约 200年的随机事件。

  • 他把类似技术应用于反向代理和一款游戏,发现了游标位置以及其他此前未测试状态相关的漏洞。在接近无效状态时崩溃,会让故障变得可行动。

50. ADHD 管理始于拒绝服从第一个冲动

  • ThePrimeagen 说,成熟帮助他在 ADHD 状态下阅读。当他意识到自己没有吸收某一页内容时,会重新阅读,有时重复 18遍,而不是接受停下来的冲动。

  • 编程之所以成为他的优势,是因为它能让他保持注意力 10、12甚至 15小时。安排牙医预约和准备孩子的饭,仍然很困难。

  • 他的妻子消除了许多分心和混乱的来源,因此他拒绝说自己独自克服了 ADHD:一位充满爱意的妻子就是“作弊码”的一部分。

51. 注意力是一项训练出来的技能

  • 两位嘉宾都描述过注意力飘走时重新阅读或重播有声书。ThePrimeagen 可能会把同一段内容听 5遍,直到记住每个词。

  • 即使内容是积极的,社交媒体也会制造更多焦虑。现实中的鸟与 Instagram 上的鸟感觉不同,这可能导致更多滑动,以及越来越混乱的思绪。

  • ThePrimeagen 将其与冥想联系起来:有意识地专注于一件事,包括呼吸或存在本身,是一种需要学习的技能,而不是被动状态。

52. 专业能力减少了支线任务,直到代码变成直接表达

  • 早期编程充满支线任务:屏幕闪烁引出双缓冲,渲染引出新的设备问题,每个答案又打开另一条分支。

  • 多年练习后,ThePrimeagen 可以在飞机上连续编程数小时,写出约 1,000行代码,并预计其中约 98%是正确的。

  • 他用一条规则限制配置工作:除非插件故障迫使他紧急修改,否则每年只进行一次大规模 Neovim 改动。他花了约 100小时准备自己的配置,然后宣布它已经足够好。

53. 他的工作台减少的是视觉搜索,而不是击键次数

  • Kinesis Advantage 的凹面设计和拇指按键区,让符号、Backspace、Enter、Control 和 Shift 更容易触及。ThePrimeagen 说,当手臂疼痛让他担心自己可能无法继续编程时,这套键盘帮助他保住了职业生涯。

  • 他使用一台主要的 27英寸显示器,通常只能看到约 25行放大的代码。Lex 更喜欢 3台显示器,其中 2台竖屏,因为眼睛可以扫描更多信息。

  • ThePrimeagen 使用 Linux 和 i3,通过单键组合映射应用,用 tmux 管理终端,再用模糊搜索进入项目。他的目标是消除搜索疲劳。

54. Harpoon 把活动代码库转化为 4个强力文件

  • Harpoon 把 alternate-file 的理念从 2个文件扩展到 3或 4个固定文件。ThePrimeagen 使用 4个 Dvorak 主排键,直接跳转到正在编辑的文件。

  • Harpoon 2已经完成,但仍停留在自己的分支上,而主分支继续提供 Harpoon 1。这避免了大量开源支持问题涌入。

  • 他说,这个项目主要是为自己的工作流打造的,也可以扩展到终端、函数和服务器请求。

55. Vim 的优势,是一套可组合的编辑语言

  • ThePrimeagen 区分 Vim 动作和 Vim 应用。命令可以把操作与文本对象组合起来:删除一个段落周围的内容、删除到某个字符、修改引号内部、复制一行,或者打开一个带缩进的新行。

  • Normal mode 负责导航和编辑;Insert mode 负责输入文本;Escape 返回 Normal mode。学习曲线很陡,但掌握后,大量文本操作不再成为瓶颈。

  • Lex 指出,其他编辑器也能支持类似操作,但它们的默认设置可能不会鼓励用户去发现这些能力。

56. 工具掌握程度揭示了程序员与手艺的关系

  • Lex 使用过 Doom Emacs、Spacemacs 和普通 Emacs,持续约 1年,之后转向 VS Code 和 Cursor,因为他预计 AI 相关编辑器功能会快速发展。

  • ThePrimeagen 说,如果另一种工具更适合自己的“乐器”,他会离开 Neovim。他使用 Neovim 并不是因为热爱这个品牌,而是因为热爱这套工作流和动作体系。

  • 两人都认为,一个人如果要编程数万小时,就应该深入学习编辑器。这个元问题同样适用于打字、会议、钢琴、吉他和柔术。

57. Terminal Coffee Company 把分发变成产品笑话的一部分

  • ThePrimeagen、TJ DeVries、Dax、Adam、Liz 和设计师 David Hill 想做一种既不是空洞周边、也不是高风险软件推荐的产品。他们选择了咖啡,并把 SSH 做成下单接口。

  • 付款目前通过终端流程中的 Stripe 完成;移动端二维码结账原计划推出。访谈没有确认具体的 terminal.shop 域名或命令。

  • 产品结合了开发者幽默、精品供应链和刻意反常的界面。ThePrimeagen 说,他给家人买了 16袋咖啡,已经“对自己的供应上头”。

58. AI 最擅长的是下一步工作可预测的场景

  • ThePrimeagen 的规则是:可预测的任务适合 AI。TypeScript 和常见 API 在训练数据中覆盖充分;文档较少的 Zig 工作表现更弱。

  • Nat Friedman 看过一段 Twitch 视频后,给了他早期 Copilot 访问权限。一次正确预测 if 语句的经历让他觉得不可思议。

  • 持续使用带来了漏洞,也让他意识到自己是在“自动驾驶”,而不是协同驾驶。他感觉自己更像审稿人而不是作者,同时强调,这可能是个人能力问题,并不一定是普遍结论。

59. AI 让编程更快,也可能是因为它让编程不再孤独

  • Lex 使用 Copilot 和 Cursor 处理 API 交互、类似样板的工作、空函数,以及那些否则可能会拖延的任务。他说,收益体现在真正完成、测试并上线的工作量上。

  • 生成代码也会创造类似结对编程的互动。Lex 经常删掉生成结果的大部分,但仍然觉得这个过程更投入,也没那么孤独。

  • 有效使用需要知道系统能看到哪些文件和事实,把假设明确说出来,并把模型当作一个不了解隐含上下文的实习生。

60. Prompting 已经成为一种编程邻近技艺

  • ThePrimeagen 使用 AI 给 Twitch 聊天生成合成声音。他先定义一个叫 Randall 的人物,提供从聊天中提取的想法,生成 10个候选问题,再让模型挑选并改写其中一个。

  • 迭代太少,得到的只是原始聊天;迭代太多,又会让回复偏离最初想法。

  • 他还制作过一款 Zig tower-defense 游戏,并比较 Claude 3.5 与 OpenAI。白天时段 Claude 表现更好,夜间则是 OpenAI 更好,原因他无法解释。

61. 模型会完成任务,但还不会在乎成品

  • ThePrimeagen 想要的是一个“在乎的实习生”:它会重新审视结果,发现弱点,带着更好的设计回来,而不是只满足字面上的提示。

  • Lex 将“在乎”描述为不安与品味的结合——不断改进,然后知道什么时候结果已经对了。

  • 两人都认为,这是当前系统缺失的品质,而不是断言 AI 最终不可能发展出更好的迭代行为。

62. 窄 Agent 能工作,模糊 Agent 会制造昂贵的审查

  • ThePrimeagen 喜欢 Devin 背后的理念:给它一个代码库和任务,让它自行探索、做出修改、提交代码,并解释自己做了什么。

  • 他的实验在任务狭窄时效果最好,例如添加一个图标并记录一次点击。要求更宽泛时会产生奇怪输出;过度具体的规格同样可能失败。

  • 他经常重写结果,最后发现,直接学习相关工具可能更快。真正的衡量标准是总审查和纠错成本,而不是代码第一次出现的速度。

63. 调试仍是当前 AI 能力最清晰的边界

  • Lex 称调试是编程真正的艺术,尤其是面对罕见逻辑漏洞和边界情况。它需要上下文、直觉,以及在不确定性中坚持下去的能力。

  • AI 可以创建日志、处理追踪,并从语义上定位可疑代码,因此是有用的助手,但还不是首席调试员。

  • ThePrimeagen 讲到,curl 维护者会收到自信满满却不可能成立的安全报告。模型可能标记一个看起来危险的操作,却忽略前面让所谓路径根本无法到达的条件。

64. 生成的安全报告可能攻击维护者的注意力

  • Lex 把更广泛的模式称为“注意力拒绝服务”:虚假的漏洞报告和其他生成式需求,即使不直接破坏软件,也可能淹没维护者,让他们士气低落。

  • 他把这一风险与 Polyfill 事件联系起来:持续施压和一次看似有帮助的收购之后,恶意代码取代了软件包。

  • 因此,底层安全边界不仅是代码,也包括人的注意力。一份生成成本很低的报告,仍可能让维护者付出高昂成本去检查和驳回。

65. AI 的商业层可能操纵答案,却不把它称为广告

  • ThePrimeagen 预计,公司会通过付费植入或“高级训练数据”影响木工工具等推荐问题的答案。

  • 担忧在于,输出可能看起来像中立的助手回复,而不是一则可识别的广告。

  • 他还担心,纯粹追求生产力会让用户用持久知识换取即时速度,使新手无法处理独特或定制化的问题。

66. 训练数据所有权可能变成企业代码负债

  • ThePrimeagen 询问,有多少 GPL 许可代码进入了专有模型的训练数据。Lex 则提出,生成代码可能为封闭产品带来义务。

  • 两人推测,未来可能出现一项法律,要求公司移除可能源自 GPL 的生成代码;这可能造成大规模代码甩卖,因为来源很难重建。

  • 两人都没有解决法律问题。他们把当前环境描述为一片荒野,涉及训练许可、生成输出和不确定的授权边界。

67. AI 可能先改变编程,再消灭程序员

  • ThePrimeagen 拒绝给出“最终会怎样”的时间表。在遥远的未来,编程作为一种硬技能可能变得没有必要,但他无法预测那会是什么时候。

  • 近期障碍包括公司政策、隐私、可用算力,以及处理更大规模问题的困难。Lex 补充说,过去计算能力的提升,往往增加了工作量和软件数量,而不是消除需求。

  • ThePrimeagen 预计,未来系统可能会使用一种更结构化的伪语言,因为自然语言存在歧义。那仍然属于更高层级的编程。

68. 当一个人能够指挥更多 Agent 时,硬技能会更有价值

  • ThePrimeagen 建议开发者理解更多技术栈,管理更大的项目,并构建包含相互作用约束的系统。

  • 一个全面的工程师,可以让一个任务面向前端,另一个任务通过命令行工具推进,然后审查、修正并整合返回的工作。

  • 他对年轻人的警告是绝对的:不要接受“硬技能已经不重要”的建议。没有硬技能,一个人的上限就是模型的上限;拥有硬技能,持续改进的系统就会变成杠杆。

69. 调查中的热情与低信任并存

  • 他们回顾 Stack Overflow 的调查,注意到约 61%的人表示使用 AI,约 25%的人表示没有使用且没有计划使用。超过 90%的受访者看起来持积极、非常积极或无所谓的态度。

  • 约 81%的人把提升生产力列为首要收益。Lex 认为调查遗漏了乐趣:更低的摩擦和更快的学习,可以让编程变得更享受。

  • 只有 2.7%的人表示高度信任 AI 的准确性。两位嘉宾都认为怀疑是健康的。ThePrimeagen 还指出,“复杂”是相对的:对新手而言,快速排序可能很难;但对一个在大量样本上训练过的模型而言,它可能很容易。

70. 职业建议始于热爱重复练习,但不要崇拜工作本身

  • ThePrimeagen 建议,找到一种能让自己每天回来并不断积累重复次数的语言、项目或 AI 辅助工作流。

  • 他也修正了自己的经历:连续编程 24或 36小时、忽视妻子,确实帮助塑造了他的技能,但既不健康,也不明智。

  • 危险在于沉迷其中,为创业或财务成功牺牲健康、关系或道德。他仍然希望自己的孩子学习编程,即使许多当前技能最终消失,因为新的领域会出现。

71. 责任增加时留下,恐惧让工作变得机械时离开

  • 一份糟糕的 C# 实习让 ThePrimeagen 极其痛苦,他甚至用一个学期把专业改成机械工程;后来他意识到,自己不喜欢的是工作场所,而不是计算机科学。

  • 他反对自动执行“两年一跳”。一家好公司可以让责任、沟通和权威不断复利。

  • 当恐惧或舒适让工作变得机械化时,离开是合理的。仅仅因为害怕改变而留下,可能让一个人几乎无法获得新的能力。

72. 家庭可以集中野心,而不只是与野心竞争

  • Lex 观察到,一些生产力极高的人拥有孩子,并可能因此更有效地使用有限时间。ThePrimeagen 同意,成为父亲改变了他分配精力的方式。

  • Lex 强调,对孩子的爱在性质上不同于对宠物的爱;他和妻子都不会在拯救孩子时犹豫牺牲自己。

  • 重点不是每个人都必须选择同一种生活,而是没有经历过为人父母的人,无法准确估价所谓工作与生活权衡中的家庭一面。

73. 企业道德应依据激励机制和行为判断

  • ThePrimeagen 对 Microsoft 的批评集中在生态锁定:VS Code、GitHub、Copilot、远程工作区和 CI 可以形成很高的切换成本。但他仍然认为 VS Code 是一款好产品。

  • Lex 不愿把每一项有用的免费服务都简化为操纵。Gmail 可以制造生态依赖,同时也确实有价值。

  • 两人同意,企业本身并非天然善或恶;真正相关的道德选择来自运营它们的人。他们也承认 Microsoft 支持开源,而 Meta 的开源工作很难只用短期利润解释。

74. 信仰为宽恕提供了机制,而不只是命令

  • ThePrimeagen 把自己早年的生活描述为事实上的无神论,而不是强烈的宗教生活。他认为,与上帝相遇是一个转折点,让大学、婚姻、家庭和重视他人成为可能。

  • “我们之所以爱,是因为他先爱了我们”这一基督教理念,消除了通过性、地位或成就获取认可的需要。他感觉那些标准已经有人替他付过了。

  • 他写下高中时期怨恨过的人的名字,并选择宽恕他们。仇恨“太黏了”;宽恕是他找到的唯一解药。

  • 他的结论是:爱推动宽恕,而宽恕让人从仇恨的持续纠缠中释放出来。

75. 在地位、性、成瘾和成就之下,真正的需要是爱

  • ThePrimeagen 把《Love Is Blind》描述为“爱情角斗士”:在戏剧性表象之下,参赛者寻找的是被了解和被爱。

  • 他区分了情色之爱、友谊之爱、父母之爱,以及 agape 或神圣之爱。他认为,这些爱以不同方式都是必要的。

  • Lex 描述了一种深层的孤独,以及渴望归属于某个更大事物的愿望。节目最后,ThePrimeagen 感谢 Lex 的积极性,并说这种积极性激励他成为一个好人、创造一些东西。