LLM 时代,程序员的"懒惰"美德正在消亡?

引言

你是否也有过这样的经历:用 LLM 写代码,一天下来产出了几千行,回头看却发现------真正有价值的可能不到几百行?

听起来离谱但这其实是很正常的现象。Oxide 公司 CTO、DTrace 的联合创始人 Bryan Cantrill 最近写了一篇文章 The Peril of Laziness Lost,直指这个问题的心脏:LLM 正在杀死程序员最重要的美德------懒惰。

这篇文章不长,但观点犀利,值得每个使用 LLM 写代码的人认真读一读。


一、程序员的三大美德,你真的理解"懒惰"吗?

Larry Wall 在经典著作《Programming Perl》(被一代技术人员亲切地称为"骆驼书")中提出了程序员的三大美德:

懒惰(Laziness)、急躁(Impatience)、傲慢(Hubris)

这三个词看起来都是贬义,但 Larry Wall 用的是反讽式的表达。其中,Cantrill 认为懒惰是最深刻的那个

为什么?因为这里的"懒惰"不是表面意义上的偷懒,反而它是一个褒义词,代表了一种驱动力

真正的懒惰驱动程序员去构建优雅的抽象。当你不想重复写同样的代码,你就会封装一个函数;当你不想重复处理同类的逻辑,你就会设计一个通用的框架。用 Cantrill 的话说:

懒惰驱使我们让系统尽可能简单(但不能更简单!),开发出强大的抽象,从而让我们能更轻松地做更多的事。

但这有一个隐含的矛盾:要真正"懒",你得先很"勤快"。

想想你自己最满意的代码------是不是那些花了大量时间思考、反复推敲,最终写出来却极其简洁的方案?Cantrill 提到了"吊床驱动开发"(hammock-driven development)的概念。你以为程序员躺在吊床上是在摸鱼?不,那是在脑子里反复翻转问题,寻找最优雅的解法。

懒惰的本质是:用当下的深度思考,换取未来的轻松。


二、虚假勤奋的崛起

Cantrill 接着指出一个趋势:过去二十年,软件开发者群体急剧膨胀,越来越多的人并不把自己叫做"程序员"。这本身不是问题,但它带来了一个副作用------虚假勤奋(false industriousness)的崛起。

具体表现是什么?就是所谓的 brogrammer 文化。

Brogrammer 是 brother + programmer 的合成词,指的是一种程序员亚文化:用代码行数衡量产出,用加班时长证明努力,在社交媒体上晒"crushing code"(疯狂写代码)。在这种文化中,量大于质忙碌大于思考

而懒惰------那种驱动你停下来思考、寻找更好方案的懒惰------被边缘化了。

Cantrill 把这种文化比作干柴(dry tinder),只差一颗火星就会点燃。


三、LLM:虚假勤奋的类固醇

那颗火星就是 LLM。

无论你对软件创作的态度如何,LLM 都能让这种态度以(大得多的)更大的力量施加。

这句话是整篇文章的关键洞察之一。LLM 本身是中性的工具,但它会放大使用者已有的倾向。如果你本来就追求简洁和优雅,LLM 能帮你更快达到目标;但如果你本来就追求"多就是好",LLM 就会让你在这个方向上越走越远。

Cantrill 举了一个极具代表性的例子:Garry Tan。

Garry Tan(Y Combinator 现任 CEO)一直在社交媒体上炫耀自己用 LLM 写代码的"效率",甚至声称自己每天写 37,000 行代码,而且"还在加速"。

37,000 行。一天。你品品这个数字。

如果懒惰是程序员的美德,那这种思维方式显然是恶习。就像用重量来衡量文学价值一样荒谬------一个刚学编程的新手都能看出其中的问题。


四、拆解一个"高效"的产物

更有意思的是,有人真的去拆解了 Garry Tan 用 LLM 高速搭建的"newsletter-blog"项目。波兰软件工程师 Gregorein 做了这个工作,结果既在意料之中,又令人哭笑不得:

  • 多个测试工具(test harnesses)被塞进了项目
  • 一个完整的 Hello World Rails 应用
  • 一个搭便车的文本编辑器------跟项目毫无关系
  • 八个不同版本的同一个 logo------其中一个文件大小是零字节

你可能觉得这些只是小问题,都可以修。Cantrill 的回应是:问题不在于这些 bug 本身。

问题在于,LLM 天生缺乏懒惰的美德。


五、核心论点:没有约束,就没有优雅

这是整篇文章最核心的段落,值得逐句品味:

工作对 LLM 来说没有任何成本。LLM 不会觉得需要为自己(或任何人)的未来时间做优化,它们会愉快地把越来越多的垃圾堆叠在一起。如果不加约束,LLM 会让系统变得更大,而不是更好------也许能满足扭曲的虚荣指标,但代价是一切真正重要的东西。

