本文是《管理复盘》中「闭环」这条线的展开。
质量出了问题,组织的第一反应几乎总是"这是谁的责任"。明确边界当然应该,但如果最终只有某一个角色对线上结果负责,其余人只对过程负责,质量就会在交接处消失——因为每一段都有人负责过程,却没有一段对结果负责。
一次说不清是谁的问题
有一次推荐流做了调整之后,人均阅读数开始往下掉,慢慢又传导到了下游的商业化转化上。这类问题最麻烦的地方在于,它不像报错那样能一眼看出是哪个模块炸了——它只是"整体变差了一点",具体哪个环节出的问题,谁都说不准。
工程侧先查了一遍:这段时间上线了哪些能力变更,逻辑是否符合预期,一项一项排除。算法侧也在同时排查:策略上线了哪些调整,模型表现是否符合预期,同样一项项对照。两边各自查下来,各自的改动单独拿出来都说得过去,没有哪一项能一眼被定为"元凶"。问题其实出在两边改动叠加之后:工程侧的一个变更和算法侧的一次调整,各自都不算错,放在一起才把指标带偏了。
定位到这一步,已经很难再问"这是谁的问题"。工程没写错代码,算法也没有明显违背预期,两边都在自己的边界内做了正确的事,问题恰恰出在两个边界之间——没有人共同盯着这段组合效应。回头看,质量事故很少是某一个人或某一个团队没做好,更多时候是两段各自都没问题的交付,拼在一起时没有人对拼接处负责。
共同为结果负责
更合理的原则是:每个人对自己交付的结果负责,所有参与交付的人共同为线上结果负责。需求没有说清、设计没有暴露风险、实现没有覆盖边界、验证没有发现异常,都是同一条交付链的问题。把责任切给"测试没测出来"或"开发写错了",听起来干净,实际只是让下一轮事故换个地方发生。像推荐流那次,工程和算法都没有"写错",责任边界本身就是含糊的,靠的是两边一起排查,而不是先找出一个负责人。
发现,最关键的是监控。没有监控,团队只能等用户投诉;有了监控,才知道问题从何时开始、影响多大、是否仍在扩大。监控的意义不是"好看",是让"发现"不再依赖运气和用户。
止损,不必等完全理解根因。像推荐流那次,两边一时说不清是谁的问题,但可以先粗略圈定影响范围,用开关、回滚或降级把损失止住,不必等"完全解释"之后再动手。也有过另一种情况:一次规则调整上线后,监控显示少量提交失败,值班人员没有等日志全分析完,先关闭新规则止住影响,随后才慢慢定位到是未覆盖的旧版本输入,补上兼容处理和监控。事故现场最贵的是时间,最便宜的是开关。
修复,才进入精确定位:复现路径、根因、补丁、验证、防再发。复盘不是追究某个人,而是问两个问题:哪一个信号本应更早出现?哪个边界没有被守住?像推荐流那次,复盘问的不是谁背锅,而是工程和算法各自的变更评审里,为什么都没有把"组合效应"当成一项风险来看。
回头看,这其实是四步
把前面处理这两次问题的顺序摆出来,其实就是预防、发现、止损、修复四步,顺序很重要。预防不是保证不出问题,而是让高风险改变在上线前被看见:关键路径评审、异常场景、回退方案、明确负责人。预防做得越早,后面三步越轻。
质量不是一个部门的 KPI,而是交付系统能否共同面对真实结果的能力。这个能力靠的不是更严的流程,而是让"对线上结果负责"这件事,成为每个人都在做的事。