在氛围编程时代重新理解代码的本质

前几天有个做产品经理的朋友问我:“你们现在搞的Vibe Coding,是不是意味着以后不需要懂代码了?”这个问题让我愣了几秒,然后意识到很多人对AI编程的认知还停留在“替代写代码”这个层面。

其实,Vibe Coding不是让我们不懂代码,而是让我们站在更高的维度去理解代码。如果说传统编程中,代码是我们要精心雕琢的最终产品;那么在Vibe Coding中,代码更像是AI帮我们实现意图的中间产物。这个转变,有点像从手工制作每颗螺丝钉,到专注于设计整个机械系统的区别。

我经常用一个比喻:在Vibe Coding的世界里,提示词就是新的代码,而AI生成的代码更像是过去的可执行文件。你会认真对待你的提示词,就像过去认真对待你的源代码一样;而对于AI生成的代码,你更关心的是它能否正确执行你的意图。

但这绝不是说代码不重要了。恰恰相反,你需要对代码有更深的理解,才能写出有效的提示词。就像一位优秀的导演,不需要亲自表演每个角色,但必须懂得每个角色的表演逻辑。在Vibe Coding中,你需要知道什么样的代码结构是合理的,什么样的实现是高效的,这样才能指导AI生成符合预期的代码。

最近我在指导团队实践Vibe Coding时发现一个有趣现象:那些原本对代码理解深刻的开发者,转型做Vibe Coding后反而更有优势。因为他们能更准确地判断AI生成的代码质量,能更精准地调整提示词来优化结果。这让我想起了Google工程师总监Peter Norvig说过的一句话:“编程不是关于写代码,而是关于思考。”

那么,在Vibe Coding中,我们到底需要“知道”代码到什么程度?我的经验是:你需要知道代码的接口契约、性能特征、安全边界,但不必记住具体的实现细节。就像你开车需要知道油门、刹车、方向盘的作用,但不需要精通发动机的内部构造。

举个例子,当我需要AI帮我实现一个用户认证模块时,我会这样描述:“需要一个支持JWT令牌的认证中间件,令牌过期时间设置为2小时,需要包含刷新令牌机制。”我不需要告诉AI具体如何解析JWT,如何设置过期时间——这些实现细节交给AI就好。但我必须清楚JWT的工作原理、安全注意事项,以及刷新令牌的最佳实践。

这种认知转变带来的最大好处是,我们可以把有限的精力投入到更有价值的地方:定义清晰的业务意图、设计稳定的接口契约、建立可靠的验证机制。这让我想起亚马逊的API优先文化——他们要求所有团队都必须通过API来暴露数据或功能,这种思想在Vibe Coding中得到了极致的体现。

不过,我也要提醒大家:Vibe Coding不是银弹。它改变了我们与代码的关系,但并没有消除对技术理解的需求。就像自动驾驶汽车仍需驾驶员了解交通规则一样,Vibe Coding仍需要开发者理解软件工程的基本原则。

那么,在这个AI辅助编程的时代,我们应该如何培养自己对代码的“知道”?我认为关键是建立三个层次的认知:意图层(要解决什么问题)、契约层(输入输出是什么)、实现层(大致如何工作)。前两个层次需要深入掌握,最后一个层次只需概览理解。

说到底,Vibe Coding不是让编程变得简单,而是让编程变得更高阶。它把我们从繁琐的实现细节中解放出来,让我们能专注于真正创造价值的部分。就像计算机先驱Alan Perlis说的:“不会编程的人将被编程。”在Vibe Coding时代,这句话有了新的含义:不懂得如何定义意图的人,将被懂得的人定义。

下次当你打开编程环境,准备开始Vibe Coding时,不妨先问自己:我真正想要实现的是什么?我如何用最清晰的方式表达这个意图?至于代码的具体实现——放心,AI会帮你搞定,只要你懂得如何与它对话。