How Complex Systems Fail

译文:复杂系统是如何失效的

原文

https://how.complexsystems.fail/


前言

关于失败的本质、失败的评估方式、失败如何归因于直接原因,以及由此产生的对患者安全新认识的简论。

作者:

Richard I. Cook, MD Cognitive Technologies Labratory University of Chicago


1. 复杂系统本质上是具有危险性的系统

所有那些重要的系统(interesting systems)(例如交通、医疗保健和发电系统)就其本质而言,都具有内在且不可避免的危险性。

尽管有时可以改变暴露于危险之中的频率,但系统所涉及的各项流程本身就具有无法消除的内在危险。

正是这些危险的存在,促使人们构建起各种针对危险的防御机制,从而构成了这些系统的显著特征。


2. 复杂系统针对故障构建了严密且行之有效的防御体系

由于故障后果严重,人们逐渐构建了多重防御体系以应对故障。

这些防御措施既包括显而易见的各种技术手段(如备份系统、设备“安全”功能)和人员要素(如培训、知识),也涵盖了各类组织、制度及监管层面的防线(如政策与规程、认证、作业规范、团队培训)。

这些措施共同构成了一系列屏障,通常能引导各项操作避开事故风险。


3. 灾难的发生需要多重故障——单点故障尚不足以酿成灾难

这种多重防御体系行之有效,系统运行总体顺畅。

显性的灾难性故障往往源于一系列看似微不足道、无伤大雅的小故障,这些故障相互叠加,最终酿成系统性事故。

每一个小故障都是引发灾难的必要条件,但唯有它们的组合才足以导致最终的系统失效。

换言之,潜在的故障隐患远多于实际发生的显性系统事故。大多数初始故障演变路径都会被系统预设的安全机制所阻断;即便有故障演变至实际操作层面,也多半能被拦截,通常是由一线操作人员将其化解。


4. 复杂系统内部包含着各种不断变化的潜在故障组合

这些系统的复杂性决定了它们在运行过程中必然伴随着多种缺陷。

由于单个缺陷不足以导致系统失效,它们在实际运行中往往被视为次要因素。彻底消除所有潜在失效隐患,主要受限于经济成本,同时也因为在事发前很难预见这些失效如何可能引发事故。

随着技术、工作组织方式的变迁以及消除失效的各项努力,这些失效状况也在不断变化。


5. 复杂系统在降级模式下运行

上述观点的一个推论是:复杂系统往往是在“带病”状态下运行的。

尽管存在诸多缺陷,系统之所以能持续运转,既是因为其具备大量冗余机制,也是因为人为干预确保了其功能的实现。

事故后的复盘分析几乎总会发现,系统此前已出现过多次险些酿成灾难的“事故前兆”(proto-accidents)。那种认为在显性事故发生前就理应识别出这些不良运行状况的观点,通常建立在对系统运行特性的天真认知之上。系统的运作是一个动态过程,其中的各类组件(涵盖组织、人员与技术层面)不断发生故障并持续进行着更替。


6. 灾难总是近在咫尺

复杂系统蕴含着发生灾难性故障的可能。

相关从业人员几乎总是处于这些潜在故障的近处——无论在空间还是时间维度上——灾难随时随地都可能发生。发生灾难性后果的可能性正是复杂系统的一个显著特征。这种灾难性故障的潜在风险是无法消除的;受系统自身特性的制约,这种风险始终存在。


7. 事故发生后将其归因于“根本原因”,这种做法从根本上是错误的

由于显性故障的发生需要多种因素共同作用,因此事故并不存在单一的孤立“成因”。

导致事故的因素往往有多个,且每一个因素单独来看都不足以引发事故;只有当这些因素结合在一起时,才足以酿成事故。事实上,正是这些因素的相互关联,构成了事故发生的必要条件。因此,根本无法将事故归结为某一个孤立的“根本原因”。那种基于“根本原因”逻辑的评估,反映的并非对故障本质的技术性理解,而是出于社会和文化层面的需求——即试图将事故结果归咎于特定的、局部的力量或事件(1)。

(1): 人类学的田野研究最清楚地展示了“原因”这一概念的社会建构性质(参见 Goldman L (1993), The Culture of Coincidence: accident and absolute liability in Huli, New York: Clarendon Press;以及 Tasca L (1990), The Social Construction of Human Error, 未发表博士论文,纽约州立大学石溪分校社会学系)。


