1.1 小明的方法论困惑——三种方式,一个项目
小明是一个有三年经验的开发者。公司启动了一个新项目——内部员工管理系统,小明被指定为技术负责人。
项目启动会上,三个同事提出了三种截然不同的开发方式:
小明听完更困惑了:三种方法听起来都对,但它们说的完全不是一回事。到底该选哪个?
三个人的故事
为了理解这三种方法论,让我们看看三个人面对同一个任务——"实现一个用户登录功能"——会怎么做。
老王的做法:TDD(测试驱动开发)
老王打开编辑器,先写了一个测试:
# 老王第一步:写测试(此时登录功能还不存在)
def test_login_success():
auth = AuthService()
result = auth.login("admin", "correct_password")
assert result.success is True
assert result.token is not None
def test_login_wrong_password():
auth = AuthService()
result = auth.login("admin", "wrong_password")
assert result.success is False然后他运行测试——红色,失败。因为 AuthService 根本不存在。
接着他写最简单的代码让测试通过——绿色。最后重构代码让它更优雅——重构。
这就是 TDD 的核心循环:红色 → 绿色 → 重构。
小李的做法:SDD(规格驱动开发)
小李打开编辑器,先写了一个 OpenAPI 规格文档:
# 小李第一步:写规格(此时还没写任何代码)
openapi: 3.0.0
paths:
/api/login:
post:
summary: 用户登录
requestBody:
content:
application/json:
schema:
type: object
required: [username, password]
properties:
username: { type: string, minLength: 3 }
password: { type: string, minLength: 8 }
responses:
'200':
description: 登录成功,返回 token
'401':
description: 用户名或密码错误写完规格后,他用工具自动生成了代码骨架、Mock 服务器和测试。前端可以基于这份规格立刻开始开发,不用等后端。
小张的做法:Vibe Coding(氛围编程)
小张打开 Cursor,用自然语言跟 AI 说话:
小张: "帮我做一个用户登录功能,用 Python Flask,
支持 JWT token,密码要 bcrypt 加密,
要有错误处理和日志。"AI 几秒钟就生成了完整代码。小张运行了一下——有个小错误。他继续:
小张: "运行报错了,说 import jwt 找不到,帮我修复"AI 修复了依赖问题。小张又加了几个功能。两小时后,登录功能跑起来了。
小明的顿悟
看完三个人的做法,小明发现一个关键事实:
TDD:这段代码正确吗?——关注实现质量
SDD:我们在构建正确的东西吗?——关注需求对齐
Vibe Coding:能不能跑起来?——关注快速验证
不是哪个更好,而是它们解决的问题不一样。
那小明最后怎么选的?
剧透:小明没有选任何一种——他三种都用了。
- 第一周:用 Vibe Coding 快速出原型,让产品经理确认需求
- 第二周:需求确认后,用 SDD 写 API 规格文档,前后端并行开发
- 之后:核心业务逻辑用 TDD 保证质量,辅助功能让 AI 帮忙
这就是后面要讲的融合工作流。但在理解融合之前,我们需要先深入认识每一种方法论。
📌 本节核心要点
| 概念 | 要点 |
|---|---|
| 三种方法论的关系 | 不是对立的,而是回答不同问题 |
| TDD 关注 | 代码是否正确 |
| SDD 关注 | 在构建正确的东西吗 |
| Vibe Coding 关注 | 能不能先跑起来 |
| 最佳策略 | 不是选一个,而是根据阶段选择合适的方法 |
知识检查
问题 1:TDD、SDD、Vibe Coding 三种方法论回答的三个核心问题分别是什么?
查看答案
- TDD:这段代码正确吗?(关注实现质量)
- SDD:我们在构建正确的东西吗?(关注需求对齐)
- Vibe Coding:能不能先跑起来?(关注快速验证)
问题 2:小明的"员工管理系统"项目,为什么三种方法论都用上了?每种分别用在什么阶段?
查看答案
- Vibe Coding(第 1 周):快速出原型,让产品经理确认需求——需求还不明确时的探索工具
- SDD(第 2 周):需求确认后,用规格文档定义 API,前后端并行开发——消除歧义的协作工具
- TDD(后续):核心业务逻辑用测试保障质量——防止回归错误的验证工具
问题 3:判断题——三种方法论是互相替代的关系,选了一种就不能用其他两种。
查看答案
错误。三种方法论是互补的,可以融合使用。同一个项目的不同阶段、不同功能模块,可以使用不同的方法论。关键洞察是"它们解决的问题不一样"。
下一节预告
三种方法论看起来完全不同,但能用一句话总结吗?下一节我们用最简短的方式定义每一种。