最近"凭感觉编程"(Vibe Coding)成了 AI 圈最热的关键词。每一个新模型发布,都有人宣称我们即将进入"光速发布软件"的天堂。但资深开发者 Jacob Harris 写了一篇冷静到刺耳的文章:《Why I Don't Vibe Code》。
他不是原教旨主义者,也不是在争论 LLM 好不好用。他只是坦诚地说:这东西对我从来不对胃口。以下是他的核心论点。
我是个守财奴
Harris 试过 IDE 集成的 LLM,确实能搞定一些"描述简单但动手嫌烦"的任务——比如批量缩小图片。但当他继续使用时,系统通知他:额度用光,请绑定信用卡购买更多 Token。
他的反应极其激烈:卸载 IDE,乖乖用回 Emacs,而且"压根没觉得少了 AI 有什么不习惯"。
这个反应看似极端,但触及了一个被刻意回避的问题:LLM 正在把"思考"变成一项按量计费的服务。当你为了让自己能"思考"还要无休止地交费时,这种经济模型本身就在扭曲开发者的行为。
年纪大的好处:看过太多"银弹"
Harris 写代码很多年了。这波 AI 热潮让他想起早年"低代码/无代码"工具的重大突破承诺。他引用了 Fred Brooks 的《没有银弹》——软件工程的经典必读。
Brooks 区分了两种复杂性:
- 偶然复杂性:编写代码本身的繁琐、笨重
- 本质复杂性:设计出正确、优雅、可维护的抽象架构
现代编程语言、标准库、Web 框架已经大幅削减了偶然复杂性。AI 似乎是这一进程的最新迭代。但 Brooks 的核心论断至今成立:
即使更好的工具削弱了偶然复杂性,本质复杂性还在那儿。设计出正确的抽象架构依然是一项无比艰巨的工作,这种复杂性哪儿也去不了。
LLM 的"高级自动补全"面对本质复杂性时,能发挥多大作用?也许通过精心设计提示词可以引导它,但到了那个地步,负责引导的人还不如自己把方案设计出来——因为 LLM 根本无法解释它为什么选择了某条特定路径。
每一次抽象,也是一次遮蔽
Harris 的前职业是数据记者,这让他对"数据能说谎"有本能警觉。他引用 James Scott 的《国家的视角》:国家为了管理森林,将其抽象为"能用于造船的木材比例",然后用单一树种林场取代原生森林。
能量化的东西,就能被改造。但每一次量化,也是一次对复杂现实的遮蔽。
作为程序员,我们每天都在做类似的妥协:日期必须精确、人名必须简单规范、数据必须完整一致。我们决定系统反映现实的哪些方面,又该丢弃哪些方面。
而 LLM 的问题在于:对它来说,模型本身就是现实。它无法跳出来审视自己的局限性——就像金鱼无法意识到水温一样。
Harris 举了 DOGE 团队在社会保障局的拙劣表演:他们发现 900 万条记录的出生日期在 120 多年前却没有死亡日期,马斯克立即断言这是大规模欺诈。但他们本可以质疑数据质量、查证实际付款情况、或者咨询 SSA 专家。他们没有。他们照单全收了字面数据,因为"这太合他们胃口了"。
以他们自己狂野的方式,DOGE 团队正在重演导致 LLM 走偏的同款逻辑。
摩擦是上天的恩赐
这是全文最锋利的段落。
Vibe Coding 的魅力在于消除一切摩擦。但 Harris 说:我需要这种摩擦。
当写代码变得非常困难时,这说明在当前架构下你正走向歧路。它在提醒你:应该认真考虑重新设计。遇到这种情况,Harris 会出去散个长步,给大脑留空间换个角度思考。
他还强制自己在写新功能前先写架构决策记录(ADR)。写着写着,他常意识到自己对最初直觉太盲目自信了——而这对于未来的继任者来说,也是记录"当年那帮家伙到底在想什么"的绝佳途径。
LLM 对待摩擦的态度是"闭着眼睛直接写过去"。它大概率能写出能跑的代码,测试也能通过——尤其是如果测试也是 LLM 写的话。但它根本不知道自己为什么选择了那条路,也感受不到一种架构方案是否比另一种更清晰优雅。
更深层的问题:当 LLM 营销把"摩擦"视为眼中钉时,他们实际上在暗示什么?
既然我们能捏出 AI 用户画像,还要什么用户调研?既然 AI 能直接吐出网页排版,还要什么设计师?既然我们自己就是统帅 AI 智能体大军的经理,还要什么项目经理?
软件开发是协作过程。砍掉这些角色肯定能让团队跑得更快,但绝不意味着交付的产品会更好。而且,这个过程会变得无比孤独。
我极其在乎
Harris 不使用 LLM 的最简单理由:他太热爱编程了,不想把它拱手让给机器。
就像如果我是个画家或音乐家就不会求助于 AI 一样,编程是我表达创造力的一种方式。
他曾在艰难时期用写代码化解悲伤。研究表明玩俄罗斯方块可以预防 PTSD——让大脑中负责排列和旋转图形的部分保持活跃,能阻碍创伤记忆的形成。编程对他来说是类似的避风港:
它之所以管用,正是因为它是一项需要投入精力的工作。如果我只盯着最终结果,这个疗愈的过程就会大打折扣。
而 LLM 是不可能"在乎"的。它可以装得非常逼真,但它依然只是一个试图模仿人类心智的赝品。它不会因为犯错而感到懊恼,也不会努力试图改进。它永远无法被追责,因此,我们永远不能把道德责任外包给它。
未来路在何方?
Harris 不假装能预知未来。也许技术会发展到他会后悔没早点熟悉它的地步。又或者,炒作之上的金融纸牌屋会轰然倒塌。
如果那一天到来,他希望我们能把软件开发重新建设成一种充满人性关怀的实践。