AI 时代程序员的转变
过去更注重编程细节以及如何实现,现在 AI 在实现上和细节上已经更好,现在程序员更看重以下两点:
- 实现什么:由认知和想象力决定,认知决定上限,AI 能写出优雅的代码但是不知道用户的痛点、业务的瓶颈,这些来自于对行业的理解、用户的洞察、技术的敏感度等等...
- 如何组合:由工程能力决定,过去工程能力体现在代码的细节实现上,现在体现在技术的组合架构上,需要理解每个组件的能力边界,知道如何把它们拼装成一个可靠的整体。
用自然语言来编程
什么是 Vibe Coding
Vibe Coding,直译感觉编程或氛围编程,它有两个核心特征:
- 用自然语言编程,无需学习编程语言直接用中文或英文与 AI 对话,描述需求,AI 就会产生代码。
- 为什么叫氛围或感觉,因为描述是模糊的、主观的、带情感色彩的。比如 “界面要简洁大气”,这些感觉而非精确指令,AI 都能理解并转换为代码。 编程的门槛正在从“精通语言”向“表达意图迁移”,过去必须掌握编程语言的每个细节,容不得一点模糊(比如变量声明、循环结构、条件判断、函数调用等等这些语法元素构建完整逻辑,即使少一个冒号都可能会让程序无法运行)。
而 Vibe Coding 不同,它的核心是 意图表达而非精确控制。无需告诉计算机每一步怎么做,而是用自然语言描述“想要什么”(What)和“期望的感觉”(Vibe)。AI 理解意图和氛围感,生成符合预期的代码。
传统编程和 Vibe Coding 对比:
传统编程中,开发者是翻译者把想法翻译成计算机能理解的代码,Vibe Coding 中,AI 承担了翻译者的角色,开发者只需清晰表达意图和期望的感觉。
Vibe Coding 为什么现在才出现
在以前,计算机听不懂人类的自然语言。现在大模型的出现改变了这一切。
大模型不仅能理解自然语言,还能捕捉其中的措辞差异推理出隐含意图。同时还具有强大的推理能力,可以进行 Step By Step 的逻辑推导,从高层次意图推导出具体实现方案。
这是传统编程方式无法做到的,而且当大模型遇到不确定选择时,还会主动询问,比如询问使用哪种数据库。
同时也不同于过去的低代码工具,低代码本质上是让用户在预定义组件去选择和组合,能力边界一开始就固定住了,而 Vibe Coding 则可以真正理解想要做什么然后自主生成实现方案。
Vibe Coding 的边界
Vibe Coding 最大的问题在于:它无法保证代码绝对正确,也无法保证自生成的测试程序能充分校验代码。它很难发现自己的逻辑漏洞。
根源在于 AI 的思维惯性,当 AI 按某种逻辑编写代码时,生成的测试用例会延续同样的思路,是一种恶性循环,可能在一些并发场景和边界情况才能发现问题所在。
也就是:Vibe Coding 改变了编程方式,但没有降低对开发者的要求。(精通语法 -> 理解架构、编写代码 -> 表达意图、质量把关)
总而言之,现如今开发者更需要注重对业务、架构的理解,才能更好的借助 AI 去实现产品以及构建测试方案和质量把关,AI 目前更多的来说只是助手,最终的质量把关仍然需要人来完成,不能过于信赖 AI。
Spec-Coding(Vibe Coding 的进化)
什么是 Spec-Coding
Spec-Coding 是 Vibe Coding 在大型项目中的进化形态。核心思想是:先用自然语言编写详细的设计文档,然后让 AI 基于这些文档生成代码。也就是增加了一个中间层:设计文档。
需求 -> AI 协助生成设计文档 -> AI 基于文档生成代码 -> 人工审核
为什么需要 Spec-Coding
当项目逐渐演进,纯 Vibe Coding 会遇到几个问题:
- 上下文丢失:多轮对话中,AI 可能忘记之前的决策导致前后不一致。
- 团队协作困难:不同开发者与 AI 的对话不一致、技术规范不统一。
- 质量难以把控:没有明确的设计文档,代码审查缺少参照标准。
- 迭代维护成本高:需要修改时,需要重新让 AI 理解整个项目。
Spec-Coding 通过设计文档解决了这些问题,文档充当 AI 的记忆、团队的契约、技术规范、审核标准等等。也体现出了其中的价值:文档是生成代码的必经之路。
从 Vibe 到 Spec
Spec-Coding 不是用来取代 Vibe Coding 的。他们经常被混合使用。
- Vive Coding 适合快速原型和个人项目,需求变化快、频繁迭代。
- Spec-Coding 适合中大型商业项目,多人协作需要统一规范,长期维护质量要求高。
- 大多数情况会初期使用 Vibe Coding 快速验证想法,确定方向后转为 Spec-Coding 规范开发。