编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 质量保障

  • 产品思考

  • 软实力

  • 开发流程

    • README
    • 敏捷开发实践指南
    • Scrum框架入门指南
    • 版本发布流程设计
    • 代码分支管理策略
    • 需求评审方法实践
      • 一、需求评审不是 PRD 朗读会
      • 二、PRD 评审——工程师该问的 7 个问题
      • 三、技术方案评审——不要只给一个方案
        • 3.1 方案对比表
        • 3.2 评审时要确认的 5 个风险
      • 四、需求变更——评审没做好的代价
      • 五、工程师在评审中的话语权
      • 六、小结
    • 项目管理工具指南
    • 线上事故响应流程
    • 技术文档管理规范
  • Git应用

  • 技术模版

  • 技术规范

  • markdown

  • mermaid

  • license

  • 博客部署

  • 技术招聘

  • 测试经验

  • 技术
  • 开发流程
杨充
2020-01-19
目录

需求评审方法实践

# 需求评审方法实践

PRD评审、技术方案评审、风险识别——评审不仔细,开发两行泪

# 一、需求评审不是 PRD 朗读会

❌ 常见场景:
  产品经理投屏 PRD,逐页念过去。
  工程师坐着听,偶尔问一句"这个字段从哪里取"。
  没有人提出反对意见。没有人在算开发成本。没有人在想边界条件。
  评审结束——"都没问题吧?好,开始开发。"
  → 两周后开发到一半发现逻辑无法闭环,需求变更从头开始。
1
2
3
4
5
6

评审的目的不是"确认需求"——是"在写代码之前把所有疑问都炸出来"。 评审结束后还有疑问的,是评审没做好。


# 二、PRD 评审——工程师该问的 7 个问题

1. 这个需求解决谁的什么问题?(有没有数据?)
   → PRD 上写"用户需要 XX 功能"→ 追问:多少用户?什么场景?有没有工单/数据?

2. 异常路径怎么处理?
   → PRD 只写了正常路径 → 追问:"如果支付中途网络断了呢?""如果商品下架了呢?"

3. 和现有功能有没有冲突?
   → 新需求加了一个"自动取消订单"→ 老功能里有个"手动取消"→ 两个同时触发怎么办?

4. 优先级是什么?不做会怎样?
   → 不是所有需求都是 P0。如果资源不够,这个功能和另外 3 个比,谁先做?

5. 数据从哪来?更新频率?
   → "这个页面要展示推荐商品"→ 推荐结果从哪个接口取?实时还是离线?多久更新一次?

6. 边界数据——最大、最小、为空、重复
   → "用户可以填备注"→ 最长多少字?可以空吗?重复提交同一内容怎么处理?

7. 上线后怎么判断做对了?
   → 验收标准是什么?"用户满意度提升"不可测量——"使用率 > 20% 且投诉率不升"可测量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

评审时你少问一个问题,开发中就可能多花两天。


# 三、技术方案评审——不要只给一个方案

# 3.1 方案对比表

技术方案不是写"我做了什么"——是写"我为什么选了这个而不是别的"。

方案对比表(必须有):

| 维度 | 方案A:MQ异步 | 方案B:线程池 | 方案C:不处理 |
|---|---|---|---|
| 可靠性 | 消息持久化 | 重启丢失 | N/A |
| 复杂度 | 引入新组件 | 纯代码 | 无 |
| 性能影响 | +50ms | +5ms | 0 |
| 开发成本 | 2 天 | 0.5 天 | 0 |
| **结论** | ✅ 推荐 | 备选 | 不可接受 |
1
2
3
4
5
6
7
8
9
10
11

没有对比的方案不是方案——是通知。

# 3.2 评审时要确认的 5 个风险

风险 1:数据一致性
  → "订单状态改了,但库存没扣——这种不一致会持续多久?最终能一致吗?"

风险 2:性能影响
  → "这个新接口调用链上多了 3 次 RPC——P99 预估多少?测试过吗?"

风险 3:下游影响
  → "你改了用户表的字段——哪些下游服务依赖这个表?通知过吗?"

风险 4:回滚复杂度
  → "如果上线后发现有问题——回滚是纯代码回滚,还是需要回滚数据库?"

风险 5:灰度方案
  → "有没有灰度计划?怎么确认上线后一切正常?"
1
2
3
4
5
6
7
8
9
10
11
12
13
14

评审最大的价值不是挑刺——是让写方案的人自己发现没想过的问题。 你在评审会上问一句"数据库迁移有回滚脚本吗"——对方一愣——你帮他避免了一个生产事故。


# 四、需求变更——评审没做好的代价

需求变更的两种类型:

类型 1:合理的变更
  "竞品突然上线了一个功能,我们必须跟进。"
  → 接受,但要重新排优先级:新需求和正在做的功能谁更重要?

类型 2:评审不充分的变更
  "开发中发现 PRD 没写这个逻辑,现在要补。"
  → 这是评审的锅。评审时应该发现的问题没发现,现在用开发时间买单。
1
2
3
4
5
6
7
8
9

减少类型 2 的唯一办法:评审时多花 30 分钟,开发时省 3 天。


# 五、工程师在评审中的话语权

很多工程师在评审会上沉默——觉得自己"只管实现"。但你沉默的代价是:

产品经理说"这个功能很简单吧" → 你不说话 → 他默认"一天能做完"
→ 你实际上需要 5 天 → 延期 → 产品经理觉得你做慢了
→ 下次他更不会问你的意见,因为"上次问你也没说"
1
2
3

在评审中建立话语权就一句话:用数据说话,而不是用情绪。

❌ "这个做不了,太复杂了。"
  → "太复杂"是主观评价,产品经理听不懂。

✅ "这个功能需要对接 3 个外部接口、改 2 个数据库表、新增 1 个页面。
   乐观估计 5 天。如果我们只做核心路径(砍掉 A 和 B),3 天就够了——你觉得 A 和 B 必须这次做吗?"
  → 你把"复杂"翻译成了"时间 + 范围",产品经理可以和你商量。
1
2
3
4
5
6

# 六、小结

评审三阶段:

1. PRD 评审   → 问 7 个问题,确认"做什么"没有歧义和遗漏
2. 技术方案评审 → 对比表 + 5 个风险点,确认"怎么做"没有坑
3. 需求变更   → 区分"合理变更"和"评审不到位导致的变更"

一句话原则:
  评审多花 30 分钟,开发省 3 天。你在评审会上问的每一个问题,都是在为未来的自己省时间。
1
2
3
4
5
6
7
8

行动清单:

  • [ ] 下次审 PRD,带着 7 个问题的清单去——哪怕只挑了其中 3 个问
  • [ ] 下次写技术方案,不要只给一个——至少给一个对比表(2-3 个方案)
  • [ ] 下次评审会上有异议,用"时间 + 范围"的语言表达,而不是"太复杂"
#需求评审
上次更新: 2026/06/15, 14:32:53
代码分支管理策略
项目管理工具指南

← 代码分支管理策略 项目管理工具指南→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式