从研发效能的视角谈“故障复盘”

作者: admin 分类: 公众号存档            2 次浏览 发布时间: 2022-05-18 23:58

【转载声明】本文为转载文章,原作者「茹炳晟」,版权归原作者所有。 原文链接:https://mp.weixin.qq.com/s/jVtZ5sI3QTuWNbr299NfrA

公众号:杨建荣的学习笔记 · 作者:茹炳晟 · 发布:2022-05-18 23:58:06 · 原文链接

本文核心观点:

  • 团队的复盘能力有多强,决定了团队的进步空间有多大

  • 复杂系统的高网络密度和强耦合性是造成故障无法完全避免的罪魁祸首

  • 故障是表象,背后技术和管理上的问题才是根因

  • 可以包容失败,但是不允许犯错

  • 不“浪费(忽视)”任何一个失误

  • 不能以唯一根因为导向来复盘

  • 避免将故障归因于外部客观原因

在企业业务价值的交付过程中,故障是很难避免的,所以对企业来讲故障复盘是一项关键核心能力,今天我就从研发效能的视角来系统性地聊一聊。

1. 谈故障复盘前,先来看看航空业的安全性

也许很多人知道,飞机是目前为止最安全的交通工具,但是早期飞机的安全性非常差,美国航空学校学员的死亡率曾经一度高达25%,而现在全世界每年因为空难死亡的人数大概只有三四百人。举个例子,如果有人需要每天坐一次飞机,那么大概3200多年才会遇上一次空难。这么巨大的安全能力飞跃,是在不到几十年的时间就完成了的,问题是这样的突破是如何被实现的呢?答案是黑匣子。

黑匣子(如图)简单说就是一个记录工具,由飞行数据记录器(FDR)和驾驶舱话音记录器(CVR)两部分组成,用来记录飞机在飞行过程中的各种参数,如飞行时间、速度、高度、飞机倾斜度、发动机转速及温度等,以及飞行员与乘务人员和各个塔台之间的对话等。如果一架飞机不幸遭遇事故,通过黑匣子就可以判断当时驾驶舱内飞行员所面临的情况,帮助人们分析事故发生的原因。

更为重要的是,对于每一次的事故分析都会做到系统性和全面性,并把发现的所有潜在问题和风险都逐一解决,不留任何死角,保证发生过的问题往后绝对不会再发生,也就是所谓的“不二过”。正是由于这样的系统化机制,飞机在较短的时间里成为了最安全的交通工具。

图:民航飞机的黑匣子

飞行员的行为准则里有很多看似奇葩的规定,其实都是由事故作为依据而制定出来的。比如国际民航组织就规定飞行员在工作中必须说英语,这是为了防止像日语和韩语中的存在敬语可能影响机长的判断;再比如机长和副机长必须吃不同的人准备的不同种类食物,并且吃饭间隔时间必须要30分钟以上,这是为了防止可能的食物中毒;这些事件都在之前的航空史上真实发生过,可以说都是血和泪的教训。

我举这些例子其实是想说,很多潜在的风险和问题由于过于隐蔽和低概率,如果靠凭空想象出来是非常困难的,航空业能想到这么细致的原因,不是因为他们想象力丰富,而是能够及时把过去曾经发生过的错误,最大程度转化为未来可以小心和避免的方法,这类行为其实就是我们今天要重点讨论的故障复盘。

2. 复杂系统故障的特点

通俗来讲,软件系统的故障是指系统没有遵守预先设计的工作模式。

今天大量的软件系统俨然已经是个庞大的复杂系统,复杂系统故障具有两个特点。一是“小错误”的威力巨大,二是技术越先进故障越多。

复杂系统的很多故障都是由一个个不起眼的“小错误”,像滚雪球一样叠加而成的,在很短的时间内就能导致整个系统的崩溃。这里“小错误”的“小”有两层含义,一是指单个错误的影响可能不大,二是指单个错误的发生概率可能也不高。但是当这些错误叠加起来就可能造成多米诺骨牌效应,最终造成非常严重的业务影响。

虽然技术在不断地发展与成熟,但是随着系统复杂性的不断提升,故障不是更少了,而是更多了。我们正在遭遇“技术进步的悖论”。这个悖论说的是虽然技术给我们提供了前所未有的超强能力,但与此同时,也让微小的错误或者简单事故的破坏力变得更大了。

3. 故障复盘的概念

先说复盘。复盘是围棋中的术语。原本指的是当下过一盘棋后,我们需要在棋盘上重新走一遍,看看哪里好与不好,有没有更好的办法。平常我们的复盘,也需要对过去的事情重新过一遍,以局外人的眼光审视自身,避免“当局者迷旁观者清”的窘境,进而提升认知的能力。

图:用Lizzie和MyLizzie复盘分析围棋棋局

故障复盘是指从失败中学习。彼得圣吉说过:“从本质上看,人类只能通过试错法进行学习”,项目失败并不可怕,我们每一次经历都是一次试错,学会从试错的经历中复盘,就是我们螺旋式成长的必经之路。研究失败的逻辑非常重要,复制成功者的所作所为,不一定会让你更成功,而避免失败者的做事套路,将一定会增加你的成功概率。

4. 故障复盘的价值

故障复盘和所谓的“吃一堑长一智”有异曲同工之妙。但是吃一堑长一智的前提是,你必须知道自己错在哪里,是什么原因导致错误出现,只有知道了这些,才能不在同样的地方摔跟头。仅仅重复一万次的人永远成不了专家,只有经过系统的、有目的性的、有策略的总结和反思,并及时纠正了一万次的人才可以成为专家。

宁向东老师说过一句很经典的话:“从成功中,我们看到的必然,其实都是偶然;而从失败中,我们看到的偶然,其实都是必然”。故障复盘的核心是要不断减少失败因子繁衍的温床,将它们牢牢地掌控在不至于引发危机的范围之中。

团队的复盘能力有多强,决定了团队的进步空间有多大。效率最低的工作是一个地方犯过的错误重复再犯,复盘的核心价值就是让犯过的错误不再重犯,不在同一个地方反复跌倒,你就已经能赢大部分的人了。只有对自己的团队无情复盘,这样才知道哪里做的对,哪里做的不对,哪里是运气,以及哪里是能力。

理解故障复盘的价值是容易的,但是要真正做好这件事可就没这么容易了。因为复盘和管理、团队、人员、技术和风险等都是息息相关的,是需要一整套体系来支撑的,这就需要我们充分理解其背后的底层逻辑才能把这事做好。

5. 故障复盘背后的底层逻辑

图:故障复盘背后的底层逻辑

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注