一般的分析问题
分析问题的重要性
分析问题是发现问题和制定解决方案之间的步骤,是两者必不可少的衔接。这个必不可少体现在两个方面:一是这个分析问题的步骤必不可少,二是分析问题的时间必不可少。换句话来说,分析问题是确保”做正确的事”,制定解决方案则是”正确的做事”。
人们面对一个问题,容易出于本能反应,第一时间在脑子里形成一个解决方案,并告诉大脑这个问题是自明的、结论是清晰的,以此来避免理性脑的参与。另外,即便被外部规章约束需要去分析问题,往往在思想上不会重视,只会花很少的时间,得出一个主观的、片面的、偏差的结论,然后快速进入到执行阶段。
缺少了问题分析的步骤和时间,那么大概率会导致得出一个本能的、非理性的、主观的、片面的、偏差的结论,错误的结论将导致错误的解决方案,哪怕你投入了更多的时间在方案上。由此,分析问题的重要性就清晰的传达了。
当认识到分析问题的重要性后,为了解决刚才提到的本能脑干扰和分析问题的全面性,下面会抽象几个分析问题的原则供分析问题时参照和纠偏。
几个一般原则
1. 分析前的关键意识
在开始分析问题前,需要先摆正思维意识。对那些可能影响后续问题分析的一些潜在意识或者错误思维提前进行纠正,防止干扰后续分析过程。
1.1 明确分析问题的阶段独立性:分析问题和制定解决方案分离
分析问题和制定解决方案是有先后顺序的,只有正确的分析了问题,才能制定有效地解决方案,才能有的放矢。并且这个先后顺序是绝对的,不存在时间交叉,例如体现在会议章程上也应该是分离的。不能交叉是因为,一旦分析问题时就考虑解决方案就必然会带来在局限思维在解决方案上,分析问题反被解决方案约束,导致面向解决方案分析问题。
所以需要明确认识到分析问题是个独立的阶段,此阶段只分析问题,不解决问题。
1.2 警惕本能脑带来的认知偏差
在丹尼尔·卡尼曼的书籍《思考,快与慢》和《噪声》中说明了本能脑(系统1)带来的一些非理性的认知偏差。我们在后续的分析过程中要警惕本能脑带来的认知偏差,可以考虑通过统计的、数学的、群组的、加权的方式去预防。理想情况下是有辩手思维,对自己的和别人的观点问一句:“是这样吗?为什么?”
1.3 要注意心中有“数”
如《毛选》中《党委会的工作方法》所说“对情况和问题一定要注意到他们的数量方面,要有基本的数量分析。任何质量都表现为一定的数量,没有数量也就没有质量。”。对问题进行分析时,要对数据有敏感度,要清楚需要观测哪些数据、数据质变的临界值范围是多少、变化趋势怎么样的。基于数据去分析,可以很大限度的避免主观臆断。
1.4 分清楚假设和结论
从数据中直接得来的往往不是结论,而是一种假设,需要经过实地验证。一个结论往往需要提出多个假设,以及不断地验证。例如大前研一的《思考的技术》中提到的例子:从日本和服整体销售额下滑,得出和服市场持续减小,这只是一个假设,不是结论。把假设当结论,可能导致做出截然相反的解决方案。
1.5 二八原则/帕累托原则
引起问题的原因可能有多种,其中只有20%是关键原因造成了80%的问题。问题问题和解决要厘清各要素的权重,集中精力,解决关键点。
2. 质疑和验证问题的有效性
问题的来源多种多样,如用户反馈、指标异常、自行发现、脑暴发现等,这些问题有可能是假问题。例如,把某些边缘的正常情况错误的认为是问题;用户根据现象,或结合历史经验,臆断出未经确认和验证的问题源;把现象当成问题;表达错误,沟通障碍,导致问题理解偏差;问题是某个根问题的衍生;等等。对问题的有效性存疑并进行验证,是正式分析前的必要准备。
2.1 确定问题粒度:对复合问题拆分为小问题
分辨问题是否是一个混合问题,就过往经验来看,有的研发会有意或无意的把多个问题进行聚合性表达,也就是把多个不同的问题表达为一个复合问题。问题的分析必然是针对性的对单一问题的分析,不能有“一起看,一起分析”的思维。并且对复合问题拆分后,分析问题的难度也会下降很多,且不同的问题域范围也会导致解决方案有很大的差异。
2.2 确定问题对象:问题的主体对象及相干对象
问题不是独立存在的,要认识到问题所处的环境及相关对象。如做代码治理,那么问题的主体就是代码仓库中的问题代码,其他相关对象为:研发人员、研发流程、CI/CD基建能力、团队文化、监控机制等。一个主体关联着很多相关对象,他们之间则必然有相关的影响。盘点这些对象,会给我们提供多个分析视角和对象,有更多的输入就能有更理性全面的输出。
2.3 确定问题为真和一致性:实地验证问题的有效性
正如前面所说,问题源的置信度非自行验证不能确认。要去看、去复现问题,保证问题是有效的,且是理解一致的。质疑问题是否为真,可以规避许多有意或无意的因果假设。如果问题是用户提出的,在《沟通的本质》和《非暴力沟通》中都提到一个方法可以使理解达成一致:复述你听到后你理解的问题。然后在需要协作解决问题的小组内对问题达成共识,对问题的理解进行对齐,确保我们要解决的是同一个问题。
3. 全面的分析问题
分析问题要全面,避免片面、主观。应该对不同对象、不同时间、不同范围来分析,基于逻辑、基于数据去分析和推导。更全面的分析问题,才能从中找出其根本原因。这个过程当然可以结合历史的经验做一些合理的假设,然后去验证这些假设的真实性。在分析时,可以把分析过程写下来,这可以更好的审视和矫正分析过程。
3.1 分析问题现状:现象、现场、复现性等
分析问题的第一步当然是去到问题的第一现场,去看,去复现。这个过程也可能需要工具进行辅助,如数据采集、统计分析、网络搜索等,以及和相干人员确认问题现象。问题分析时,避免先入为主,带着结论去评估问题现状。
3.2 分析问题历史:过去如何发生、未来如何演化
问题的出现是有时间维度的,通过分析过去问题如何发生和变化,来了解问题是如何产生,从中找出共性点,备后续分析。另外,通过过去问题的变化过程,也可以推测在不干预的情况下,问题是否会继续劣化,从而得出问题治理的紧急性和重要性。
知道了问题是如何产生的,也可以对后续治理增量提供思路。
3.3 分析正常情况:从问题的背面看问题
前面两点分析问题的现在、过去、未来,那么接下来我们不妨从更大的范围来看问题。即从哪些正常的场景、未发生问题的场景去分析为什么在这些场景下问题没有发生,他和发生问题的场景有何不同。
如果能找出正常和非正常的差异,可以从另一面补充问题发生的原因。
3.4 分析问题原因:直接原因和根本原因
最后是结合前面的分析来递进的思考和推导问题的直接原因和根本原因。我们要明确这两个原因的差异性,直接原因离问题更近,更容易想到,治理成本也往往更低。但是如果不解决根因,那么问题还会反复出现。
4. 群体分析和决策:离问题近的人、合作方、团队
当我们得出一个结论后,为了避免个人决策导致的偏差和噪声,我们需要引入群体决策智慧。这些群体包括离问题近的人、合作方、合作团队。在和群体讨论前,最好通过文档的方式整理好问题的分析过程和结论。然后在讨论和沟通时,进行透明、非抵抗、建议性沟通,通过群体决策对问题进行定性。同时也要避免群体无责。