为什么我不凭感觉编程
原文:Why I Don't Vibe Code by Jacob Harris
核心论点
作者从成本、经验、抽象复杂性、数据盲区、摩擦意义、责任感和创作乐趣七个角度,解释了为什么始终无法接受 vibe coding。
核心结论:LLM 擅长处理偶然复杂性,但本质复杂性(设计出正确、优雅、清晰的抽象架构)依然需要人类判断。vibe coding 适合专家,但不适合承担关键责任的场景。
七大理由
1. 成本:Token 账单令人不安
作者在使用集成 LLM 的 IDE 时,被提示额度用完、需要绑卡购买更多 Token。作为一个极度节俭的人,这让他彻底放弃了 AI 编程工具。
2. 经验:老程序员的后发优势
作者引用了 Fred Brooks 的经典理论——偶然复杂性(编写代码本身的繁琐)和本质复杂性(设计出正确优雅的架构)。
- AI 削减了偶然复杂性:自动补全、重构工具、框架
- 但本质复杂性还在那儿:设计决策、系统架构、罕见边缘情况
- 经验帮助识别哪些摩擦是重要信号——代码写起来特别困难,往往意味着架构方向错了
3. 抽象:AI 的数据盲区
AI 模型的构建基础极度剥离了细节。人类能看到上下文(格式、标题、作者、链接的网站),LLM 仅仅在纯粹由字母构成的世界里运转。
作者以 DOGE 在 SSA 数据库上犯的错误为例:DOGE 发现 900 万条记录出生日期在 120 多年前,断定是欺诈,但他们拒绝质疑数据质量本身,拒绝询问实际执行者,照单全收了字面数据得出了错误的结论——这和 LLM 的逻辑一模一样。
4. 摩擦:协作的重要信号
摩擦是软件协作中的重要线索来源:代码写起来特别困难往往意味着架构方向错了;ADR 逼迫你写下假设和后果;LLM 会极其配合地闭眼穿越摩擦,最终生成一堆奇形怪状的抽象逻辑。
5. 责任感:永远不能外包的道德责任
代码 Bug 可能导致灾难性的后果(报纸更正、公共服务崩溃)。LLM 永远无法被追责。当 LLM 表现好时它是天才,当它删除了所有基础设施时错的却是你。
6. 创作乐趣:编程是表达创造力的方式
把一个朦胧的想法一点点塑造变成真实的系统——这种喜悦不能让给机器。团队协作中挺身而出主动承担责任的体验,是 LLM 无法替代的。
7. 其他可笑的理由
- AI 聊天机器人默认的油腔滑调语气让作者起鸡皮疙瘩
- 作者享受头脑风暴和学习新知识的过程,不一定需要把每个脑洞变成现实产品
结论
Vibe coding 成功的两种情况:开发者本身已经是该领域的专家(能驾驭 AI 的工作),或者搞砸了也无伤大雅的小项目。
对于需要真正承担关键责任的系统,我们需要自己判断猫头鹰怎么画。
中译 via 宝玉