评审会开了三小时。提出者讲完方案、对比了三个候选、回答了十几个问题,最后主持人说"那大家再看看"。三个月后同一个问题重新开了一次会,参与者换了两个人,讨论从零开始。
"再看看"不是结论,是没有收尾。选型评审失效,多数时候不是因为技术论证不够,而是因为会议开始前没人说清三件事:谁有权否决、什么构成通过、没有共识怎么办。
1. 三种收尾,只有两种算结论
| 收尾方式 | 输出物 | 组织代价 |
|---|---|---|
| 决定 | 选定方案 + 生效条件 + 记录 | 有人要为判断负责 |
| 不决定但定条件 | 待验证项 + 验证人 + 复核日期 | 需要有人真的去验证 |
| 再看看 | 无 | 沉没的三小时,加上一次重开 |
第三种普遍,因为成本由未来承担、收益(当场不冲突)立刻兑现。减少它只能靠会议规则:散会必须落在前两种之一。
2. 评审要解决的三个组织问题
技术论证回答的是"哪个方案更好",评审要回答的是另外三件事:
| 组织问题 | 不解决的后果 | 归属 |
|---|---|---|
| 谁有权否决 | 每个人都有权,等于没人有权 | 组织章程,不是会议现场 |
| 什么构成通过 | 结论永远是"再看看" | 会前写入评审单 |
| 没有共识怎么办 | 讨论变成说服战,胜负取决于嗓门与职级 | 主持人提前声明 |
技术最强的参与者往往最没动力处理这三件事,这也是评审容易被细节占满的原因。
3. 否决权的三种配置
| 配置 | 形态 | 代价 | 典型失效 |
|---|---|---|---|
| 单一架构负责人否决 | 一人可否决,理由须书面 | 决策快,但成为瓶颈与单点 | 该人不在场时议程停摆 |
| 领域专家否决 | 各领域对自己领域内的事可否决 | 边界清晰,专业判断被尊重 | 领域间冲突时无人裁定 |
| 无否决,只有记录 | 谁都能提异议,异议入档,决策者裁量 | 阻力最小,决策最快 | 异议记录没人读,事后"我提过" |
第三种常被当成开放文化,实际是把否决权挪到事后:会上不否决,事后用"我当初不同意"来否决已生效的决定,代价落在执行阶段。
选择标准不是哪种更民主,而是做错后能不能退。
4. "什么算通过"必须前置定义
| 通过判据 | 具体形态 | 缺失时的表现 |
|---|---|---|
| 判据可被反例推翻 | 写明"什么情况会让我们放弃它" | 讨论变成各说各话 |
| 失败条件已写明 | 列出方案失效的前提 | 上线才发现前提不成立 |
| 退出路径已确认 | 迁走需要多久、代价多大 | 被锁定后无法换 |
| 运维方可执行 | 运维方签字认可操作方式 | 交付即负债 |
| 可观测性可达成 | 关键指标能被测量 | 出事时无法判断 |
前两条是技术判断,后三条是组织判断,而后者更容易被跳过。
─── 通过判据清单(占位,会前发,会上逐条勾)
proposal: SEL_2311
pass_criteria:
- id: C1
claim: "候选 A 在 P99 上优于现方案"
refute_if: "压测显示 P99 无差异或更差"
- id: C2
claim: "运维方可在 1 人日内完成部署与回滚"
signed_by: ROLE_OPS
fail_conditions: [依赖方不提供 SLA, 迁移成本超过 X 人月]
exit_path: "保留双写 3 个月,可按文档切回"
5. 参与者的必要构成
| 角色 | 义务 | 不该有的权力 |
|---|---|---|
| 提出者 | 写判据、给对照、标失败条件 | 不该主持评审 |
| 受影响方 | 说明被改变的工作方式 | 不该以"不熟"为由否决 |
| 运维/值班方 | 判断可运维性与回滚成本 | 不该替业务做取舍 |
| 决策者 | 在无共识时裁定并署名 | 不该在会上先表态 |
6. 提出者的三项义务
| 义务 | 不合格 | 合格 |
|---|---|---|
| 写判据 | "这个方案更成熟" | "三项判据,各自可被哪类观测推翻" |
| 给对照 | 只讲选中方案的优点 | 至少一个被认真评估后放弃的候选 |
| 标失败条件 | 不提风险 | 写明"出现 X 就停,回退到 Y" |
─── 提案骨架(占位,一页以内,超出说明还没想清)
1 问题:现在什么不行,量化到指标或工时
2 候选:A / B / 维持现状,各自一句话机理
3 判据:三条,各自"什么观测能推翻它"
4 失败条件:出现什么就停,停在哪一步
5 未知:还没验证的部分,打算怎么验证
7. 没有共识的三种处置
| 处置 | 适用 | 代价 |
|---|---|---|
| 决策者裁定 | 不可逆、时间紧、判据已明确 | 裁定人承担结果,需要署名 |
| 试验期 | 判据存在但证据不足,且可逆 | 要预设结束条件与判定人 |
| 拆成可逆的小步 | 方案大、不确定性集中在局部 | 拆分本身要设计,容易拆成半成品 |
─── 裁定记录(占位,无共识时必写)
ruled_by: ROLE_D // 裁定人,署名
basis: 判据 C1 已推翻、C2 未验证 // 依据哪几条,不写"综合考虑"
dissent: ROLE_X(不可维护) // 异议保留,不删除
revisit: 2027-01-15 或触发条件 X // 到期复核,不是永久生效
─── 试验期条款(占位,必须有结束日期)
trial: SEL_2311-A
scope: "仅订单查询链路,5% 流量"
duration: 2026-12-01 → 2027-01-15
judge: ROLE_D // 判定人,不是提出者
pass_if: [p99 不劣于基线, 回滚演练通过]
on_end: 通过则扩大 / 未通过则回退,不默认续期
"不默认续期"是关键:没有结束条件的试验期,等于把决定无限期推迟。
8. 评审与 PoC 的顺序
| 顺序 | 适用 | 代价 |
|---|---|---|
| 先评审再 PoC | 判据不清、候选多、成本高 | 评审可能否掉一个本会成功的方案 |
| 先 PoC 再评审 | 判据清楚、候选少、验证便宜 | PoC 结论会被当作事实,评审变追认 |
| 只评审不 PoC | 已有同类经验、可逆 | 依赖经验,容易复制上一次的误判 |
判断依据是不可逆程度与判据清晰度:不可逆且判据不清,先评审;可逆且判据清楚,先 PoC。先 PoC 的最大风险是沉没成本:投入两周后,没人愿意说"不"。
9. 否决的合法与不合法理由
| 合法类别 | 具体样子 | 不合法 | 具体样子 |
|---|---|---|---|
| 不可维护 | "团队无人具备该栈经验,且半年内补不上" | 个人偏好 | "我不喜欢这个生态" |
| 不可退出 | "数据迁移无回退路径,锁定后议价权归对方" | 不熟 | "我没听过这个项目" |
| 不可观测 | "关键链路无法采集指标,出事只能靠猜" | 职级 | "我级别高,我不同意" |
| 成本不可接受 | "总持有成本超出预算区间" | 时间 | "现在不想讨论这个" |
"不熟"不是否决理由,但它是合法信号,需要翻译成 "我无法评估 X,需要 Y 在 Z 前给出证据";翻译后它变成待验证项,而不是否决。
合法理由必须能被检验:"不可维护"要能说出补上能力需要多久,说不出就只是"不熟"。
10. 记录沉淀在哪、怎么追溯
| 位置 | 适合放什么 | 不适合 |
|---|---|---|
| 决策记录(ADR) | 选了什么、为什么、放弃了什么 | 会议过程与争论细节 |
| 评审系统/工单 | 判据勾选、签字、待验证项 | 长期结论 |
| 团队 wiki | 操作约定与培训材料 | 决策依据 |
─── 评审记录骨架(占位,附在决策记录后)
review: REV_2311
decision: 采用 A // 或"未决定,条件为 C1/C2 待验证"
rejected: B(原因:退出成本)、维持现状(原因:不满足 C3)
dissent:
- by: ROLE_X
reason: 不可维护 // 必须落在四类合法理由之一
open_items:
- C2 待运维签字,负责人 ROLE_OPS,截止 12-05
记录的价值在追溯:半年后有人问"为什么没用 B",答案要能在三分钟内找到。
11. 频率与批量决策
| 形态 | 适用 | 代价 |
|---|---|---|
| 单次专会 | 影响面大、不可逆 | 排期长,容易拖成"再看看" |
| 定期评审窗口 | 中小选型、批量处理 | 单件讨论深度下降 |
| 异步书面评审 | 可逆、判据清楚 | 反对意见容易沉底 |
批量评审的隐性代价是判据趋同:一次会过五个方案,深度自然下降。
12. 度量:四个能改变决策的数
| 指标 | 口径 | 用来决定什么 |
|---|---|---|
| 评审到决策时长 | 首次上会到落记录的中位数 | 是否总在"再看看" |
| 决策推翻率 | 半年内被重开的占比 | 判据是否前置充分 |
| 否决理由分布 | 四类合法理由占比 | 否决是否在技术范围内 |
| 异议被采纳比例 | 异议转为待验证项的比例 | 记录是否被读 |
第三项为正且集中在"不熟"时,说明评审缺的是信息而不是判断;第四项长期为零,说明异议通道是装饰。
13. 排错:评审开成"再看看"的六种现场
| 现象 | 真实成因 | 处理方向 |
|---|---|---|
| 三小时后无结论 | 通过标准未前置 | 会前发判据清单,逐条勾 |
| 讨论全在技术细节 | 组织问题没人认领 | 开场先定否决人与裁定人 |
| 有人沉默,事后反对 | 异议缺少低成本出口 | 书面异议入档,纳入追溯 |
| 决策者先发言 | 议程顺序错 | 决策者最后发言 |
| PoC 做完才评审 | 沉没成本绑架判断 | 不可逆项先评审 |
| 同一问题反复重开 | 记录未落 ADR | 结论三分钟可检索 |
14. 边界:什么时候正式评审是过度流程
| 场景 | 为什么可跳过 | 替代 |
|---|---|---|
| 影响可逆的小选型 | 错了换回来即可 | 提出者书面记录 |
| 已有强制标准 | 没有可选项 | 直接执行,登记例外 |
| 单人团队 | 没有受影响方需协调 | 自写判据与失败条件 |
| 试用与一次性验证 | 不进生产、无锁定 | 时间盒 + 一句结论 |
| 紧急替代(原方案不可用) | 评审会来不及 | 先做,事后补记录 |
判断口径:成本是若干人 × 若干小时 + 一次排期,收益是减少一次不可逆的错误。 当错误可逆或不存在第二个选项时,收益为零。
15. 自测
- "再看看"为什么不算结论?它把成本转移到了哪里?
- 三种否决权配置各自的典型失效是什么?
- 通过判据为什么要写成"可被反例推翻的句子"?
- 提出者的"未知"一栏,为什么是评审真正的输入?
- 先 PoC 再评审的最大风险来自组织激励的哪一部分?
- 什么条件下,正式评审的收益低于它的组织成本?