在CircleCI,CI有第二个含义。持续改进。我们不断地寻求反馈,不仅是为了改进我们的代码,而且是为了改进我们的流程,并在此过程中更好地完成我们的工作。这种持续改进始于一个重要的公司价值:一个无责的文化。我们的无责文化延伸到我们运作的每一个部分。它使我们能够在不同的工程团队之间建立信任,而且对于我们如何处理事故、从中学习并防止它们再次发生至关重要。无责文化意味着我们将责任归咎于流程,而不是人。
为了帮助你了解无责文化的内部感觉,我们希望你能听到组织中每个层次的员工的意见。
工程师的观点--泰勒-麦高芬
最近,我的团队对代码库的改动在CircleCI平台上引起了一个事件。但我从不担心自己会被指责。我们优先考虑的无责性使我有能力专注于最重要的事情--解决事件并确保它不会再次发生。
在事件发生之前
无咎让我能够完成我的工作,而不用担心一个错误的变化会对我产生不良影响。大家都明白,如果我引入的变革导致了事件的发生,那么无论如何,这个事件的发生只是时间问题。也可能是另一个团队成员拿起了票据,引入了错误的变化。这种心态使我能够尽心尽力地工作,而不必担心出了问题后被训斥。
调试事件
当事情真的出错时,最重要的是减轻对客户和同事的影响。如果我的突破性变化吵醒了在欧洲的队友,我们都专注于通过快速解决问题和减轻对客户的影响,让他们尽快回到床上,而不是找出谁造成的问题。
通过专注于解决问题,而不是推诿责任,每个人都被激励着跳出来,帮助调试问题。没有人犹豫不决地抛出关于可能导致问题的想法,或潜入兔子洞中寻找更多的背景。我从来没有因为一个坏主意而受到指责,也没有因为追寻一个红鲱鱼而受到任何恶意。每个人都专注于最重要的事情--让我们的系统恢复正常运行。
事件发生后
现在是有趣的部分。我们已经缓解了事件,现在是时候弄清楚到底发生了什么。一旦发现根本原因,我们就不会停止提问。把责任推到有罪的人身上是很容易的,要求把它修好,并在我的职业发展中记下是我造成了这种情况。但是,这将是把责任归咎于人。我们要更深入地寻找原因。
- **为什么这次提交会破坏应用程序?**这是否暴露了一个弱点或限制?与其说我们只是修复提交,不如说我们需要修复更大的系统?
- **为什么我们没有在CI中发现这个问题?**是否有测试或警报可以用来防止这种情况?
- 为什么以前没有发现这些弱点?这真的是一个未知数吗?还是在以前的事件回顾中发现了一些可以解决这个问题的东西?
事件意味着我们失去了对系统的一些信任,但这种信任是可以恢复的。事件回顾创造了可操作的项目,这样我就可以相信这个过程会涵盖我,知道我们已经从这种情况中吸取了教训,并改进了我们的流程和系统,继续前进。每个人都以他们当时所掌握的知识尽力而为。
这就是我们专注于流程而不是人员来处理事故的方式,它使我在工作的每个部分都成为更有信心的工程师。
工程经理的观点 - Jace Proctor
作为一个经理,用演讲和文件来阐述理想的文化是一回事,你实际执行、允许和鼓励的是另一回事。
作为CircleCI的工程经理,我帮助执行我们的无责文化。我确保我们专注于流程和改进,而不是具体的个人或行为。在事件缓解或回顾过程中,我们确保主题和话题都集中在为什么和如何,而不是什么或谁,甚至当我们向后看以找出发生了什么。
我们这样做的一个方法是使用 "五个为什么"技术进行回顾性分析。个人行为和错误几乎都是更深层次的基础问题的结果,但谈话自然倾向于围绕表面的错误。我帮助我的团队把讨论推向深入,用 "五个为什么 "的框架找出根本原因。
这里有一个简单的例子。
"数据库瘫痪了,我们的应用程序失败了"。 为什么?"我们最近提交的代码导致数据库瘫痪。" 为什么?"它用一个坏的循环把我们的数据库推到了容量之外。"为什么?"我们在提交之前没有写测试,所以我们没有在它进入生产之前发现它。"为什么?"我们在一个非常紧迫的截止日期前推出这个功能,不得不偷工减料。"为什么?"我们只是没有足够的人。"
这是一个简化的例子,但你可以看到反复问 "为什么 "和进一步推动讨论是如何帮助我们超越表面的结果,并获得更系统的根本原因。
这也迫使讨论超越个人或个人行为。个人没有责任去解决那些远远超出其权限或专业范围的系统性问题。我们帮助团队深入挖掘这些基础问题,然后我们作为管理者,与高级领导层一起,可以采取行动来解决这些问题,使每个人受益。
首席技术官的观点 - 罗伯-祖伯
作为一个领导者,你的目标是建立一个高绩效的组织,而高绩效的团队只有在每个人的福祉被优先考虑时才能存在。这一点在谷歌的亚里士多德项目和《加速》(Forsgren等人)一书的数据中得到了证明。这些数据将团队绩效与心理安全直接联系起来。
关于一个组织如何改进,最丰富的信息来自于失败。当人们感到安全可以公开谈论失败时,他们就会暴露出那些需要改进的地方,并采取行动使事情变得更好。如果没有这种安全感,这些问题就不会浮出水面。
这与事件无关
事件是显微镜,我们倾向于在显微镜下检查无责的文化,因为它们通常是尖锐的,极其明显的,而且是最优先的。它们也是极其紧张的。在事件发生期间和之后,会有明显的行为提炼出来。
但是,在你的事件响应中所表现出来的文化,将直接反映出你每天在最平凡的情况下,通过每一个行动所建立的文化。例如,如果每次招聘工作没有按计划进行,你就会责备招聘团队,那么你就不能在事件发生后的审查中,称其为 "安全空间",并让你的员工诚实地说出出错的原因。相反,如果你对招聘团队的回应是:"有什么额外的信息可以帮助你在这里做出不同的决定?"很明显,你是在试图解决问题,而不是责怪对方。你的团队会注意到这一点。
检查系统
当我们检查一个事件以确定需要改进的地方时,我们最常问的一个问题是:"系统在哪些方面让我们失望了?"这个问题可以有很多不同的说法,但重点很明确:同样的人在不同的系统中操作,会有不同的结果。
这就是我们与指责断绝关系的地方。如果同样的人在不同的系统中会得到不同的结果,那么我们就来讨论一下这个系统。
作为一个领导者,如果你没有准备好,走到这个时刻会变得非常不舒服。把责任推给个人很容易,而且感觉很安全。这也是一种超级懒惰。当你开始审视这个系统时,你会发现这个系统的设计--明确的或隐含的价值、优先级和决定的集合,随着时间的推移,创造了你目前的环境--不是参与事件的个人的工作。它是包括你自己在内的组织领导者的工作。
你如何选择处理这一事实,是建立一个无责文化的核心。公开讨论让你进入该系统的背景和心智模式,以及可以改进的方法,发出了一个非常重要的信号,表明你自己愿意做改进的工作。
我最喜欢的系统资源之一是Donella Meadows的《系统思考》,她在书中说:"系统不能被控制,但它们可以被设计和重新设计。"
系统的行为是按照其设计进行的。对你在系统设计中的角色负责,并找到一种方法来修改设计,以产生更好的结果......不要责备。
底线
无责文化使CircleCI的工程师能够更快地解决问题,因为他们不担心受到报复。当我们的工程师通过错误发现我们系统的弱点时,他们从这些错误中学习,这有助于我们不断迭代和改进我们的流程和产品。