8. 事后诸葛亮心态会影响对事故中人员表现的评估

已知结果往往会让人产生一种错觉,认为那些导致该结果的事件在当时对相关人员而言应当显得更为显著——而事实并非如此。

这意味着,针对事故中人员表现的事后分析往往是不准确的。这种“已知结果”的认知会干扰事后观察者对事故发生前相关人员视角及对相关因素认知的还原;人们往往会觉得,相关人员当时“本应知道”这些因素会“不可避免”地导致事故发生(2)。

事后诸葛亮偏差(hindsight bias)依然是事故调查面临的主要障碍,尤其是在涉及专家级人员表现的情况下。

(2): 这并非医学判断或技术性判断的特征,而是人类关于过去事件及其成因的所有认知活动的特征。


9. 操作人员扮演着双重角色:既是生产者,也是防范故障的守护者

系统从业人员在操作系统的过程中,既要产出预期的成果,又要致力于防范事故。

这种在生产需求与潜在故障风险之间寻求平衡的动态操作特性,是不可避免的。局外人往往难以理解这种角色的双重性:在未发生事故的时期,人们侧重于生产职能;而在事故发生后,关注点则转向防范故障的职能。

无论处于哪种情况,局外人的视角都未能充分认识到,操作人员始终同时兼顾着这两种角色。


10. 从业者的所有行动都是一场赌博

事故发生后,表面上的失败往往看似不可避免,而从业者的行为则被视为低级错误,或是对某种迫在眉睫的失败的蓄意漠视。

然而,从业者的所有行动实际上都是一种“赌博”——即在结果充满不确定性的情况下所采取的行动,且这种不确定性的程度可能随时发生变化。事故发生后,人们很容易看出从业者的行为属于赌博,并且往往在事后分析中将其判定为糟糕的赌博;但反过来,人们却鲜少意识到,成功的结果同样也是赌博的产物。


11. 处于最前线的行动能消除一切模糊不清之处

在生产目标、资源高效利用、运营经济性与成本,以及低后果与高后果事故的可接受风险之间,组织往往(且常是有意地)保持一种模糊态度。

这种模糊性最终由处于系统“尖端”(即一线作业现场)的从业人员通过其行动来化解。

事故发生后,从业人员的行动可能被定性为“差错”或“违章”;然而,此类评判往往深受“事后诸葛亮”心态的影响,且忽视了其他驱动因素——尤其是生产压力。


12. 人类从业者是复杂系统中具有适应性的要素

从业人员和一线管理人员积极调整系统,以实现产量最大化并最大限度减少事故。

此类调整往往是实时进行的。具体的调整措施包括:

  1. 重组系统,以降低薄弱环节暴露于故障风险之下的程度
  2. 将关键资源集中配置于预计需求量大的区域
  3. 针对预期内及意外发生的故障,预留撤退或恢复运行的路径
  4. 建立系统性能变化的早期监测机制,以便在必要时平稳缩减产量或采取其他措施增强系统韧性

13. 人类在复杂系统方面的专业知识在不断变化

复杂系统的运行与管理需要大量的人力专业知识。

这种专业知识的性质不仅会随技术变革而演变,也会因需要接替离职的专家而发生变化。

无论何种情况,技能与专业知识的培训及提升,本身就是该系统运作职能的一部分。因此,在任何时刻,特定的复杂系统中都会包含具备不同专业水平的从业人员与受训人员。

与专业知识相关的关键问题主要源于两方面:

  1. 需将稀缺的专业知识作为资源,用于应对最困难或要求最高的生产需求
  2. 需培养专业知识以供未来使用

14. 变革带来了新的失败形式

在可靠的系统中,显性事故发生率较低,这可能会促使人们进行变革(特别是引入新技术),以减少那些后果轻微但发生频繁的故障。

然而,这些变革实际上可能为发生频率低但后果严重的“新型”故障埋下隐患。当采用新技术来消除已知的系统故障或追求高精度性能时,往往会引入导致大规模灾难性故障的新途径。

这些罕见的新型灾难,其影响往往比新技术所消除的那些故障更为严重。此类新型故障在事发前难以察觉,因为人们的注意力通常集中在变革所带来的预期效益上。由于这类后果严重的事故发生率较低,在事故发生前系统可能已经历了多次变更,这使得人们很难辨识出技术在故障中所起的作用。


