线上系统发生故障后,负责人走进工程高级副总裁的会议室汇报事故链路,刚准备展开排查细节,就被对方当场打断。副总裁只说了一句话:我不要细节。
这不是高管对一线业务的轻慢,而是管理成熟度极高的一种反常清醒。副总裁把话讲得很直白:只要陷入具体细节,所有人做的事情都会显得合情合理;我会理解你们的难处,甚至产生同理心,然后紧迫感消失,半年后同类故障原样重演。他只追问一件事:你们打算做出什么改变,让同类错误不再发生?
同理心往往是系统改进的麻醉剂
大部分团队在事故复盘时,最习惯问为什么会发生。大家拉出调用时序图,还原决策分支,解释依赖方突发的异常行为。最后产出一份严密的分析记录,参与各方一致点头,确认在当时的环境和信息下,当事工程师做出的反应无可挑剔。
理解问题并不等于解决问题。当一场事故被证明是“一群尽职的人在合理逻辑下遭遇的不幸巧合”,谁都没有过错,组织进行实质性变革的动力便被瞬间消解。Michael Heap 在《Delivery and Dopamine》中点出过这种机制漏洞:如果只扑灭眼前的火情,却不动背后的系统诱因,实际上是在教会团队继续依赖临时通融。下一次遇到类似工期挤压,大家依然会选择心存侥幸地切角上线。
在 Google SRE 体系中,无指责复盘(Blameless Postmortem)的底层逻辑恰好与这种态度契合。它的出发点从来不是为了让大家互诉苦衷,而是确立一个强假设:假定理性人在当时掌握的信息下已经做出了合理抉择。既然人做的是合理推论,那么继续去审查当事人的态度、细心程度或临场经验就毫无意义,复盘真正需要开刀的是诱使这些决策发生的信息盲区与系统激励。
拿离职测试鉴别伪改善
大量工程团队的纠偏总结里,充斥着“加强跨组协同”“早点让运维介入”或“上线前仔细确认参数”这类表态。这些字句本质上是装扮成进展的良好愿望。
要验证一项整改举措是否有效,最直接的标尺是做一次离职测试:如果涉事的几位核心工程师明天全部离职换组,这套机制在下个月还能否拦住同样的故障?
若纠偏措施依赖成员对半年前谈话的记忆,它就只是组织的民间传说。
依靠口头警示构建的防线极其脆弱。Google SRE 对事故纠偏项给出了近乎机械化的约束标准:行动项必须具备具体责任人、排期优先级、可跟踪的缺陷工单以及清晰的终态标准。只要防线没有下沉为静态代码检测、自动化部署卡口或明确的路由兜底,“下次更小心”就只会把诱发事故的系统温床原封不动地保留在原地。
- 结论.同类故障重复发生,往往是组织学习机制本身的失效,必须审查先前的补丁是否流于形式,抑或可靠性建设已被业务排期持续边缘化。
验收测试与风险接纳的界限
真正的系统演进必须配置量化验收手段。以常见的告警疲劳为例,当值班工程师一晚上被二十条低价值告警打扰,真正的处理方案绝不是要求工程师“保持警惕”。在工业化实践中,验收纠偏必须写成明确的指标:将非操作性告警从每周 18 次压降至连续 4 周不超过 2 次,并同步配置主备升规路由与定期实兵演练。无法被量化测试的防错方案,在软件工程里只能算作安慰剂。
防范错误的系统手段不能走向另一个极端。如果团队将“防止同类错误再次发生”无限泛化,最直接的后果就是诱发流程官僚主义。每出现一次边缘失误就加一层审批,系统会迅速板结成无人愿意忍受的代码泥潭。
- 风险.消除偶发故障的代价若远超损失本身,管理层应当睁大眼睛清醒地接受风险,这与靠口头保证得过且过有着质的区别。
副总裁打断汇报的举动,外表像是不耐烦,底色其实是一种克制的信任。他默认台下是一群训练有素、动机端正的技术人,因而不再把时间浪费在动机剖析与委屈自辩上。
跳过琐碎的上下文,直面规则、工具与测试环境的漏洞,才是技术组织真正走向成熟的标志。下一次面对故障时,不妨停下那些漫长的解释,把精力省下来回答更硬核的一道题:我们交出的这套改变,如果交由机器去执行,能不能保住明天的系统?
