AI 把代码跑起来的成本几乎压到了零。写功能、出原型,速度快得离谱。但瓶颈也跟着变了:现在最难的地方,不是它能不能跑,而是以后还能不能改。
Vibe Coding 最大的问题,是它容易让人产生一种错觉:能跑就意味着做完了。可真要算“完成”,你还得能改它,得能跟别人解释它。很多人用 AI 快速出了原型,到 review 阶段才发现,类名自己都不认识,文件之间的关系完全理不清。AI 帮你省下的时间并没有消失,而是连本带利地转移到了 review、debug 和重构 里面。
我听说现在大厂的程序员们开始重新把软件工程捡起来了。这件事很值得注意。
AI Agent 写代码有个典型毛病:它喜欢按层来,先把数据库层写完,再写应用层,最后写前端。每一层单独看都还行,拼到一起就出问题。数据库的设计会影响前端怎么展示,你得让这些层早点碰一碰,才知道合不合理。Agent 偏偏总是最后才组装。
怎么解决?经典软件工程里有个概念叫 tracer bullet(追踪子弹):做一个功能时不要按层横着切,要纵向切一刀,从数据库到后端再到前端,先把一条最窄的路径跑通,确认可行后再往两边扩展。你把这个词写进给 Agent 的提示词里,Agent 就会在推理过程中主动使用它。
这背后有个很实用的原理:经典编程书籍 几乎肯定在模型的训练数据里。你在 prompt 里用上这些专业术语,就相当于激活了模型脑子里对应的那片知识。这些术语像一把钥匙,能打开模型已经学过、但平时不会主动调用的能力。Grill Me Skill 的作者 Matt Pocock 管这个叫 leading word,引导词。类似的概念还有很多。比如 deep modules(深模块),讲的是模块要接口简单、功能强大,别搞一堆浅薄的小模块互相调来调去。比如 ubiquitous language(通用语言),讲的是团队里所有人对同一个概念要用同一个词,代码里也要用这个词,别堆一堆同义词让人猜。
这些都是二三十年前的老概念。到了 AI 时代,它们反而更好用了。因为你在跟模型协作时,术语越精确,输出就越可能精确。
推荐三本书,都不厚,挑核心章节看就够用:《程序员修炼之道》,里面有很多关于怎么写可维护代码的实战思路。《软件设计哲学》,讲的是怎么在模块层面做好设计。《领域驱动设计》,讲的是怎么用统一的语言把业务和代码对齐。
Vibe Coding 让写代码变得很快,但快不等于完成。能改、能维护、能跟别人解释清楚,这些老功夫,现在反而成了最值钱的东西。
|