DHH 论道 AI、氛围编程及编程未来

70 阅读9分钟

DHH 认为 AI 可以辅助编程,但不能取代手动编写代码。他强调通过实际打字来学习编程的重要性,反对过度依赖 AI 生成代码。DHH 享受与 AI 结对编程,但也警告不要仅仅依赖 AI 进行“氛围编码”,认为这无法培养真正的编程技能。他建议年轻程序员应专注于学习编程基础,并对未来保持开放心态。

译自:DHH on AI, Vibe Coding and the Future of Programming

作者:David Cassel

他热衷于编程和效率。那么 David Heinemeier Hansson (DHH) 对 AI 辅助的氛围编码 有何看法?

在他的第 474 个播客中,Lex Fridman 与 DHH 进行了一次特殊的六小时访谈,DHH 是 Ruby on Rails 的传奇创造者,他被证明是我们这个时代的精明观察家

当 Fridman 的 470 万订阅者收听时,两人分享了他们自己对 AI 编码工具、氛围编码以及编程本身的未来的深刻见解。

在整个过程中,Hansson 保持了积极的态度,令人愉悦的鲜明观点,正如 Fridman 指出的那样,“总是很高兴交谈”。

赤手凿代码

简而言之,DHH 说他喜欢与 AI 合作:用于创建草稿、查找 API 甚至获取第二意见。但他使用它的方式与大多数人不同,总是将他的人工智能生成的代码放在一个单独的窗口中。“我不让它驱动我的代码。我尝试过——我尝试过 Cursors 和 Windsurfs,我不喜欢这种编写方式。... 我真的能感觉到能力从我的手指中流失!”

他有过这样的经历,他意识到自己一直在向 AI 询问相同的语法,一遍又一遍。“通过不输入它,我没有学会它。... 我有点害怕。... 如果我不输入,我就不再学习了吗?”

所以在最后,他决定,“你要用你的手指学习。”就像学习弹吉他一样,“编程必须通过实际的打字来部分学习。... 如果你的手指没有参与其中,你就会失去对它的触感。没有其他方法。

“我不想要那样,因为我太喜欢它了。”

对于喜欢编码的程序员来说,这不仅仅是关于结果,关于最终被创建的程序,DHH 说。还有一种与之相关的情感——那种非常人性化的表达时刻。而 DHH 所说的“快乐”就是“自己输入代码”。

“如果我把自己提升到不编程的位置,我就把自己变成了一个项目经理——一个 AI 乌鸦群的项目经理,正如我前几天写的那样

“如果我不关心自己编写代码而只是想要结果,我 20 年前就可以成为项目经理了。”

DHH 谈氛围编码

采访者 Fridman 想知道 AI 编码工具是否应该只提供“学习模式”来“基本上强迫你输入某些东西”。但 Fridman 似乎对 AI 更适应,他补充说“我认为氛围编码是一种技能”,并警告说“对于有经验的程序员来说,很容易忽视氛围编码。”

“我同意,我不会忽视它,”DHH 开始说。但在他看来,氛围编码只是“以这种肤浅的方式学习,感觉像在学习,但完全是空洞的热量”。他提醒年轻的程序员,“如果你只能进行氛围编码,你就不是程序员。”如果你把它看作是一种职业技能,请记住:“任何人都可以做到。”

但是,难道不能通过与 AI 进行结对编程来磨练他们的技能,直到他们超过从头开始编写代码的程序员吗?而且,通过正确的提示,难道你仍然不能以你喜欢的风格和结构创建代码吗?DHH 似乎持怀疑态度。“如果你不知道如何去做,你就不能给别人指点。

“成为一名优秀编辑的能力是你作为一名优秀执行者所获得的奖励。”

DHH 尝试使用氛围编码“来构建一些真实的东西”,并分享了他所看到的:“你实际上很早就失败了。”他发现氛围编码“能够构建一个表面……看起来可以工作的东西,但在各个方面都存在缺陷。”除了关于 AI 生成的代码泄露 API 密钥或以纯文本形式存储密码的明显恐怖故事之外,“它迷失在自己的迷宫中的能力现在非常强大。... 你想改变一些东西,它很快就会变成一场打地鼠游戏。”在修复一个错误时,最终可能会引入更多错误。

尽管即使在那里,DHH 也看到了某种非常像人类的东西。“它所犯的错误与初级程序员一直犯的错误类型相同!”

全天候使用 AI(同时学习和获得乐趣)

DHH 并没有回避 AI。“我也整天都在使用 AI。... ”他澄清说。“事实上,我想说我喜欢使用 AI 的方式,我每天都在变得更聪明。... 因为我正在使用 AI 来让它向我解释事情!”

