1.3 需求优先级 (MoSCoW / Kano)
一句话
优先级不是 “哪条更重要” 的投票,而是固定产能下的排队规则:先判断这条需求不做会死成什么样,再算它值多少钱,最后按 “单位产能的收益” 排序;MoSCoW 管底线(这次发布缺了就作废),Kano 管满意度(做了涨多少、不做掉多少)。
三个必须先破的误区
| 误区 | 现实 |
|---|---|
| 都很重要,所以全是 P0 | 产能固定时,优先级是排序不是标记;全是 P0 等于没排,实际执行顺序退化成 “谁先催” |
| 优先级由老板 / 客户的声音大小决定 | 决策权可以给老板,排序依据不能;没有依据的优先级,每次开会都会翻案 |
| MoSCoW 就是 P0–P3 换个说法 | MoSCoW 的 Must 有硬定义:缺了这次发布就整体作废;“很重要” 不等于 Must |
🔑 优先级排序的真正产出不是 “先做哪个”,而是 “显式放弃哪个”。没有放弃清单的排序,等于把 150 点的需求池硬塞进 45 点的产能。
MoSCoW:四档的定义比档位名重要
| 档位 | 判据(满足才算) | 常见误用 |
|---|---|---|
| Must | 缺了它,本次发布整体作废:不合规、会资损、核心流程走不通 | “这个功能老板很关注” → 应该降 Should |
| Should | 痛,但它有可接受的人工绕过,且绕过成本可量化 | 绕过要每天 3 小时人工 → 其实已经是 Must |
| Could | 有更好,没有不影响上线与验收 | 把 “未来可能要做” 全塞进 Could,池子膨胀 |
| Won't | 这一次明确不做,并写清什么条件下复议 | 不记录直接删掉 → 半年后同一条需求重提一遍 |
Must 要落到三问,三问都答 “否 / 很低” 的,不可能是 Must:
- 不做会违法、违反合同、或直接资损吗?
- 有绕过吗?绕过的单位成本 × 频次是多少?(例:每单人工补录 2 分钟 × 3000 单/天 = 100 人时/天,等于不可绕过)
- 晚一个迭代做,损失是多少钱?换算方法见 4.1 技术投入的收益模型。
Must 超过 60%,就是定义错了
DSDM 方法论给的经验上限是 Must 类不超过总工作量的 60%(按工作量算,不按需求条数算)。理由可推导:一个迭代的估算误差通常在 ±30%–50%,Must 占到 90% 时,任何一条估偏都会把发布日期冲掉。
| Must 占比 | 含义 | 后果 |
|---|---|---|
| ≤ 50% | 有余量吸收估算误差 | 发布日可信 |
| 60% | 上限 | 一旦有变更就要砍 Should |
| 80% | 把 Should 改名叫 Must | 每个迭代都延期,且每次都归因于 “需求变更” |
| 100% | 没有优先级 | 排期 = 把需求池抄进甘特图 |
⚠️ Must 与 Should 的分界线不是 “多想要”,而是 “没有它这次发布能不能验收”。用 “重要性” 划线,Must 一定会膨胀到 80% 以上。
同时别忘了 NFR 之间天然会互相打架(性能 ↔ 安全、可用性 ↔ 成本):冲突时的优先顺序必须在需求阶段写成一句话,写法见 1.1 功能性需求与非功能性需求。
Kano:把 “满意度” 拆成五种需求
| 类型 | 提供时 | 不提供时 | 例子 | 商业含义 |
|---|---|---|---|---|
| 必备型 Must-be | 无感(理所当然) | 愤怒、投诉 | 支付成功钱要扣对 | 缺失即出局,做好不加分 |
| 期望型 Performance | 越好越满意(线性) | 越差越不满 | 外卖配送时长 | 竞争主战场,靠投入换分 |
| 兴奋型 Attractive | 惊喜、口碑 | 无感 | 首个 “次日达” | 差异化窗口,迟早被抄成标配 |
| 无差异 Indifferent | 无感 | 无感 | 首页换配色 | 投入不产生满意度 |
| 反向 Reverse | 越做越不满 | — | 强制看 30 秒广告 | 做了是负收益,应主动移除 |
需求会沿 “兴奋 → 期望 → 必备” 迁移
| 阶段 | 免密支付 | 竞争含义 | 投入策略 |
|---|---|---|---|
| 2020 年 | 兴奋型:惊喜 | 抢增量 | 快,允许不完美 |
| 2022 年 | 期望型:比谁更快 | 拼效率 | 持续优化 |
| 2024 年 | 必备型:不支持就被投诉 | 保底线 | 只求不出错,别再加投入 |
这条迁移规律的实际用法:同一条需求隔一段时间要重新做一次 Kano 分类。按两年前的结论排今天的优先级,会把 “必备型” 当 “兴奋型” 投入,白花钱还挨骂。我的判断是多数 To C 品类在 18–36 个月内完成一次迁移,被抄得越快的品类迁移越快。
怎么测:正反问句 + 五级量表 + 评价表
每道题问两遍——提供时、不提供时:
- 功能性问题:如果系统提供 X,你的感受是?
- 非功能性问题:如果系统不提供 X,你的感受是?
- 选项固定五档:我喜欢 / 理应如此 / 无所谓 / 能忍受 / 我不喜欢。
评价表(行 = 功能性问题答案,列 = 非功能性问题答案):
| 功能 ↓ / 非功能 → | 喜欢 | 理应如此 | 无所谓 | 能忍受 | 不喜欢 |
|---|---|---|---|---|---|
| 喜欢 | Q | A | A | A | O |
| 理应如此 | R | I | I | I | M |
| 无所谓 | R | I | I | I | M |
| 能忍受 | R | I | I | I | M |
| 不喜欢 | R | R | R | R | Q |
A = 兴奋型,O = 期望型,M = 必备型,I = 无差异,R = 反向,Q = 矛盾答案(该样本作废,说明题目有歧义)。
Better / Worse 系数:把分类压成两个可比的数
Berger 等在 1993 年给出的两个系数,把 A / O / M / I 的比例压成两个数:
Better = (A + O) / (A + O + M + I) # 提供后的满意度提升,∈ [0, 1]
Worse = -(O + M) / (A + O + M + I) # 不提供时的满意度下降,∈ [-1, 0]
| 结果 | 解读 | 优先级含义 |
|---|---|---|
| Better 高、Worse 低 | 兴奋型 | 窗口短就 Should,窗口长就 Could |
| Better 高、Worse 高 | 期望型 | 竞争主战场,按 ROI 排 |
| Better 低、Worse 高 | 必备型 | 必须做,但不必做到极致 |
| 两者都低 | 无差异 | Won't,且不必再调研 |
两个使用前提:
- 必须分人群统计。同一个 “导出 Excel”,财务专员是必备型,运营是兴奋型;混在一起算,两类结论会互相抵消。
- 问卷只覆盖现有用户。新用户与流失用户对 “必备型” 的判断往往不同,样本偏差要在结论里写明一句。
从 Kano 到 MoSCoW:映射表
| Kano 类型 | 现状 | 落到 MoSCoW | 理由 |
|---|---|---|---|
| 必备型 | 现有系统缺失 | Must | 缺失即合规 / 资损 / 流程断 |
| 期望型 | 竞品已达到 | Should | 不追会丢单,但不至于作废发布 |
| 期望型 | 竞品也一般 | Could | 投进去换来的分差不值 |
| 兴奋型 | 差异化窗口 ≤ 2 个季度 | Should | 窗口过期就白做 |
| 兴奋型 | 窗口 > 2 个季度 | Could | 先小成本验证,再决定投入 |
| 无差异 | — | Won't | 投入不产生任何满意度 |
| 反向 | 现状已存在 | Won't + 排期移除 | 负收益,越早删越好 |
🔑 Kano 回答 “值不值得做”,MoSCoW 回答 “这次做不做”。前者与时间无关,后者与迭代绑定——把 Kano 结论直接当排期,是把长期地图当短期时刻表用。
需要横向比较时:把 “重要” 换成可算的数
| 方法 | 公式 | 输入 | 适合 | 失效点 |
|---|---|---|---|---|
| RICE | (Reach × Impact × Confidence) / Effort | 影响人数、影响强度、置信度、工作量 | 需求池大、量级差异明显 | Impact 与 Confidence 都是主观分,容易 “先想要的结果再打分” |
| WSJF | Cost of Delay / Job Size | 业务价值 + 时间敏感性 + 风险降低,除以工作量 | 有明确发布窗口、延迟有成本 | 工作量估不准时,排序变成 “谁估得小谁先做” |
| 成本-收益 | (收益 − 成本) / 成本,或直接折现 | 可折算成钱的收益与成本 | 基础设施 / 平台类投入 | 收益难折现时(体验、品牌)会系统性低估 |
| MoSCoW | 定性分档 | 底线判断 | 迭代内排期 | 不做横向比较,同档内无顺序 |
RICE 的算例(三个不同形态的需求):
| 需求 | Reach(人/季) | Impact | Confidence | Effort(人日) | RICE |
|---|---|---|---|---|---|
| A 一键复购 | 120,000 | 1(中) | 0.8 | 20 | 4,800 |
| B 发票自助开具 | 30,000 | 3(巨大) | 1.0 | 15 | 6,000 |
| C 首页皮肤 | 500,000 | 0.25(极小) | 0.5 | 10 | 6,250 |
C 排第一,这就是 RICE 最典型的失效:Reach 极大、Impact 极小的需求会靠乘法赢。两种修法:给 Impact 设下限(< 0.5 不进池),或改用 WSJF 把 “时间敏感性” 显式拉出来当分子。
⚠️ 算出来的第 1 名与第 2 名差距小于 20% 时,算术已经不构成理由。这时排序依据应该是 “哪个先做能让后一个更便宜”(依赖关系),或 “哪个不做会被追责”(可解释性)。把这句话写进决策记录,比多算一位小数有用。
优先级必须和产能一起看:交付周期 = WIP / 吞吐
优先级只管 “做哪个”,WIP 管 “同时做几个”。两者不管其一,优先级都没有约束力。利特尔法则直接给出可推导的结论:交付周期 W = 在制品数 L / 吞吐率 λ(推导与排队论前提见 34.2 性能建模)。
| 团队吞吐 λ | 并行需求数 L | 平均交付周期 W | 结论 |
|---|---|---|---|
| 3 条/周 | 3 | 1 周 | 排进去就能较快交付 |
| 3 条/周 | 9 | 3 周 | 排进去 3 周后才见结果 |
| 3 条/周 | 15 | 5 周 | 优先级已经失效,所有需求都 “在做” |
一个 6 人团队、每 2 周交付 30 点、需求池 150 点:3 个迭代(6 周)内能承诺的上限是 90 点,第 91 点之后全是排队。把 120 点标成 “高优先级”,只是让 120 点一起卡在队列里。
🔑 优先级排的是 “顺序”,产能定的是 “深度”。深度不够时,再严格的顺序也只保证 “大家一起晚”。
估算的前提是需求小到能估——一个带验收标准的故事才估得准,拆法见 1.2 用户故事与用例。
Won't 清单:放弃也要写触发条件
Won't 不写,等于半年后重来一遍。每条 Won't 至少带一个复议触发条件:
| 需求 | 这次不做 | 复议触发条件 |
|---|---|---|
| 多币种结算 | 只支持人民币 | 出现首个境外签约客户,或合规要求变化 |
| 移动端 SDK | 只做 H5 | 移动端订单占比 > 30%(当前 12%) |
| 自建风控引擎 | 先用第三方 | 风控调用费 > 自研年成本,或规则数 > 200 条 |
触发条件的作用是把 “争论” 变成 “监控”:条件没到就没人再问,条件到了就自动进池,不必重新吵一轮。这些条件同时是变更单的输入之一,见 1.4 需求变更管理。
把 Must / Should 按波次排进季度节奏,是路线图要做的事,见 58.4 演进路线图;排完之后每条 Must 还要落到可验收的指标,见 1.5 需求到技术的翻译。
反模式
| 反模式 | 后果 |
|---|---|
| 全 P0 / 全 Must | 排序失效,实际顺序由催得最凶的人决定 |
| 按 “客户级别” 排优先级 | 大客户的小需求挤掉小客户的核心流程,整体满意度下降 |
| 只排顺序,不定产能 | 所有需求都 “已排期”,实际全在排队 |
| Kano 问卷不分人群 | 必备型与兴奋型混在一起,两类结论互相抵消 |
| 用 RICE 给整个需求池做总排序后直接执行 | Reach 大的低价值需求靠乘法插队 |
| 优先级只存在需求系统里,不进迭代计划 | 开发按 “谁来找我” 排期 |
| Won't 不记录、不复核 | 半年后同一条需求重走一遍完整评审 |
| 优先级与架构约束脱钩 | 排进一条当前架构做不动的需求,做到一半才发现要重构 |
| 兴奋型需求当必备型投入 | 窗口期已过还在打磨,投入不产生差异化 |
三条铁律
🔑 Must 的定义是 “缺了这次发布就作废”,不是 “最重要”。 Must 超过 60% 的工作量,先把 Should 改回去。
🔑 优先级必须有放弃清单和复议触发条件,否则它不是排序,是一次情绪表达。
🔑 优先级是 “单位产能的收益”,不是 “重要程度”。 产能不写清,任何排序都无法执行。
自检
Q1 客户说 “这三条都是 Must,一条都不能少”。你先要哪两样东西,才能把其中至少一条降下来?
▸ 答案:① 这次发布的验收标准——拿三条逐一对照 “缺了它验收能不能过”(合规 / 资损 / 主流程),缺了不影响验收且有绕过的,降 Should;② 三条各自的工作量对照迭代产能。有了这两样,“Must” 就从态度变成判定;真正要谈的只剩 “砍范围还是改日期”,而不是 “哪个更重要”。
Q2 Kano 问卷显示 “批量导入” 是兴奋型,Better = 0.72、Worse = −0.15,但竞品 6 个月前已上线同样功能。它还是 Should 吗?
▸ 答案:仍是 Should,但理由变了。Better 高 / Worse 低的形状确实是兴奋型,可竞品已上线 6 个月意味着差异化窗口正在关闭,用户体验一次后会把它归入 “应该有”。此时按 “期望型 + 竞品已达标” 一档排序,并把投入上限定在 追平(不低于竞品即可),不追求更好。Kano 分类随时间迁移,问卷结论必须标采集时间。
Q3 一个迭代的 Must 类需求占 85%,怎么用算术向业务方说明危险?
▸ 答案:Must 占 85%、估算误差 ±30%,最坏情况 Must 自身就要 85% × 1.3 ≈ 110% 的产能,发布日必然被冲掉,而冲掉的原因会被记到 “需求变更” 上,掩盖真正病根。修法不是 “加快开发”,只有缩小范围能真正缩小工作量:把已失去理由的 Should 降到 Won't,或把本次发布范围砍一刀。
Q4 团队 8 人,吞吐 4 条需求/周,在制品 12 条。老板问 “我上周加的那条为什么还没上线”?
▸ 答案:用 W = L / λ:WIP = 12、吞吐 = 4,平均交付周期 3 周,所以 “上周加的高优先级” 要等约 3 周,不是 1 周。想让优先级立刻生效只有两条路:把 WIP 降到 4(周期压到 1 周),或从当前在制品里真正撤下一条。只改优先级标签不会让队列变短。
Q5 为什么说 “优先级排序的产出是放弃清单”?
▸ 答案:产能固定,任何 “加进来” 必然对应一次 “挤出去”。如果排序只产出顺序、不产出被挤掉的是哪一条,被挤掉的会以 偷偷延期 的形式发生在执行层——看起来每条都在做,实际每条都没做完,且没人能说清牺牲了哪条。写出 Won't 与 “本次挤掉 X”,是为了让取舍可追溯、可复盘、可复议。
关联
- 前置:1.1 功能性需求与非功能性需求、1.2 用户故事与用例
- 并列:4.1 技术投入的收益模型、34.2 性能建模
- 下游:1.4 需求变更管理、1.5 需求到技术的翻译、58.4 演进路线图
- 待补:79.1 从需求到架构的推导
- 下游:2.1 业务能力地图