小精灵、根本原因,和那些童话故事

将复杂系统故障归咎于单一“根本原因”是一种误导性的简化。实际上,事故源于多个相互关联的故障,而所谓的“根本原因分析”更多是为了满足社会追责的需求,而非技术上的准确解释。将“根本原因”视为一种虚构的概念,类似于童话故事中的小精灵,并建议用“替罪羊”一词来替代它,有助于更准确地理解和应对系统性风险。

两个相似的故事

想象两个场景:

    • 故事一: 一群员工相信彩虹的尽头有黄金,只要找到就能退休。他们每次看到彩虹都去追寻,但结果是,他们从未停止工作
    • 故事二: 一个软件公司的员工相信每次事故都有一个“根本原因”,只要找到并消除它,就不会再有事故。他们每次都做根本原因分析,但结果是,他们从未停止处理事故

这两个故事的共同点在于,人们执着于一个美好的虚构概念——无论是黄金罐还是“根本原因”——并期望它能解决所有问题,但现实并非如此。

复杂系统如何真正运作

对复杂系统(如大型软件或银行系统)的深入研究揭示了它们的一些基本特征:

    • 复杂系统本身就具有危险性: 问题的根源在于系统自身的复杂性。无论你修复多少“根本原因”,只要系统足够复杂,问题就会持续出现。
    • 复杂系统总是在降级模式下运行: 这意味着虽然重大事故很少见,但小规模的故障一直在发生。系统总是在部分失效的状态下工作。
    • 复杂系统有强大的防御机制: 系统之所以没有崩溃,是因为它内置了多层防御措施,用于阻止局部的小故障演变成全局性的灾难。
    • 灾难需要多重故障同时发生: 单一的故障点通常不足以引发灾难。真正的灾难发生,是因为多个防御层同时被突破,多个独立的故障恰好在同一时间点串联起来。

“根本原因”是一个错误的归因

基于对复杂系统的理解,将事故归咎于单一原因的逻辑是站不住脚的。

将事故归因于一个‘根本原因’是根本性错误的。因为显性故障需要多个错误共同作用,所以不存在孤立的事故‘原因’。事故有多个促成因素……只有当这些因素共同作用时,才会造成事故。因此,不可能分离出所谓的事故‘根本原因’。基于‘根本原因’的分析,反映的不是对故障性质的技术理解,而是社会和文化上将结果归咎于特定、局部力量或事件的需求

换句话说,寻找“根本原因”更多是为了找到一个可以被指责的对象,从而满足一种社会心理需求。

寻找“根本原因”可能适得其反

当你试图“修复”一个所谓的根本原因时,通常会发生什么?你会增加新的规则、新的流程、新的检查机制。

这实际上是在给系统增加新的复杂性。讽刺的是,每一次你试图通过修复“根本原因”来降低风险时,都可能因为增加了系统的复杂性而无意中提高了未来的风险

一个简单的思维转变

为了更清晰地看待这个问题,可以尝试一个简单的替换练习:

    • 每当你在对话中听到“根本原因”这个词时,在脑海里将它替换为“替罪羊”。

这个练习能帮助你立刻看清对话的本质:我们是在进行技术探讨,还是在寻找一个可以被指责的对象?

最终,我们应该认识到:

根本原因就像小精灵——一个有趣的虚构概念,但并非事实。