从需求文档到技术方案:PM 和 RD 的高效协作模式
大约 13 分钟
从需求文档到技术方案:PM 和 RD 的高效协作模式
前言
PM 和 RD 的关系,大概是互联网公司里最经典的"爱恨交织"。PM 觉得 RD 总是说"做不了",RD 觉得 PM 总是在"改需求"。
但真相是:PM 和 RD 不是对立面,而是同一枚硬币的两面。 PM 定义了"做什么",RD 决定了"怎么做"。两者配合得好,产品就能又快又好地上线;配合得不好,就是无尽的返工和互相甩锅。
本文从 RD(后端开发)的视角,探讨如何与 PM 高效协作,从需求文档平滑过渡到技术方案。
一、PM 和 RD 的经典协作痛点
1.1 痛点全景图
经典协作痛点:
┌───────────────┬─────────────────────┬─────────────────────┐
│ 阶段 │ PM 的困惑 │ RD 的困惑 │
├───────────────┼─────────────────────┼─────────────────────┤
│ 需求评审前 │ RD 为什么总不来参加 │ 这个 PRD 我完全看不懂 │
│ │ 需求评审? │ 要做什么 │
├───────────────┼─────────────────────┼─────────────────────┤
│ 需求评审中 │ RD 为什么总说做不了 │ PM 为什么总提一些 │
│ │ 我的需求很简单啊 │ 技术上不可行的需求 │
├───────────────┼─────────────────────┼─────────────────────┤
│ 开发过程中 │ RD 开发了两周了, │ PM 又改需求了, │
│ │ 什么都没给我看 │ 我已经写了一半了 │
├───────────────┼─────────────────────┼─────────────────────┤
│ 测试阶段 │ 为什么这个功能 │ 这个边界情况 PRD │
│ │ 和我想的不一样 │ 里根本没写啊 │
├───────────────┼─────────────────────┼─────────────────────┤
│ 上线后 │ 用户反馈很多 Bug │ 那是 PM 没考虑到的 │
│ │ RD 质量不行啊 │ 交互细节 │
└───────────────┴─────────────────────┴─────────────────────┘
1.2 根本原因分析
PM-RD 冲突的三大根源:
1. 信息不对称
PM 不知道某些需求的技术成本有多高
RD 不知道某些技术限制对业务的影响有多大
→ 互相觉得对方"不专业"
2. 语言不通
PM 说的是"用户场景、转化率、留存"
RD 说的是"接口、数据表、并发"
→ 同一件事,各自的描述完全不同
3. 目标不一致
PM 的 KPI:功能上线速度、用户增长
RD 的 KPI:系统稳定性、代码质量
→ 两者的目标在某些时候是冲突的
二、需求评审的最佳实践:RD 应该问什么
2.1 评审前的准备
RD 参加需求评审前的准备工作:
1. 提前阅读 PRD(至少提前半天)
- 不要到了会议室才开始看
- 标记不理解的地方
- 初步评估技术可行性
2. 识别需求中的"坑"
- 模糊的描述:"系统应该智能推荐"
- 缺失的边界:"用户删除了怎么办?"
- 隐含的复杂性:"这个列表支持搜索、排序、分页、导出"
2.2 评审中必问的 10 个问题
RD 的"灵魂 10 问":
关于用户和场景:
1. "这个功能给谁用的?在什么场景下用?"
→ 目的:理解上下文,评估优先级和必要性
2. "用户的期望是什么?最低可接受的体验是什么?"
→ 目的:区分"必须有"和"最好有"
关于数据和逻辑:
3. "这个列表需要分页吗?支持排序和筛选吗?"
→ 目的:评估查询复杂度和是否需要 Elasticsearch
4. "数据量有多大?每天新增多少?"
→ 目的:评估数据库设计和是否需要异步处理
5. "跨多个角色的操作如何协同?"
→ 目的:评估并发控制和状态流转
关于异常和边界:
6. "如果用户没有权限怎么办?"
→ 目的:识别权限控制的复杂度
7. "如果操作失败(网络断、超时),用户看到什么?"
→ 目的:识别异常流程和容错设计
8. "用户输入错误数据(如超长文本、特殊字符),系统怎么处理?"
→ 目的:识别输入校验和数据清洗的边界
关于非功能性需求:
9. "这个功能的用户量预估是多少?并发量呢?"
→ 目的:评估性能和伸缩性需求
10. "有上线时间硬性要求吗?能不能分阶段上线?"
→ 目的:评估开发节奏和是否需要 MVP 策略
2.3 如何说"做不了"
"做不了"的艺术:
❌ 直接说"做不了"
"这个需求技术上做不了。"
→ PM 的感受:RD 在敷衍我
❌ 用技术术语搪塞
"这涉及到分布式事务的 CAP 理论,在分区容错的前提下..."
→ PM 的感受:RD 在欺负我不懂技术
✅ 正确的做法:解释成本,提供替代方案
"这个实时推荐功能需要搭建一整套推荐引擎,包括数据采集、
特征工程、模型训练和在线服务,预计需要 2-3 个月的开发时间。
如果我们先做一个基于简单规则的推荐(比如'买了 A 的人也买了 B'),
2 周就能上线,先验证用户是否真的需要推荐功能。后续再逐步迭代。"
核心公式:
"你的需求技术上可以实现,但成本是 X。
有没有一个更简单的方式可以先达到 80% 的效果?"
三、PRD 技术可读性:RD 视角的 PRD 优化
3.1 RD 眼中的好 PRD
好 PRD 的 7 个特征:
1. 有明确的用户故事
格式:作为<角色>,我想要<功能>,以便<价值>
例:"作为运营人员,我想要批量导入客户信息,
以便在活动策划时快速圈定目标客户群。"
2. 有完整的交互流程
- 用户操作的每一步
- 每个步骤界面的变化
- 用户获取反馈的方式
3. 有数据实体和关系
- 这个功能涉及哪些业务实体
- 它们之间是什么关系
- 关键字段和约束
4. 有异常情况的处理
- 网络断:给什么提示?
- 权限不足:跳转还是提示?
- 数据为空:展示什么?
5. 有验收标准(AC)
- 功能做完后如何验证?
- 什么是"完成"?
6. 有优先级标记
- P0(必须有)/ P1(应该有)/ P2(可以有)
- 帮助 RD 判断开发和取舍的优先级
7. 有非功能性需求
- 性能要求(页面加载 < 2s)
- 安全要求(权限控制粒度)
- 兼容性要求(浏览器、移动端)
3.2 RD 如何帮助 PM 改进 PRD
建议 PM 在 PRD 中增加以下章节(RD 视角):
1. 数据字典
┌──────────┬────────┬────────┬──────────┐
│ 字段 │ 类型 │ 必填 │ 说明 │
├──────────┼────────┼────────┼──────────┤
│ 客户名称 │ 文本 │ 是 │ 最长50字 │
│ 手机号 │ 数字 │ 是 │ 11位 │
│ 备注 │ 文本 │ 否 │ 最长500字 │
└──────────┴────────┴────────┴──────────┘
2. 状态流转图
待审核 → 审核通过 → 已生效 → 已失效
↓
审核拒绝
3. 权限矩阵
┌──────┬──────┬──────┬──────┐
│ 操作 │ 管理员│ 审核员│ 普通 │
├──────┼──────┼──────┼──────┤
│ 新建 │ ✓ │ ✓ │ ✗ │
│ 审核 │ ✓ │ ✓ │ ✗ │
│ 查看 │ ✓ │ ✓ │ ✓ │
└──────┴──────┴──────┴──────┘
四、技术方案反哺产品:技术约束如何提前沟通
4.1 技术约束的"前置沟通"
在 PRD 评审阶段就告知 PM 技术约束:
场景 1:数据量约束
PM:"我需要列表支持任意时间范围的查询"
RD 在评审时提出:
"这个查询跨了 3 个数据源,其中历史数据在冷存储。
建议默认展示最近 90 天,更早的数据加一个'高级查询'入口,
走异步导出。"
场景 2:实时性约束
PM:"我需要实时看到全平台的数据大屏"
RD 在评审时提出:
"全平台 200+ 指标实时计算,需要的资源量很大。
我们可以这样:Top 10 核心指标实时(延迟 < 1 秒),
其余指标准实时(延迟 < 5 分钟),行吗?"
场景 3:一致性约束
PM:"库存扣减不能超卖"
RD 在评审时提出:
"强一致性需要加锁或排队,在高并发场景下性能会下降。
我们有两种方案:
方案 A:强一致,但秒杀场景需要排队,用户可能等待 5-10 秒
方案 B:用 Redis 预扣减 + 异步确认,可能出现极少量超卖(< 0.01%)但有补偿机制
你觉得业务上能接受哪一种?"
4.2 技术方案中的"产品决策点"
技术方案中需要 PM 参与决策的事项:
1. 降级策略的产品影响
"当缓存失效时,我们可以展示 5 分钟前的数据(加'数据可能延迟'提示),
还是直接报错让用户重试?"
2. 分阶段上线的取舍
"MVP 版本我们建议先支持单文件上传,批量上传放到 V2。
你觉得从业务角度,MVP 没有批量上传能用吗?"
3. 默认值的业务含义
"新用户的默认推荐列表,是推荐'最热门的'还是'最新的'?
这影响推荐引擎的冷启动策略。"
4. 数据准确性和速度的权衡
"我们可以在查询结果加一个'精确统计'按钮,
实时计算(精确但慢)和预计算(快但可能有 5 分钟延迟),
你觉得默认展示哪个?"
五、需求变更管理流程
5.1 变更的三种类型
需求变更分类:
类型 A:信息补充型
"哦对了,这个字段导出的时候也要带上"
→ 前期遗漏,但主流程影响不大
→ 处理:评估成本,如果不影响核心架构,接受
类型 B:逻辑调整型
"审批流程从两级改成三级"
→ 核心逻辑变更,但范围可控
→ 处理:评估对现有开发进度的影响,更新排期
类型 C:方向变更型
"客户说他们想要的是另一个功能,之前那个不要了"
→ 产品方向变更
→ 处理:
1. 停止当前开发
2. 评估已投入成本
3. 重新评估新方向的可行性
4. 重新排期
5. (重要)记录变更原因,用于后续复盘
5.2 变更管理流程
需求变更的标准流程:
1. 提出变更
PM 填写需求变更单:
┌───────────────────────────────┐
│ 需求变更单 │
│ │
│ 变更内容:XXX │
│ 变更原因:XXX(业务/用户反馈) │
│ 变更影响:影响 XXX 模块 │
│ 变更优先级:P0/P1/P2 │
│ 期望上线时间:XXX │
└───────────────────────────────┘
2. 技术评估
RD 评估变更的:
- 开发工作量(人天)
- 是否影响已有功能
- 是否需要数据迁移
- 是否需要架构调整
3. 影响沟通
- 本次迭代排期是否受影响
- 是否需要砍掉其他需求
- 是否需要通知 QA 调整测试计划
4. 决策与记录
- Tech Lead + PM 共同决策
- 记录变更原因和决策
- 更新迭代计划
六、协作工具链
6.1 推荐工具组合
PM-RD 协作工具链:
需求管理: 飞书文档 / Confluence / Notion
→ PM 维护 PRD,RD 在上面评论提问
项目管理: Jira / Linear / TAPD
→ 需求拆分、任务分配、进度跟踪
设计稿协作: Figma / 蓝湖
→ RD 查看标注、切图、交互流程
技术文档: xxx 内部 Wiki / GitBook
→ 技术方案、接口文档、架构文档
即时通讯: 飞书 / 企业微信 / Slack
→ 日常沟通、问题快速对齐
代码评审: GitLab / GitHub
→ PR Review、自动化 CI/CD
API 管理: Swagger / YApi / Apifox
→ 接口定义、Mock 数据、接口测试
6.2 协作节奏建议
PM-RD 协作节奏:
每日(Daily):
- 站会同步进度(15 分钟)
- PM 旁听(可选):了解开发进度和阻塞点
每周(Weekly):
- 需求对齐会:PM 预告下周需求,RD 提前评估
- 进度同步:本周完成了什么,下周计划做什么
每迭代(Bi-weekly/Monthly):
- 迭代计划会:PM 讲需求背景和价值,RD 评估工作量
- 迭代回顾会:PM 和 RD 一起复盘协作中的问题
每季度(Quarterly):
- OKR 对齐:产品和技术目标对齐
- 技术规划:重要的技术改造和架构升级
七、真实的 PM-RD 协作案例
7.1 案例:客户报表导出功能
需求背景:
PM 提出:运营需要导出客户分析报表,包含客户基本信息、
近 12 个月的交易数据、风险评级、活跃度评分。
协作过程:
第 1 步:需求评审(PM + RD + 运营代表)
RD 提问:
- "12 个月的数据是否需要实时?" → PM 确认:可以 T+1
- "导出格式是什么?" → 运营:Excel
- "单次导出数据量有多大?" → 最多 5 万行
- "是否需要定时自动导出?" → PM 确认:先支持手动
RD 反馈:
- "12 个月全量数据实时计算会很慢,建议用 T+1 的预计算表"
- "5 万行 Excel 导出,同步模式可能需要 30 秒以上,建议用异步导出+通知下载"
第 2 步:技术方案(RD 主导,PM 确认产品决策)
RD 输出方案,其中需要 PM 确认的决策:
- 导出频率限制:每小时最多 5 次(PM 确认合理)
- 数据口径:交易数据是否包含退款订单(PM 确认:不含退款)
- 权限控制:哪些角色可以导出全量数据(PM + 安全确认)
第 3 步:开发过程
- RD 在第 2 天给出 API 的 Mock 数据,前端可以并行开发
- 第 5 天,RD 发现早期设计的报表查询性能不达标
- RD 主动找 PM 沟通:"预计算表的更新频率从每天1次
改成每天2次,增加凌晨2点和中午12点各一次更新,
这样导出数据最多延迟半天。可以接受吗?"
- PM 确认可以接受
第 4 步:测试和验收
- QA 基于 PRD 写测试用例
- RD 和 PM 一起做功能验收
- PM 发现导出的 Excel 缺少"合计行",RD 当天加上
第 5 步:上线和迭代
- 上线后 2 周,PM 反馈"部分用户导出超时"
- RD 排查:发现某几个 VIP 客户数据量远超预期
- 优化:对超过 3 万行的导出自动走异步模式
7.2 案例复盘:为什么这次协作顺利?
成功的要素:
1. PM 提前给了 PRD,RD 在评审前已经读了
2. RD 在评审中问了关键问题(数据量、实时性、权限)
3. RD 主动反馈技术约束,给出了替代方案
4. PM 对技术约束表示了理解,愿意接受折中方案
5. 开发过程中保持沟通,遇到问题及时同步
6. 双方目标一致:让功能交付而不是互相甩锅
可以改进的:
1. PRD 中对"活跃度评分"的定义不够明确
→ 开发过程中来回确认了 3 次
→ 改进:重要计算公式应在 PRD 中明确
2. 没有提前准备测试数据
→ QA 花了一天构造数据
→ 改进:RD 提供数据工厂脚本
八、总结
8.1 PM 和 RD 协作的黄金法则
1. 早沟通
→ 需求还没定稿时,RD 就可以参与讨论
→ 不要等到评审会上才第一次看到需求
2. 说人话
→ PM 不要只说"用户想要",要说清楚场景和价值
→ RD 不要只说"技术难度大",要说清楚成本和替代方案
3. 给选项
→ RD 不要只给一个"完美方案"
→ 给 2-3 个选项,标注各自的成本和收益
4. 共担责
→ 上线后出问题,PM 不要说"RD 没做好"
→ RD 不要说"PM 需求没写清楚"
→ 一起复盘,一起改进
5. 互相学
→ RD 可以了解业务指标(GMV、DAU、转化率)
→ PM 可以了解基本技术概念(缓存、异步、降级)
8.2 一句话总结
最好的 PM-RD 关系不是"你提需求我写代码",而是"我们一起想办法把这个功能做好,让用户满意"。当两个人都站在用户的角度思考时,冲突会少很多。