15. 我们对“原因”的理解,会限制针对未来事件的防御措施的有效性

针对“人为错误”的事故后补救措施,通常建立在这样一种思路之上:阻止那些可能“导致”事故的活动。这些处于因果链末端的措施,对于降低未来事故发生的可能性收效甚微。

事实上,发生同类事故的概率本身已极低,因为潜在失效的模式在不断变化。

事后补救措施非但不能提升安全性,反而往往会增加系统的耦合度与复杂性;这不仅增加了潜在失效的数量,还使得识别并阻断事故演变路径变得更加困难。


16. 安全性是系统的特性,而非其组件的特性

安全是系统的一种涌现特性;它并不存在于组织或系统内的某个人、某台设备或某个部门之中。

安全既无法购买,也无法制造;它并非独立于系统其他组件之外的某种特征。

这意味着,安全无法像原料或原材料那样进行操控。任何系统中的安全状态始终处于动态之中;持续不断的系统性变化,意味着危害及其管理方式也在不断演变。


17. 人们不断创造安全

系统之所以能保持无故障运行,归功于相关人员的努力——他们确保系统性能维持在可接受的范围内。

这些活动大多属于日常操作,表面上看似乎简单直接。然而,由于系统运行难免会出现各种状况,从业人员针对不断变化的情况所做出的适应性调整,实际上时刻维系着系统的安全。

这些调整往往只是从既有的应对方案库中选择一套熟练掌握的常规流程;但在某些情况下,它们也可能涉及新颖的组合,甚至是全新的应对方式。


18. 实现无故障运行,需要具备应对故障的经验

若要识别危险并成功掌控系统运行,使其保持在可容忍的性能边界之内,操作人员必须对故障有切身体会。

如果操作人员能够敏锐察觉“性能边界”(即系统性能开始恶化、难以预测或难以轻易恢复的临界状态),系统往往能展现出更稳健的性能。

在本质上具有危险性的系统中,操作人员应当能够识别并理解各种危险,从而确保系统实现理想的整体性能。

提升安全性,既有赖于让操作人员对危险形成准确的认知,也有赖于让他们明确了解自身操作如何使系统性能趋近或远离这一性能边界。


其他材料

https://how.complexsystems.fail/citations/Gaps.pdf https://how.complexsystems.fail/citations/BriefLookFront.pdf https://how.complexsystems.fail/citations/Perspectives_on_Human_Error.pdf https://how.complexsystems.fail/citations/CharacteristicsPatientSafety.pdf https://how.complexsystems.fail/citations/operatingatthesharp.pdf https://how.complexsystems.fail/citations/SOAR-BHE-original.pdf https://how.complexsystems.fail/citations/TaleOfTwoStories.pdf


译后记

这是一篇非常精炼的关于复杂系统的论述,其中让我印象深刻的是它尝试为“替罪羊”和“前线工人”正名,多数的复杂系统都由领导层和操作工人组成,国家级系统的领导层通常由横跨政界和商界的人组成,他们往往只考虑经济利益和政治利益,在舆论的面前,倾向于成为“事后诸葛亮”,无论如何都会找出一些“替罪羊”来掩盖自己无能且失职的问题。

相比于前线人员每天和复杂且动态的问题打交道,领导层人员缺乏对于系统的本质认识。系统于他们而言更多是实现利益的棋子,所以并不会很认真的考虑系统的危险性,给系统加上各种防护和检查,也只是迫于政治压力和舆论压力。

这就会造成一种滑稽的场面,负责实际操作的前线人员拥有丰富的一线危机处理知识,对于系统部分组件的运行情况了如指掌,但并没有实际的反馈和设计的权力。而拥有整个系统设计权力的领导层往往对系统缺乏认识,所作出的政策会偏离实际,所作出的设计会流于表面,又缺乏自省能力。

就算是系统拥有数层的防护,在官僚主义和形式主义下,都会形同虚设,一线人员也会因为实际意见无法得到反馈,而渐渐丧失工作热情,身居高位者并不关心系统的危险性,他们往往沉迷权术,有抱负的领导者面对一个沉疴积弊的系统也无法看到底层真实的数据(中层者沉迷向上攀爬,就会对上位者虚报数据)。

查看全部文章 →