Skip to content

4.1 八大误区

在实际推广这三种方法论时,会听到很多错误说法。这一节帮你避开最常见的坑。


误区 1:"Vibe Coding 会取代所有开发方式"

❌ 错误观点
"AI 越来越强,以后所有人都会用 Vibe Coding 写代码,TDD 和 SDD 会被淘汰。"
✅ 正确理解
Vibe Coding 解决的是"快速验证"的问题,不解决"长期质量"的问题。

就像 Word 没有取代 LaTeX,Canva 没有取代 Photoshop。快速工具和精密工具服务于不同的需求。Karpathy 本人在 2026 年也提出了"Agentic Engineering"作为 vibe coding 的进化——更强的工程化,而不是更随意的编程。

误区 2:"TDD 太慢了,不值得"

❌ 错误观点
"TDD 让开发变慢 30%,项目赶不上进度。"
✅ 正确理解
初始开发确实慢 15-35%,但整个生命周期更快。

Nagappan et al. (ICSE 2008) 的研究表明,使用 TDD 的团队缺陷密度降低 60-90%。减少的调试时间远超增加的测试编写时间。

但 TDD 不适合所有项目——探索性原型、快速变化的需求、一次性脚本,用 TDD 确实是浪费。

误区 3:"SDD 就是写文档,瀑布模型换了个名字"

❌ 错误观点
"先写规格再做开发,这不就是瀑布模型吗?敏捷时代早就淘汰了。"
✅ 正确理解
SDD 和瀑布模型的区别在于"规格是活的"。

瀑布模型的文档写完就冻结,改起来要经过漫长的审批。SDD 的规格是演进的——规格 v1.0 → 实现 v1.0 → 反馈 → 规格 v1.1 → 实现 v1.1,持续迭代。

更重要的是:SDD 的规格是机器可读的(OpenAPI、JSON Schema),能自动生成代码、测试和 Mock。瀑布模型的 Word 文档做不到这些。

误区 4:"用了 TDD 就不需要 SDD 了"

❌ 错误观点
"我测试覆盖率 95%,不需要什么规格文档。"
✅ 正确理解
TDD 回答"代码对不对",不回答"做的东西对不对"。

一个测试覆盖完美的用户登录模块,可能完全没有考虑"密码重置邮件该发到哪里"这个业务问题。测试验证的是实现,规格定义的是意图。

两者互补:SDD 确定"做什么",TDD 验证"做得对不对"。

误区 5:"Vibe Coding 只有不懂编程的人才用"

❌ 错误观点
"Vibe Coding 是给不会写代码的人用的,真正的程序员不需要。"
✅ 正确理解
Karpathy 本人就是顶尖程序员,他也在用 vibe coding。

Vibe Coding 的价值不在于"替代编程能力",而在于加速探索和验证。经验丰富的开发者用 Vibe Coding 做原型验证,用 TDD/SDD 做生产代码。

知道什么时候用 Vibe Coding、什么时候切换到严谨方式——这本身就是一种高级技能。

误区 6:"SDD 只适合 API 开发"

❌ 错误观点
"SDD 就是写 OpenAPI 文档,只有做 REST API 才用得上。"
✅ 正确理解
SDD 是一种思维方式,不局限于 API。

- API 开发:用 OpenAPI
- 分布式系统:用 TLA+ 做形式化验证
- 业务行为:用 Gherkin (BDD)
- 事件驱动:用 AsyncAPI
- 数据模型:用 JSON Schema

核心是"先定义清楚做什么,再做"——无论用什么工具。

误区 7:"选了一种就不能用其他了"

❌ 错误观点
"我们团队决定全面采用 TDD,所有代码都用 TDD 写。"
✅ 正确理解
最佳实践是根据功能的风险级别选择方法论。

同一个项目中:
- 核心 API → SDD + TDD
- 辅助脚本 → Vibe Coding
- 探索性原型 → Vibe Coding → 确认后转 SDD

如 RedMonk 分析师 Rachel Stephens 所说:"'Vibe Coding 和 SDD 不是对立阵营...不是非此即彼,而是'是的,而且'。'"