但还有另一个优势。DHH 说 AI 终于让他享受结对编程了。“我是一个内向的人!”过去,他只能进行结对编程“大约五分钟,然后我就想跳桥。... AI 让我拥有了那种体验的所有优点!”

Fridman 同意,他说 AI“就像一个非常积极、非常聪明并挑战我思考的伙伴。... 即使我从未使用过它生成的代码,我已经是一个更好的程序员了。”而且他玩得更开心。

DHH 也有类似的经历。“它让我更开心的就是再次成为一个初学者。”有了它在那里,他有了信心——对他的能力更有信心。尽管他多年没有进行 iOS 编程了,“我现在非常有信心,我可以和 AI 一起坐下来,我可以在本周末之前在 App Store 中发布一些东西。

“除非我有一个像 AI 这样的结对编程伙伴,否则我不会有这种信心。”

未来

有一天,AI 辅助编程可能会意味着完成更多的编程工作,反过来会增加在人类程序员身上的花费。但 DHH 说,他也对 AI 可能会像汽车对马匹所做的那样,将编程变成我们只会在休闲时才会做的事情的可能性持开放态度。“对于编程,对于手动编程来说,这可能是未来——完全有可能。”

他对此并不感到困扰。人们仍然喜欢弹吉他,即使录音已经让每一首歌都可以立即获得。

Fridman 将其比作骑在马上的老式牛仔,他被路上的汽车超过。“我认为拥有这种谦逊很重要,”DHH 同意,“你擅长的东西可能不再是社会所重视的。这种情况在历史上发生过一百万次了。”

在 45 岁的时候,DHH 已经着眼于长远。“我很幸运能够成为一名程序员近 30 年。这是一段美好的旅程。”他说他很“幸运”能够以一种经济可行的方式做他最喜欢的事情几十年。

“如果明天结束了,我不应该带着遗憾去看待它。我应该带着感激去看待它。”

下一代程序员

但是当谈到年轻的程序员时,DHH 说“仅仅”学习如何让 AI 生成你的代码“绝对是不够的”。“如果你想学习,如果你想变得更好,就不是这样。”他使用了“tap monkey”这个短语——一遍又一遍地选择“是”——并警告说,最终任何人都可以做到这一点,“这不是一项有市场的技能。”

但随后他也补充了他的标准警告。“没有人知道任何事情。没有人可以预测即使是六个月后的事情。”而且具体来说,他认为“现在,我们可能正处于 AI 未来炒作的顶峰”,其承诺显而易见,AI 生成输出的“令人难以置信”的方式“令人毛骨悚然地让人想起人类”。(DHH 记得 DeepSeek 似乎以“令人难以置信的人性化”的方式制定其回应时感到“有点害怕”。)

但他也记得期望在观看 1995 年的电影“割草者”五年内生活在一个 VR 世界中。“那没有发生。”(尽管他最大的孩子现在确实喜欢玩 VR 游戏“猩猩标签”。)“很难预测未来。因为我们根本不知道。

“我们可能会在当下非常兴奋,因为我们正在图表上的早期点上画一条线……只是向上和向右移动。有时,它只是变平了。”在这里,他指出我们有多少关键基础设施仍然运行在 COBOL 上。

从中,他得出了两个教训:

  • 我们应该谦虚地预测未来。
  • “社会有可能失去它仍然需要的能力,因为它正在追逐未来。”

这让他提出了一些几乎像禅宗一样的建议。“如果你喜欢编程?你应该学习编程。现在,这会永远是一份职业吗?我不知道。但是什么会永远是一份职业?谁知道!”随着关于哪些工作将被 AI 取代的预测不断变化,“没有人知道任何事情。”

虽然可能会有大的变化即将到来,但也存在这种巨大的不确定性,并且“你必须以这样一种方式为未来定位自己,即这无关紧要。... 你选择一个职业或一条道路,如果事实证明你必须重新调整和重新培训,你不会后悔你所选择的道路。”

这一直是 DHH 一生的原则。因此,在祝愿他的公司 37 Signals 的每一个新项目取得成功的同时,他的心理模型也始终包括对“另一个编写漂亮的 Ruby 代码、探索 greenfield 领域、学习新东西、构建我想要的系统的机会,即使没有其他人想要它”的感激之情。

“多么幸福。多么荣幸。”

那么,编程专业的学生是否应该花时间在氛围编码上——学习足够的东西来手动修复由 AI 生成的代码?DHH 仍然认为从头开始编写代码更具有教育意义。“你不会通过观看健身视频来变得健康,”他提供了一个类比。“你必须做仰卧起坐。

“编程、理解、学习几乎任何东西都需要你去做。人类不是通过仅仅从远处观看他人来吸收信息并将其转化为技能的。”

“具有讽刺意味的是,似乎 AI 实际上非常擅长这一点。但人类不是!”

享受整个六个小时的讨论。