软件开发过程中的思维方式 -- 如何分析问题
我们在软件开发过程中,往往会遇到很多问题,不管是对需求合理性的探讨,还是对开发过程中 bug 原因的排查,还是对线上问题的追溯,都体现了分析问题的重要性。
在此分享两个思维方式:5WHY 分析法和第一性原理
一、5WHY 分析法
先来看看 5WHY 分析法,这种方法最初是由丰田佐吉提出的,后来,丰田汽车公司在发展完善其制造方法学的过程之中也采用了这一方法。
下面内容摘自 5WHY 分析法。
所谓 5WHY 分析法,又称“5 问法”,也就是对一个问题点连续以 5 个“为什么”来自问,以追究其根本原因。虽为 5 个为什么,但使用时不限定只做“5 次为什么的探讨”,主要是必须找到根本原因为止,有时可能只要 3 次,有时也许要 10 次,如古话所言:打破砂锅问到底。5why 法的关键所在:鼓励解决问题的人要努力避开主观或自负的假设和逻辑陷阱,从结果着手,沿着因果关系链条,顺藤摸瓜,直至找出原有问题的根本原因。
所以 5WHY 分析法的核心是 追究根本原因。
我们可以看一个经典的例子:
丰田汽车公司前副社长大野耐一曾举了一个例子来找出停机的真正原因
问题一:为什么机器停了?
答案一:因为机器超载,保险丝烧断了。
问题二:为什么机器会超载?
答案二:因为轴承的润滑不足。
问题三:为什么轴承会润滑不足?
答案三:因为润滑泵失灵了。
问题四:为什么润滑泵会失灵?
答案四:因为它的轮轴耗损了。
问题五:为什么润滑泵的轮轴会耗损?
答案五:因为杂质跑到里面去了。
经过连续五次不停地问“为什么”,才找到问题的真正原因和解决的方法,在润滑泵上加装滤网。
如果员工没有以这种追根究底的精神来发掘问题,他们很可能只是换根保险丝草草了事,真正的问题还是没有解决。
通过上面的例子,可以比较清晰的看出来,针对问题,要层层深入,直到找到最终原因。
二、第一性原理 (First Principles)
第一性原理是古希腊哲学家亚里士多德提出的一个哲学术语:每个系统中存在一个最基本的命题,它不能被违背或删除。
马斯克也不止一次提到过他对第一性原理的思考。
我们运用「第一原理思维」而不是「比较思维」去思考问题是非常重要的。我们在生活中总是倾向于比较——别人已经做过了或者正在做这件事情,我们就也去做。这样的结果是只能产生细小的迭代发展。「第一原理」的思考方式是用物理学的角度看待世界的方法,也就是说一层层剥开事物的表象,看到里面的本质,然后再从本质一层层往上走。这要消耗大量的脑力。
第一性原理解读
我们这里对第一性原理做些解读。
摘自:https://www.huxiu.com/article/250619.html
在哲学领域里,第一性原理指的是“先验”(a priori),也就是不依赖任何经验和逻辑的,也无法用理性推导得到的东西。可以说,它们是理性思考的起点,是公认的、不容被质疑、也无法证明的。通常它和认识论有关,康德说的“纯粹理性”之所以“纯粹”,原因就在这里。 在物理学里,第一性原理指的是“从头算”(ab initio),意思是直接来自已经建立的物理规律,而不依赖任何经验模型。比如根据若干公理,用薛定谔方程来计算电子结构,而不考虑任何实验数据,就可以称作“从头算”的计算。
在哲学和物理学的领域,第一性原理强调的是本质,是公理。 看到这里,其实我们都运用过第一性原理,回想我们初高中时候做数学物理证明题,都是基于公理,一步一步推导。
而在马斯克的的解读中,第一性原理是和比较思维做对比的。比较思维倾向于看别人怎么做这件事,然后我们在其基础上去做改进。与此相反的第一性原理,就是要追寻事物的本质,探寻事物的起源,避免被其他人影响。
第一性原理运用在软件开发的过程中就是满足客户需求。当了解这个本质以后,我们就可以多从需求的角度去思考一些问题,一些难以用技术解决的问题,可以从需求的角度去解决。