误区 8:"AI 让方法论不再重要"

❌ 错误观点
"有了 AI 编程助手,用什么开发方法论都无所谓了。"
✅ 正确理解
恰恰相反——AI 让方法论比以往更重要。

人类写的代码有歧义,代价是几小时的调试。AI 生成的代码有歧义,代价是数千行听起来合理但微妙错误的输出。

在 AI 时代,方法论的核心价值变了:
- TDD:用来验证 AI 生成的代码是否正确
- SDD:给 AI 提供精确的输入约束
- Vibe Coding:利用 AI 的速度快速探索

AI 是引擎,方法论是方向盘。没有方向盘的引擎,只会跑偏。

误区速查表

#误区真相
1Vibe Coding 会取代一切快速验证和长期质量是两个不同需求
2TDD 太慢不值得初始慢 15-35%,但长期更快
3SDD 就是瀑布模型SDD 的规格是活的、机器可读的
4TDD 够了不需要 SDDTDD 验证代码,SDD 验证方向
5Vibe Coding 只给新手用顶尖开发者用它加速探索
6SDD 只适合 API 开发SDD 是思维方式,适用于各种场景
7选了一种不能用其他同一项目中可以按功能灵活选择
8AI 让方法论不重要了AI 让方法论比以往更重要

📌 本节核心要点

误区真相
Vibe Coding 会取代一切快速验证和长期质量是两个不同需求
TDD 太慢不值得初始慢 15-35%,但整个生命周期更快
SDD 就是瀑布模型SDD 的规格是活的、机器可读的、持续演进的
TDD 够了不需要 SDDTDD 验证代码正确性,SDD 验证产品方向
Vibe Coding 只给新手用Karpathy 等顶尖开发者用它加速探索
SDD 只适合 API 开发SDD 是"先定义清楚再做"的思维方式
选了一种不能用其他同一项目中可以按功能灵活选择
AI 让方法论不重要了AI 让方法论比以往更重要——歧义成本放大了

知识检查

问题 1:为什么说"AI 让方法论比以往更重要"而不是"AI 让方法论过时了"?

查看答案

因为 AI 放大了歧义的成本。在人类写的代码中,歧义的代价是几小时的调试。但在 AI 生成的代码中,歧义的代价是数千行听起来合理但微妙错误的代码

  • TDD:用来验证 AI 生成的代码是否正确
  • SDD:给 AI 提供精确的输入约束
  • Vibe Coding:利用 AI 的速度快速探索

AI 是引擎,方法论是方向盘。没有方向盘的引擎,只会跑偏。

问题 2:有人说"我测试覆盖率 95%,不需要规格文档"。这个观点有什么问题?

查看答案

这是误区 #4。TDD 回答"代码对不对",不回答"做的东西对不对"。

一个测试覆盖完美的用户登录模块,可能完全没有考虑"密码重置邮件该发到哪里"这个业务问题。测试验证的是实现,规格定义的是意图。两者互补:SDD 确定"做什么",TDD 验证"做得对不对"。

问题 3:判断以下说法的对错,并说明理由:

  • "SDD 就是瀑布模型换了个名字"
  • "Karpathy 提出了 Vibe Coding,说明他自己也这么写代码"
  • "同一个项目里不能用两种不同的方法论"
查看答案
  1. 。SDD 和瀑布的关键区别:SDD 的规格是活的(随需求演进)、机器可读的(能自动生成代码/测试/Mock),瀑布模型的文档是冻结的 Word 文档。
  2. 不确切。Karpathy 提出 Vibe Coding 是描述一种现象,不代表他所有项目都用这种方式。他在 2026 年还提出了更系统化的 "Agentic Engineering"。
  3. 。最佳实践正是按功能灵活选择:核心 API 用 SDD+TDD,辅助脚本用 Vibe Coding,原型用 Vibe Coding 后转 SDD。

下一节预告

避开误区后,来做几道练习题巩固一下。

下一节:练习与巩固