如果团队成员总是担心自己会因各种事故而受到惩罚,那么他们采取的行为将会将导致更大的事故。相反,我们应该庆祝事故的发生:免责地记录事故,公开地讨论事故,并慷慨地传播从事故中学习到的知识。一次事故不是一项支出,而是一项投资,投资给那些可以从事故中吸取教训的人。我们可以通过管理实践来最大限度地利用这些投资,使得尽可能多的人参与学习,并在整个组织中传播这些知识。如果管理得当,每次事故都会使组织变得更加强大。简而言之,目标应该是创造一种学习的文化——一种只犯新错误、不犯旧错误的文化。
一次事故
1994年到2000年之间,我在新泽西的贝尔实验室工作。作为一个系统管理员,我所在的团队负责维护数千台计算机以及这些计算机之间的连接网络。周围的同事都是才华横溢的科学家和工程师,我在大学里用的教科书都是他们编写的。
有一天,我需要修改核心路由器的配置。配置变化对系统行为的影响往往很难估量。你可以说,这是一个很小的变化,因为它只需要修改几行路由器的配置文件。你也可以说,这是一个很大的变化,因为它影响成千上万用户使用的网络。无论如何,这是一个重要的变化,因为这个变化阻碍一个重要的项目的正常进行。
我输入命令、修改配置、保存配置、检查相关清单。修改成功!……至少我是这么认为的。
我信心满满,开始做其他的工作。过了一会儿,我无法连接到网络上的大多数服务器,其他人也无法连接。我心里开始发毛,进而惊慌失措:是我的修改造成的吗?不可能!那是一小时之前的事情了。
不!肯定是我的修改引起的。字符输入错误不会马上显现出来。在这次修改操作中,有45分钟的缓存。在缓存失效之后,路由器成了昂贵的摆设,无法工作。
我马上把配置进行回滚,一切恢复了正常。
我父亲过去常拿天气预报开玩笑。例如,他说,如果天气预报只是简单地预测明天的天气会“和今天差不多”,那么在我们的居住地,有70%的概率是准确的,而在洛杉矶,概率可能是90%。打个比方,我经常开玩笑说,如果发生了故障,这样问:“我们最近做的重大更新是什么?”,这会让你有70%几率看起来像个天才,而在洛杉矶,你会有90%的几率像个天才。
这个一个小时之前的修改,如今还记忆犹新。
从失败中汲取教训
坐在我的办公桌前,我做了一个简单的计算,计算了这次事故的成本:受影响的人数、贝尔实验室的平均工资、当时人们坐在电脑前的可能性……
据我估计,这次事故给公司造成了大约1万美元的损失,并影响了数千人。
我惊慌失措。
我躲在办公室里。
祈祷没人说什么或注意到。
你猜怎么着?没有人责备我。
我躲过了这颗雷。或者,可能是别人替我背了锅。我不在乎,只要没让我背锅。
那天我学到了一个重要的教训:不要去动那个特定配置参数,如果你动了,至少要等一个小时才能宣布成功。
我从贝尔实验室偷走了一万美元。
你可能会感到惊讶,那次发生事故的时候,并不是我从贝尔实验室偷走1万美元的时候。
这是一个无心之失,一个初学者的错误。这应该算是工作中学习的成本。虽然我的恐惧和尴尬是真实的,但这些感觉有点杞人忧天。我有一个很好的老板,他会保护我,替我背锅。另外,当时的局域网相当不稳定,大多数受影响的用户可能会毫无抱怨地接受宕机。
接下来发生的事情可能就是“偷窃”了。
一个月后,我团队中的另一个同学也犯了同样的错误。宕机的规模、持续时间都相同,估计成本也是一万美元。
如果我分享了从上次事故中学到的东西,这次事故肯定是可以避免的。我当时就知道,多年后我仍然相信这一点。
何以理解我从贝尔实验室偷走了一万美元?不是我从“犯错”中偷走,而是我从“犯错”的复盘中偷走了。我剥夺了公司学习和提高的机会。
恐惧驱动消极行为
如果人们担心自己会因为故障事故而受到惩罚,其结果将会产生自我保护行为——这是意想不到的负面影响。这些负面影响可能会导致更多、更大的事故。
这些消极行为包括:
- 隐藏错误:这阻碍了组织学习,并可能剥夺公司潜在的改进机会。
- 隐藏问题:如果有堵塞言路的文化,人们会故意隐藏问题。这导致只有当问题大到不能被忽略时才会被发现。
- 忽视小问题。人们会因为害怕解决问题而忽略问题,因为做的越多,错的越多。这导致只有当问题足够大、足够昂贵,而不能被忽视时,问题才会被解决。
- 阻碍沟通和交流。恐惧会产生一种寒蝉效应,它会阻碍团队合作所需的开放和诚实的沟通,也会阻碍团队合作。
- 失去最优秀的技术人才:如果他们不选择离开这个有毒的文化,这个有毒的文化就会把他们赶出去。
如果一个组织不断地经历一个灾难又一个灾难,可能是企业文化无意中驱动了这些行为。
想要一个更可靠的系统?你需要一个高技能的团队,高效沟通,并在问题很小的时候解决掉。恐惧会产生相反的效果。
在一次大事故或其他故障之后,我们经常看到首席执行官或官僚主义者声称他们将“解雇责任人”。恭喜你,朋友,你只是帮助构建了一个充满更多、更大事故的组织的未来。
我不知道这种“解雇某人”的反应是从哪里来的,这当然是一个很好的电视喜剧的场景素材。这样做在新闻发布会上肯定会表现得很好。然而,令人怀疑的是,MBA课程是否能让未来的高管们明白,公司把解雇犯了错误的人解雇掉,剩下的都是完美的人才?相反,解雇所有犯错的人会导致公司没有员工,或者公司里充满等着被解雇的人,直到,管理层发现他们也是人。然而,首席执行官和官僚主义者常常迫于压力,要通过解雇某个人来证明他们的严肃性。刀在没有落下来的时候才有威慑力,想想看,在《平价医疗法案》推动过程中,专家们曾多少次猜测奥巴马总统将会把谁解雇?
这种有毒的文化使得公司很难雇佣到最好的员工。坏事传千里,如果你的公司有责备和羞辱的名声,流言就会传开,顶尖人才就会避开。
DevOps庆祝事故
DevOps文化对事故有更开明的态度。我们没有隐藏它们或假装它们没有发生,而是记录它们。我们不惩罚任何人,而是鼓励承担责任和复盘。
认为一个复杂的系统可以100%不出事故是不合理的。因此,因为事故而惩罚别人或对某人生气是不理智的。
一种更开明的立场是将每次事故视为计划外的投资。我没有为贝尔实验室的宕机事故花费1万美元,而是贝尔实验室为我的教育投资了1万美元。为了最大限度地利用这些投资,教育应该得到最好的利用。
从事故中学习不会奇迹般地自动发生。这种想法可能存在,但需要做的更多。从背锅到学习的转变需要高管、管理层和非管理层同样的承诺。高管们必须以免责的行为为榜样,并鼓励学习。管理必须创造能够学习的过程。项目经理需要为这些学习过程的发生分配空间和时间。每个人都必须学会更加开放和谦逊。
DevOps文化鼓励编写一份复盘报告,以捕获发生了什么以及学到了什么。把注意力集中在“我们学到了什么?”,而不是“为什么会发生这种事?”,或者“应该怪谁?”,等这样的问题上,这样可以创造一种学习和改进的文化。
复盘有助于我们承担责任。“accountable”这个词的字面意思是“对发生的事情负责”——也就是说,重述这个故事。在故事的时间轴上,复盘应该集中在发生了什么和学到什么。
复盘报告通常会总结出一份为防止将来发生类似事件而应采取的措施清单。清单列表中的每一项都应该像其他bug或功能需求一样进行筛选。DevOps的新思路表明,专注于这个列表会分散学习过程的注意力。一些组织已经开始将确定这些后续清单的过程分离出来,并将清单讨论转移到随后进行的单独会议上,通常由较小的一组人员进行。
Dave Zwieback的优秀著作《超越责任:从失败和成功中学习》一书中不鼓励使用“复盘”一词,而是将这个过程称之为“学习回顾”。学习回顾可以用来分析任何事件。从成功中学到的东西和从失败中学到的东西一样多。
任何大型事件(宕机事故或成功上线)充满了学习的机会。应鼓励参与的人就该专题发表报告,更广泛地分享所了解到的情况。在谷歌工作时,我经常看到SREs(站点可靠性工程师)跑到遥远的办公室,就最近的一次故障以及本地团队如何利用所学到的知识进行演讲。谈论隐藏在责任后面的事情!
当宕机事故影响到客户时,应该提供一个公开版本的复盘报告。公共关系和法务部门可能会在第一次被建议这样做的时候大汗淋漓,但是公司应该认识到,公开的事后调查实际上可以建立客户的信心和忠诚度。
公开复盘会以对客户有用的方式展示我们学到的东西。你能得到的最高赞美是:“我从你的公开复盘中学到了很多,这让我在工作上做得更好了!” 客户这样称赞的意思是,要么他们已经学会了你的公开复盘做法,要么他们已经学会了先前模糊的产品细节。由此产生的忠诚是无价的!
与公众进行真实的交流是很重要的。承认失败,让别人听起来像是说人话,而不是公关新闻稿。用第一人称写,表现出真正的懊悔。为了避免将故障的全部影响降到最低,一般会这样说:“我们对故障可能对我们的客户造成的影响感到遗憾。” 可能产生了影响?肯定有影响!否则,你将不会发送此通告。应该说:“我们为这次故障对客户造成的影响道歉。” 你的法务和公共关系部门一开始可能会遇到麻烦,但他们需要知道,现在的客户对真实性有着敏锐的判断。
结论
显然,我没有从贝尔实验室偷走1万美元。但我确实剥夺了我的团队从我的错误中学习的机会,而这种学习机会本可以提高团队的整体水平。我吸取了教训,我很高兴有机会把这次教训分享出来。
没有人喜欢宕机事故,但这些事故是不可避免的,所以我们不妨充分利用它们。通过免责的复盘和其他措施,我们可以创建一种文化,在这种文化中,每次宕机事故都会使组织变得更加强大。
如果我们做对了,我们唯一会犯的错误就是新的错误。
// 本文原作者:Thomas a . Limoncelli,他是Stack Overflow Inc.的SRE经理,拥有德鲁大学的计算机科学学士学位。他服务的公司制造一款为远程工作人员设计的工具:Stack Overflow for Teams。原文副标题:为什么DevOps鼓励我们庆祝宕机事故?全文有调整和修改。
观点分享
没有犯错就没有成长。
没有在犯小错,就是在犯一个大错。
犯错并不可怕,对犯错的恐惧才可怕。
犯错并不可怕,可怕的是重复犯同样的错误。
失败是成功之母,成功是失败之母。
涨工资,是因为承担了更大的责任。
发奖金,是因为做出了突出的业绩。
撒硬谎,道软歉,都是作死。