返回 FEED
OTHER2026-07-03

为什么我不"凭感觉编程"

Jacob Harris 长文反思 Vibe Coding 热潮,从多个角度解释为什么他选择不用 LLM 辅助编程

我是个守财奴

为了让自己能"思考"还要无休止地给服务交钱,这让他浑身不自在。当发现额度用光需要绑定信用卡时,他直接卸载 IDE,用回了 Emacs——然后发现没有 AI 也没什么不习惯的

本质复杂性不会消失

引用弗雷德·布鲁克斯《没有银弹》:

  • 偶然复杂性(accidental complexity):编写代码本身的繁琐——已被现代语言、框架、IDE 大幅削弱
  • 本质复杂性(essential complexity):设计出正确、优雅、清晰且易于维护的抽象架构——依然存在

LLM 的"高级自动补全"面对本质复杂性时,能发挥多大作用?也许通过精心设计 prompt 可以引导它,但负责引导的人还不如自己把方案设计出来——因为 LLM 根本无法解释为什么选择某条路径。

摩擦是上天的恩赐

当写代码变得非常困难时,这说明在当前架构下正走向歧路。它在提醒你应该认真考虑重新设计。

LLM 驱动开发对待摩擦的态度是不管三七二十一,闭着眼睛直接写过去。它大概率能写出能跑通的代码,测试也能通过——但它不知道自己为什么选择了那条路,感受不到摩擦,也无法解释一种架构方案是否比另一种更清晰优雅。

每一次抽象,同时也是一次遮蔽

引用詹姆斯·斯科特《国家的视角》:国家通过抽象和分类让人口和财产变得清晰可辨。能量化的东西,就能被改造。但作为程序员,我们简化的模型可能会给我们提供洞见,却无法捕捉到这些洞见背后的潜在因素

LLM 永远无法做到这种元认知——对它来说,模型本身就是现实。正如 Robin Sloan 指出:AI 模型的构建基础和它们看待世界的方式,都被极度剥离了细节。

DOGE 的同款逻辑

DOGE 审查 SSA 数据库,发现 900 万条记录的出生日期在 120 多年前却没有死亡日期。马斯克断言这是欺诈。但他们本可以:

  • 质疑数据质量
  • 查查实际是否有钱打进这些账户
  • 找个 SSA 专家解释

他们没有。他们直接照单全收了字面数据,并草率得出错误结论。这正是 LLM 的同款逻辑:拒绝考虑数据字面意思之外的替代解释,死死咬住一个极其简化的解释,仅仅因为太合胃口。

责任感太关键了

LLM 是不可能"在乎"的。它不会因为犯错而感到懊恼,也不会努力试图改进。它永远无法被追责,因此,永远不能把我的道德责任外包给它

当 LLM 表现良好时,它是即将取代所有程序员的天才;当它删除了你的基础设施或在测试结果上"撒谎"时,错的却是你——谁叫你没把 prompt 精确配置好,没能"哄"着 LLM 给出正确输出。

核心 takeaway

Vibe Coding 省时的前提是你脑子里已经有架构了。没有的话,就只是让 AI 帮你试错而已——速度加快但方向还是你的。

摩擦和责任感才是高质量软件的真正护城河。 不是要不要摩擦,而是能不能识别摩擦出现在哪一层。Vibe Coding 的真正风险是让你以为没摩擦了——实际上摩擦只是变得更隐蔽了。