最近工作生活很忙,忙什么呢?忙着解决各种问题,像消防员一样跑到各个地方救火。当静下心来想这些问题的时候我突然意识到这些问题都彻底解决了吗?以后还会发生吗?他们发生的根本原因是什么?有没有一劳永逸的解决办法?不知道大家有没有这种忙着解决各种问题的经历,如果有的话下面的’5个为什么’方法论可能会帮你从根本上解决那些问题。

介绍

5个为什么从字面意思上理解很简单,就是当一个现象发生的时候依次提出5个什么,直到找到根本原因为止。当然这里的5是泛指,你可以提更多的问题如果还没有找到根本原因的话。

历史

这种方法最初是由丰田佐吉提出的;后来,丰田汽车公司在发展完善其制造方法学的过程之中也采用了这一方法。作为丰田生产方式的入门课程的组成部分,这种方法成为其中问题求解培训的一项关键内容。丰田生产系统的设计师大野耐一曾经将五问法描述为“……丰田科学方法的基础……重复五次,问题的本质及其解决办法随即显而易见”。目前,该方法在丰田之外已经得到了广泛采用,并且现在持续改善法、精益生产法以及六西格玛法之中也得到了采用。

为什么需要这种方法

ok, 话说回来,为什么我们需要这种方法论呢?我们工作生活中会遇到各种问题,如果我们只是在问题表面做功夫,看似在解决问题其实是治标不治本。爱因斯坦说:“如果给我1小时解答一道决定我生死的问题,我会花55分钟来弄清楚这道题到底是在问什么。一旦清楚了它到底在问什么,剩下的5分钟足够解答这个问题。”

所以5个为什么就是这种方法论,通过不断提问找到根本原因,然后让你能够从根本上解决这个问题。

案例分析

以下是一个示例,供大家参考

现象:我们需要从0搭建一个新的环境,开发和运维异地合作花了2周时间才完成。
1. 为什么花了这么长时间?
因为异地沟通有时差,开发排查问题只能通过运维去执行然后把结果返回给开发看,一去一回两天就过去了。 
2. 为什么部署新环境会遇到这么多问题?
因为手册是开发写好的,部署是运维按照手册执行,但是中间运维把域名配置错了导致问题排查了很长时间。
3. 为什么域名配置错误没有在第一时间定位到?
因为在排查问题的过程中确实找到一些配置文件的错误,开发一直以为是跨域问题导致的。
4. 为什么配置文件会有错误?
因为我们的配置是新添加的,以适应新的环境,但是这个文件一直再更改,后面的改动造成有些配置错误。
5. 为什么这个错误的配置没有在开发测试的第一时间发现?
因为我们测试的时候没有用这个新环境测试,还有用旧的环境测试,导致架构跟新部署的架构略有不同。

所以到这里我们发现,从0搭建一个新环境需要很长时间,异地沟通,问题排查困难是直接原因,但是最终原因是我们没有在测试环境就使用这个环境,对新环境不熟悉或者配置使用不当造成的。所以我们的解决办法是尽快在测试环境使用新的架构进行测试。

对这个问题更深层次的理解是为什么不把基础设施的管理简单化,让环境迁移一键完成?比如引入AWS的CloudFormation? 这也为我们团队指了一个新的方向。

后话

5个为什么需要不断训练,因为一个好问题决定了你如何解决它,相反一个不优雅的问题可能把你带偏了。

引用

Wikipedia 5个为什么