5个为什么(five-whys)
⽂章⾮常好,我认为我们必须实施这⼀思想。
原⽂:
翻译:
正⽂:
第⼀部分:创业公司免疫系统
概要:⽆论何时当发现问题时,应连续追问五个为什么寻到问题的根源。然后在分析的各个层⾯进⾏修正。发现问题时应⽤五个为什么,你将(1)发现技术问题下的⼈员问题,(2)为你的创业公司建⽴⼀套免疫系统。
⼤野耐⼀是丰⽥⽣产⽅式的发明⼈之⼀。他的书《丰⽥⽣产⽅式》是⼀份很吸引⼈的读物,虽然它并不实⽤。读完这本书,你甚⾄可能都没法意识到丰⽥是做汽车业务的。但是我清楚地从这本书学习到了⼀个⼗分具体的⽅法:问五个为什么。我认为这是⼀个关键的精益创业⽅法。
当问题出现时,我们倾向于将其视作危机并追究责任。更好的办法是将其视作⼀次学习的机会。但并不是泛义的整体⾃我提升。⽽是通过五个为什么寻到问题的根源然后进⾏修正。
发现问题时追问五个为什么。具体是这样进⾏的。⽐如,你发现你的⽹站崩溃了。显然,你第⼀反应是恢复它。但是危机⼀旦过去,应开展事后调查询问为什么:
1. 为什么⽹站崩溃了?因为所有前端服务器上的 CPU 使⽤率都达到了 100%。
2. 为什么 CPU 使⽤率达到 100%?因为⼀段新代码包含⼀个⽆限循环。
3. 为什么会出现这样的代码?因为某员⼯出错了。
4. 为什么他会出现这样的错误?因为他没有为这个功能写单位测试代码。丰田汽车网站
5. 为什么他没有写单位测试代码?因为他是⼀名新员⼯,且没有在测试驱动开发⽅⾯接受正确培训。
在这五个地⽅进⾏修正。
⽬前为⽌,这与主管运营团队⾯对⽹站崩溃会作的分析相差不⼤。接下来:你要承诺按⼀定⽐例投资⽤于对分析的各个层⾯进⾏修正。因此,在上⾯的例⼦中,我们需要作五处的修正:
1. 恢复⽹站。
2. 移除错误代码。
3. 帮助出错的某员⼯了解为什么他的代码没有起到预期作⽤。
4. 培训该员⼯学习测试驱动开发相关知识。
5. 将测试驱动开发纳⼊新⼯程师⼊门指导内容。
进⾏修正可建⽴创业公司免疫系统。
开始相信应该采⽤这种⽅法应对所有问题,⽽不仅是⽹站崩溃。每次,我们将出现的问题当作寻系统缺陷的机会,进⽽⼩幅地调整改善。
通过持续不断的调整,我们最终建成了⼀系列预防问题发⽣的坚固防御。这种⽅法是打破「时间/质量/成本,只能选两个」悖论的关键,因为这些⼩额投资将使团队随时间运转更快。
创业公司
在上例中,⼀开始的技术问题实际上变成了⼈员和流程的问题。这⼗分典型。我们⼯程师有只关注产品
部分问题的倾向,⽽五个为什么则常会避免这种倾向。
这也是在我以前的⼯作中可以使新⼯程师⼊职第⼀天就⼗分⾼产的原因。我们有⼀套极佳的⼊职过程,包括导师制及需要注意的重要事项清单。⼤多数⼯程师在⼊职第⼀天就将代码⽤于开发了。
根据错误成本⼤⼩进⾏修正
我们⼀开始没有这样的好计划,也没有马上将所有时间⽤在这上⾯。相反,五个为什么⼀直揭⽰出由于新员⼯培训不正确⽽引起的问题,为此我们进⾏了⼩幅调整。所以在我们意识到之前,就已经完全不存在这类问题了。
因此,记住上述规则中的按⽐例进⾏投资⼗分重要。也很容易知道:出现问题时需要彻底的重写。我们较倾向于关注技术⽅⾯的问题且容易反应过度。
如果问题严重,⽐如⽹站崩溃,要耗费⼤量资⾦或需要⼤量⼈⼒时间进⾏调试,那么同时应该配备同样多的⼈⼒时间或资⾦寻解决⽅案。
修正预算总额应与引起五个为什么的错误成本成正⽐。因此,如果⽹站崩溃了,它是五名员⼯花了⼀整天时间建成的,那么也许花五个⼈⼯⽇⽤于修复才是合理的。但如果这个错误花费了三名客户每⼈ 25 美分,那么也许修复它只应⽤⼏个⼩时。
但总有最⼤限量,也有最⼩限量。对于所有⼩问题,只需要向前改进⼀点。不需要过度投资。如果这个问题再次出现,五个为什么会给你⼩额预算让你再向前改进⼀点。你可沉着应对,因为只要问题再出现就可采⽤五个为什么解决。
第⼆部分:如何开始
总结:采⽤五个为什么可以⾸先将其应⽤于⼀个具体团队的⼀个具体问题。选择⼀个负责⼈与问题相关⼈员⼀起进⾏事后调查。然后将分析结果通过邮件发给公司所有成员。将五个为什么反复应⽤于 IMVU 为公司创建了⼀套免疫系统,使我们的开发者出错减少速度更快。
在第⼀部分,我讲述了如何采⽤五个为什么到问题的根源,进⾏修正,并为你的创业公司建⽴⼀套免疫系统。所以…
你是如何开始五个为什么的?
我建议你从⼀个具体团队和⼀个具体类别的问题开始。我第⼀次选择了扩展性问题及运营团队。但你可以从任何地⽅开始—我曾在很多不同的团队⽤过。
刚开始采⽤五个为什么只需要⼀个负责⼈。⼀旦团队⾥有⼈发现⼀个问题,他将进⾏事后调查。
但不要让负责⼈独⾃⼀⼈完成;将问题相关⼈员(包括诊断或调试的⼈)聚集在⼀起⼗分重要。让负责⼈主导讨论,并赋予他或她权⼒给每个⼈分配解决⽅案中各⾃承担的任务。
将五个为什么调查结果发送给公司每个⼈
⼀旦任务分配完毕,让出错的新员⼯将分析结果邮件发送给公司所有⼈。最后⼀步⼗分困难,但我认为⼗分有⽤。五个为什么应该读起来简明易懂。如果不是,那么你就有可能搞错了真正的问题。
将结果信息⼴泛共享的优点在于它可以让每个⼈都认识到团队所⾯对的问题,同时也了解到这些问题是如何解决的。如果分析⽆懈可击,每个⼈就很容易理解团队为什么要花时间⽤于问题预防⽽不是⽤于开发新功能。
另外,如果这样导致了公司⼤风暴—也是⼀件好事。现在你知道存在问题:要么是分析不合理,需要重做,要么就是公司不理解你所做事情的重要性。明确是哪⼀种情况,然后解决问题。
长期采⽤五个为什么会遇到什么?
以下是我的经验。
⼈们习惯了五个为什么的步骤,增加投⼊变得⼗分正常。⼤多数时候,你投⼊的都是需要⼤量会议才能决定的事情。
你将看到公司⾥的⼈为帮助你把⼯作做得更好都向你提出有趣的建议。现在,所有⼈都⼀起学习—了解你的产品、程序及团队。每封五个为什么邮件都是⼀份教学⽂件。
采⽤五个为什么⼏年后 IMVU 的免疫系统。
让我向你展⽰ IMVU 的运营团队和⼯程团队在实施五个为什么⼏年后的样⼦。我们为部署对⼯具和程序作了很多改进,现在⽹站出现崩溃机率很⼩。我们有五层坚固的防御。
1. 每位⼯程师都有他/她⾃⼰的沙盒⽤以尽可能地模仿应⽤程序(⼀旦出现错误,我们其后不可避免地会在五个为什么中发现)。
2. 我们整个团队有⼀套全⾯的单位测试、验收测试、功能测试、性能测试及可⾏的测试驱动开发。⼯程师设⽴了⼀系列的测试标签,所以
你可以在你的沙盒⾥进⾏⼀系列你认为与现在项⽬或功能相关的测试。
3. 通过持续的整合聚集,检⼊后 100% 的测试可运⾏。如测试失败,它将阻⽌修正版被使⽤。
4. 如某⼈想要进⾏部署,我们有⼀套称为集免疫系统的完全⾃动化系统。这将采⽤渐进的改变⽅式,⼀次⼀台机器。这个系统还将持续
监控这些机器的运⾏状况以及整个集,以判断这些改变是否带来问题。如果正在发⽣的不受认可,它将拒绝改变快速恢复原状并锁定部署,直到有⼈调查出了什么差错。
5. 我们有⼀整套的监控警报系统,⼀旦出现问题,正在运⾏的页⾯调度程序将被触发。由于五个为什么不断发现⼀些很难设置静态阈值的
关键指标,我们甚⾄有⼀个动态预测算法。如果指标超出正常值,基于过去的数据及⽕灾警报,就可利⽤这个算法作出相应预测。(你可以阅读我们⼀位⼯程师的⼀篇关于这个⽅法的⽂章。)
坚固的免疫系统减少出错加快速度
所以如果你能够潜到我们任何⼀位⼯程师的桌上,登录他们的机器,在某⾼流量页⾯录⼊⼀个⽆限循环代码,那么⼤概 10 到 20 分钟后,
他们会收到⼀封电⼦邮件,内容⼤概是这样:
「亲爱的某某,⼗分感谢您试图录⼊修正 1234。遗憾的是,这个主意很糟糕,你的改动已被还原。我们会将此事通报整个团队,并期待您弄明⽩哪⾥出了错。祝好运,你的软件。」
好吧,并不是完全⼀样。但是⼤意如此。
拥有这样⼀系列的防御对实施五个为什么有益。如果应⽤程序遇到错误的改动,我们就将有⼀套内置式的问题:为什么⾃动测试没有发现它?为什么集免疫系统没有拒绝它?为什么操作没有上⽹页?如此等等。
我们每次都对各层防御进⾏细微的改善。最后,它将使我们每天可以完成许多次的部署,⽽且⽆显著停机或故障回归。
第三部分:传统创业公司
总结:任何时候开始采⽤五个为什么都不晚,即使你被不计其数的遗留代码困扰。⼀旦发现问题就开始问为什么—你⾃然⽽然就会开始解决那造成你 80% 问题的 20% 的潜在问题。最初是丰⽥公司发现五个为什么—如果它适⽤于汽车⾏业,它也适⽤于你。
在第⼀部分,我讲述了如何采⽤五个为什么到问题的根源,进⾏修正,并为你的创业公司建⽴⼀套免疫系统。第⼆部分,我解释了如何开始五个为什么以及 IMVU 怎样经过经年累⽉的应⽤五个为什么⽽建⽴了⼀套创业公司免疫系统。在最后⼀部分,我将介绍如何将五个为什么应⽤于传统创业公司。
开始问为什么永远都不晚。
当我向创业家和⼤公司解释五个为什么时,我有时得到这样的回应:「好吧,当然,如果你拥有很好的
⼯具、程序及测试驱动开发,这样开始当然很容易!但是我的团队被不计其数的遗留代码困扰着,⽽且…」
所以我郑重声明:IMVU 是在不拥有这其中任何⼀项的情况下开始五个为什么的。我们甚⾄没有在全团队实施测试驱动开发。我们从未听说过五个为什么,团队⾥还有⽆数个「敏捷怀疑论者」。我们开始持续整合时,还有成千上万⾏代码不在测试范围之内。
⽽五个为什么的优点在于它本⾝包含帕累托原理。因为最常见的问题始终重复出现,你的防御⾃然⽽然地集中在最需要帮助的那 20% 的产品上。⽽也正是这 20% 的产品花费你最多时间。所以五个为什么的偿还速度⼗分快,且它能⽴即使状况明显好转。你只需要开始。
如果它适⽤于汽车⾏业,那它也适⽤于任何地⽅。
因此,谢谢您,⼤野耐⼀。我想你会喜欢看到:在你开始丰⽥之旅时尚不存在的⾏业⾥,我们能够从系统与程序中消除所有不必要的浪费。
我尤其感谢您向我们证明,这种⽅法可适⽤于世界上最难做且发展缓慢的⾏业:汽车⾏业。您使得我们不能够⽤最可悲的借⼝推托:「当然,这不适⽤于我的业务,是吗?」如果它适⽤于汽车⾏业,它也适⽤于你。
你还等什么?