文档先行
先写文档是在降噪
很多项目不是写不出来,而是边写边变。
今天要做 API 网关,明天加图片模型,后天接视频任务,最后连接口边界都说不清。
文档先行的目的不是做形式,而是把不同层次的问题分开:
- 需求是什么。
- 技术怎么选。
- 接口怎么暴露。
- 开发怎么拆。
一条简单的流水线就够用。
PRD.md -> TECH.md -> API.md -> FLOW.md -> PLAN.md -> TEST.md -> DEPLOY.md |
每份文档只回答自己的问题。PRD 不写实现细节,TECH 不改业务目标,PLAN 不重新定义架构。这样讨论时不会混在一起。
每一步都要能审阅
文档只写给自己看,容易变成备忘录。真正有用的文档,应该能被审阅。
flowchart LR
A[PRD 审目标] --> B[TECH 审方案]
B --> C[API 审契约]
C --> D[PLAN 审执行]- PRD 审目标:产品解决什么问题,哪些算 MVP,哪些先不做。
- TECH 审方案:为什么选这个框架,为什么这样部署,风险在哪。
- API 审契约:字段名、错误码、状态流转、兼容策略是否明确。
- PLAN 审执行:每个里程碑能否独立验证,测试文件放哪,完成标准是什么。
文档先行不是多写几页字,而是在每个阶段设置一次刹车。
这次刹车很重要。它让」我以为你要的是这个」尽早暴露,而不是等代码写完才发现方向错了。
计划要拆到可验证
好的计划不是任务清单,而是验证清单。
「接入模型」太大,不好验收。」新增 POST /v1/generate,支持文本输入,非法参数返回 INVALID_PARAMETER「就清楚得多。
每个里程碑要满足三个条件:
- 输入明确。
- 输出明确。
- 有测试或命令可以验证。
M1: 完成模型列表 API |
拆到这个粒度,开发不容易跑偏。中途换人,也能从文档接住上下文。
文档不是一次性产物
文档先行不等于写完就冻结。项目推进后,真实问题会出现:
- 某个模型不支持字段。
- 某个部署环境限制运行时。
- 某个接口要兼容旧客户端。
这些变化要回写到对应文档。参数变化写 API,架构变化写 TECH,执行顺序写 PLAN。
不要只改代码。代码说明系统现在怎么运行,文档说明为什么变成这样。
长期看,文档先行保护的是协作成本。它让需求、技术、测试、部署都有共同参照物。项目越多人参与,这个参照物越值钱。