Cantrill 进一步阐述了约束与优雅之间的关系:

我们有限的时间迫使我们开发出清晰的抽象,部分原因是我不想在糟糕抽象的后果上浪费自己的(人类的!)时间。最好的工程总是诞生于约束之中。

这句话让我深有感触。回忆一下你自己的经历:

  • 当你时间充裕时,是不是倾向于写"先跑起来再说"的代码?
  • 当你面临严格的交付压力时,反而更容易逼出简洁的设计------因为你知道,复杂的方案后续维护会让你崩溃?

这正好反映出约束塑造了设计。人类时间的有限性,恰恰是推动我们追求简洁和优雅的根本动力。

Cantrill 还引用了他自己的演讲《The Complexity of Simplicity》(简洁的复杂性),强调追求简洁本身就是一项艰巨的工作------我们不能期望不受时间或认知负载约束的 LLM 自主完成这项工作。


六、Cantrill 的立场:不是反 LLM,而是反误用

值得注意的是,Cantrill 并不是在反对 LLM

他明确表示:

LLM 在我们的未来中将扮演重要角色:它们是软件工程的非凡工具,但------正如我们在 Oxide 的 LLM 使用指南中所概述的------它们只是工具。

关键在于:LLM 必须服务于人类的"美德式懒惰"。

具体来说,Cantrill 认为 LLM 应该被用来:

  • 攻克技术债------那些我们知道该修但一直拖延的问题
  • 提升工程严谨性------帮助我们做到自己没时间做到的细致
  • 最终目标是产出一个更简洁、更强大的系统

而不是:

  • 追求代码行数
  • 用膨胀的功能清单来证明"效率"
  • 把"能跑"当成唯一标准

七、我的思考

读完这篇文章,我最深的感受是:约束恰恰是推动我们追求优雅的根本动力。

这让我想到用胶片相机或者拍立得这类相机拍照的体验,一卷胶片可能只有二三十张,每按一次快门就少一张。正因为这个限制,你会更认真地构图、更谨慎地选择光线和时机。而当你珍视每一次按下快门的机会时,拍出的照片往往比想象中更好。

软件工程也是如此。代码行数是最差的衡量指标之一,因为它衡量的是付出的努力,甚至某种程度上存在一些无效努力。一个花了三天思考、最终写了 50 行优雅代码的程序员,比一个一天写了 5000 行但充满重复和冗余的程序员,创造了更多的价值。

LLM 是一个强大的工具,这一点毫无疑问。我自己也大量使用 LLM 辅助编程。但 Cantrill 的文章提醒我们:在使用 LLM 时,不要放弃你作为人类的"懒惰"------停下来思考,这个抽象是不是足够好?这段代码是不是足够简洁?这个设计是不是足够优雅?

LLM 可以帮你更快地到达目的地,但目的地本身必须由你来选择


总结

观点 说明
懒惰是程序员的核心美德 懒惰驱动构建优雅抽象的力量
LLM 天生缺乏懒惰 对 LLM 来说工作没有成本,不会主动优化
约束塑造设计 人类时间的有限性逼出简洁的设计
LLM 放大已有倾向 追求质量的人会更好,追求数量的人会更糟
LLM 只是工具 应服务于人类的"美德式懒惰"

一句话总结: 人类时间的有限性是逼出优雅设计的根本动力。LLM 没有这种约束,所以它会让系统变得更大而非更好------除非我们人类用自己的"懒惰"来驾驭它。


参考链接: The Peril of Laziness Lost --- Bryan Cantrill

相关视频: The Complexity of Simplicity --- Bryan Cantrill

相关推荐
IT_陈寒4 小时前
折腾一天才明白:Vite的热更新为什么偶尔会罢工
前端·人工智能·后端
AI创界者4 小时前
Ace-Step-1.5-XL-Turbo ai歌曲生成一键整合包,解压即用!支持高保真长音频,AI音乐制作进入2.0时代
人工智能·音视频
undsky_5 小时前
豆豆AI画布 - “动漫分身”视频制作
人工智能
阿里云大数据AI技术5 小时前
打造多模态数据基石:阿里云PAI赋能海量多模态数据高效处理
人工智能
pjwonline15 小时前
反向仲裁:去中心化知识网络中的社会性共识引擎
网络·人工智能·去中心化·区块链·智能合约
CS创新实验室5 小时前
CS实验室行业报告:AI算法工程师就业分析报告
人工智能·算法
AI茶水间管理员5 小时前
学习ClaudeCode源码之Agent核心循环
前端·人工智能·后端
一个人说晚安5 小时前
课题汇报:基于扩散大模型引导的冷冻电镜原子结构自动化解析
人工智能·数据挖掘
龙文浩_5 小时前
AI梯度下降与PyTorch张量操作技术指南
人工智能·pytorch·python·深度学习·神经网络·机器学习·自然语言处理