最近一段时间,"Vibe Code"(氛围编程)这个词在开发者社区引发了大量讨论。支持者们宣称,大语言模型(LLM)将彻底改变软件开发——每一次新模型的发布,都将把人类带入"纯生产力"的境界,以"思考的速度"交付软件,消除产品开发中的所有摩擦和开销。
也许吧。但我无法认同,因为我本身并不进行"氛围编程"。
如果这种方式对你有用,那很好。但这篇文章并不是要深入争论LLM的优缺点——只是对我个人来说,这种方式从来没有真正起作用过。

以下是我不愿意"vibes code"的几个原因。
我是个吝啬鬼
我曾在IDE中集成LLM来处理简单任务,比如调整图片大小。但当积分用完时,我直接合上笔记本,卸载了IDE。为了一项服务而永久付费,只为让自己能够思考——这在我看来荒谬至极,令人不寒而栗。
我老了
经验是焦虑的一剂良药。AI的热潮让我想起早些年在低代码/无代码工具领域的突破。Fred Brooks的经典论文《没有银弹》区分了"偶然复杂度"(与编写代码本身相关的复杂事物)和"本质复杂度"(设计抽象和系统的复杂工作)。AI解决的恰恰是偶然复杂度,而本质复杂度依然存在。这类工作需要从系统故障中来之不易的技能和经验。
我爱混乱
程序员将混乱的数据精简后再处理。我们期望日期精确、名字简洁、数据完整。每个程序员都会在现实中做出"普洛克路斯忒斯式"的取舍,决定在系统中反映现实的哪些方面。不幸的是,这种元认知能力是LLM永远无法拥有的——模型就是他们的现实,AI从构建到观察世界的方式都是被剥离的。
摩擦是一份礼物
LLM驱动开发的吸引力在于消除摩擦。但当写代码变得困难时,这告诉我正在走向一条错误的道路。我需要摩擦来学习和沉浸在代码中。LLM驱动的方式会直接" coding through friction",不会重新思考任何东西。它不会知道自己为什么选择了那条路。
整个行业都希望开发者将LLM用于工作——因为摩擦包含了防止缺陷进入生产环境的既定流程。谁还需要用户研究,当我们能够打造AI角色时?谁还需要设计,当我们有AI工具时?谁还需要项目经理,当我们可以成为自己智能体军队的管理者?
软件开发是一个协作过程,删除这些角色或用LLM注入的幽灵取代它们,确实能让团队走得更快,但并不意味着产品会更好。
我很在乎
我对编程的热爱让我不想把它交给机器。编程是我表达创造力的一种方式,我不会放弃那份快乐。我关心我工作的使命。LLM无法关心,它永远无法被追责,我也永远无法将我的道德责任移交给它。
当LLM做得好时,它是将取代所有程序员的天才。当LLM删除了你的所有基础设施时,那是你的错——你只需要以"恰好正确的方式"构建你的提示词。
编程一直是我困难时期的慰藉。编程感觉像一个复杂的谜题,有时是我在黑暗时期的避难所。
一些其他琐碎的理由
首先,我非常讨厌AI聊天机器人默认的那种虚假的语气。作为一个在东海岸长大的人,当有人莫名其妙地对我非常友好而实际上他们并不了解我时,我会非常警惕——因为这通常意味着他们正要开始一场骗局。
我有一个文件夹,里面放着我从未完成的爱好的草稿项目。对我来说,过程远比产品重要。并不是每一个奇思妙想都需要变成现实。
考虑到LLM正在向学校的孩子开炮,并按需生成儿童色情内容,我真的不太舒服使用它们。
奇怪的是,似乎没有比LLM推动者更痛苦的人了。他们没有利用新发现的生产力来放松、艺术或快乐,而是拥抱996工作制和过度量化的职场文化。
未来会怎样?
我不敢假装知道未来。也许技术会进步到我将为自己的缺乏经验感到后悔的程度。又或者,它会停滞不前,整个金融纸牌屋会轰然倒塌。如果发生后者,我希望我们能够将软件开发重建为一种人性化的实践——用每一行代码构建一个更美好的世界。
来源:Jacob Harris, "Why I Don't Vibe Code", (https://jacobharr.is/personal/i-dont-vibe-code)