该篇为博客文章的重新系统整理,准备结合原来写过的问题和思维方面的文章,对自我的思考方法和过程再做一些总结。在看了刘未鹏的《我是如此思考问题的》方面的文章后,感觉这方面基本已经没有什么可写,但是没有结合自身实践情况进行进一步的总结,很难转化为自己的东西,特别是最近有些书逐步开始读第二遍,第三遍,对一些思维的方式,问题的解决方式又有了一些新的认识,应该做一个更加系统的总结。
第一部分 思考概述
首先给思考一个定义,就是自我驱动的独立意识下的思维,即是思考。
人和其它动物的一个重要区别就是有了意识行为,有意识是开始有思考行为的基础,因此植物人由于没有意识因此不再具备思考能力。但是有了意识还并不代表就一 定产生思考行为,有自我驱动的独立意识才可能产生思考行为。简单点讲,师傅教会我如何砍柴,烧水,我下次就完全按着师傅教我的方式做。那么在这种情况下没有形成自我驱动的独立意识,是没有思考行为的,但是我在做这件事情中自发主动的去想了,即形成思考行为。
思考行为有积极思考也有消极思考,但是只要独立意识驱动,都是思考行为。
如上面砍柴做饭的例子,一种是我在想如何做的更快点,更好点,哪些步骤是多余的, 哪些步骤可以改进;还有一种情况是我再想如何多偷一点懒,省点功夫和力气;很显然这两种情况由于我都在主动想,产生了思考行为,一个是积极主动的思考,寻求持续改进;一个是以自我中心为主,惰性驱动的消极思考。(注:在这里个人有一个很重要的观点,就是即使消极思考,也不要不思考,因为消极思考代表我还是在思考,而且很可能由消极思考转变为一种积极思考,比如我偷懒了,最后受到师傅惩罚,没有达到质量要求,这个时候很可能转化一种积极思考,即既能够偷懒又要达到质量要求下如何提升效率。)
你接收到一个基本常识时候是否产生思考行为,关键是看获取的过程。如果是你的老师将这些常识传递给你,那你是一种被动学习行为,而少有思考行为。但是如果你开始并不知道这个常识,你自己通过亲身的实践,不断总结出一个结论的过程,其核心的就是思考行为,一种在实践中主动学习的行为。
自我驱动的独立意识是思考行为之基础,但是这个范围仍然会很广,到我明天出门究竟应该穿什么衣服?今天中午该吃点什么?这些都是思考行为,这些思考本来也可以按我们后面给出的一些思维方法和模式进行,但是确实没有这个必要。
因此我们讨论之思考更多的是针对一个特定问题的思考,思考问题之本质是定义,分析和 解决问题。而解决问题之本质又在于让现实结果和我们的期望一致,即达到我们的目标。
通过上面的分析,后面将展开阐述的思考行为可以用下列方式来描述:
思考是独立意识的思维活动;思考是打破机械重复,寻求自我转变的思维活动;思考能力是定义,分析和解决问题的能力。
思考之最基本的两大思维活动即是分析和决策,其基础是问题定义,其导向是目标约束。
由于前人已经有大量的常识和经验的积累,导致我们有些思考活动会很简单,也很容易。比如现在我想让汽车开的快一点,我得换挡或多踩下油门;我生病了我得吃药或休息;我口渴了需要喝水。当时现实世界中的思考活动和过程远比这个复杂,这个地方的复杂性体现在重要的两点:
- 决定一个思维的影响因素太多,即使是做一个简单的做还是不做的二元思维决策。
- 很多思维最终形成的判断和决策不是简单的是非判断定性分析,而是涉及到定量分析,即往往在第一步决策的基础上还需要进一步决策程度的问题。举例来所,现在公司需要加大培训投入成本,思维的重点是投入多少合适,而不是简单思考究竟投不投入。
对于思考,我们首先要认识到思考本身往往就是解决问题,解决我们自身存在的问题或者环境和他人存在的问题。而问题是什么?我们已经有过多次定义,问题是现实环境状态和你期望的结果之间的差异,存在差异就存在问题,只是有些差异小我们没有明确的将这些差异暴露为问题。
思考的本质是解决问题,那我们将思考和解决问题联系起来,就形成思维这个词。而维这个字正式结合两者的核心,而维的本质又是结构化。
在《金字塔原理》这本书可以看到很多就是在讲结构化思维的问题,包括自定向下,金字塔构造, 归纳和演绎,MECE等。如果我们对思维活动增加一些关键词来说明,即我们常说的分类,分解,归纳(综合,抽象,提炼,概括),演绎,类比,组合,排序, 关联,依赖等。所有的思维活动都和这些关键词有关。
对于思维的方法论有很多,步骤太多或者太复杂,包括麦肯锡的解决问题七步法,结构化思维的方法和步骤等。所以有必要再对思维活动之核心步骤做一个提炼,思维方法和工具是术的层面,理解了思维活动核心模式则是思维之道。
让我们从一个小例子来分析如何找到思维之核心步骤和模式。
例子:张三开了一家小餐馆,最近原材料涨价成本压力很大,准备对原材料进行涨价。关于是否涨价和涨价多少的问题,很多员工激烈讨论和回复,具体如下。
甲:不应该涨价吧,由于其它餐馆涨价,我们生意比原来好了很多,薄利多销也是一样的。
乙:我们餐馆只有这么大,忙不过来,餐馆规模又无法扩大,涨价不会影响到顾客数。
丙:这一带人群生活指数都挺高的,涨一点价大家都能够接受,最重要的还是服务和产品卫生质量有所提高。
丁:涨多了顾客肯定会减少,涨少了我们的成本又增加,这个应该要平衡好。
戊:涨价了顾客开始会减少,当大家认同了我们的产品和服务后,相信顾客量会提高。
己:还是不涨价好,这次其它餐馆涨价,如果我们不涨价更容易赢取顾客,为餐馆后续扩张做准备。
庚:我们原材料采购价格上涨了20%,因此我们菜品应该也上涨20%。
辛:涨价多少不应该按一个规则,我绝对应该根据菜品的历史销量和菜品价格来制定差异化涨价策略。原来50块的菜涨价20%到60快顾客会感觉涨了很多,当时10块的涨价到12块顾客往往并没有感觉。所以低价菜品涨价幅度应该高点。
但是在现实生活中,我们的思维活动往往并不会如此复杂,我们是凭借我们的经验,通过思维活动快速简单的制定了相关策略。头脑风暴和发散思维都是好事情,但是却容易让我们抓不住核心逻辑,导致无法解决关键问题。
对于以上思考,我们可以看下通过系统思考方法中的因果循环图描述如下:
结合上面的案例,我们来谈思维最核心的三个关键步骤:
1.确定目标
思维活动是为了解决问题,而问题是现实和期望之差距,期望即是我们的目标。确定目标包括了空间和时间两个方面的目标,也可以讲是从静态和动态两个方面的来看待目标。如上面的例子,我们空间目标是利润最大化,当时仅仅提出利润最大化这个目标是没有意义的,而应该在这个目标上增加时间,即是当年利润最大化,还是3年利润最大化。空间+时间将直接影响到后续的决策要素的值。
2.分解和关联
在这里我用分解这个词,当我们遇到的是一个问题群的时候,我们还可能涉及到分类的概念,当时当是特定问题的时候更重要的是分解。而分解的重点则是考虑清楚要达成目标,究竟存在哪些因素。比如上面的例子,价格,顾客生活指数,竞争对手,原材料成本,销售量等都是我们达成目标的影响因素。
分解的一个重要法则即《金字塔原理》里面提及到的MECE原则,当时该原则最大的问题就是没有谈分解后的要素之间的关联和依赖关系,即单独提升一个影响要素的时候会对其它要素造成消极影响。比如提升价格会对销售量带来消极影响等等。因此分解后有个重要工作是在分解完成后要继续分析要素之间的相互作用和影响,以去寻找一个达成目标的动态平衡点,即我们所说的系统思考之根本。
在分解过程中可以自顶向下,也可以通过头脑风暴后在从下向上进行归纳和整合,这两种方式都是可以的。而对于我们以前完全没有接触过的事物,我们更推荐采用流程分析方法,即我们说的思维中的动态要素,通过流程分析来找寻和全面识别影响要素,这是其目的,因此动态流程分析是为了静态分解服务的。
3.决策
决策分为了简单的二元决策,也存在复杂的定量决策,当时决策应该逐步走向结构化决策。在后面文章将对结构化决策进行详细的分析和讨论。对于简单二元决策,用常用的结构化决策方法,如层次分析法等即可以搞定;当时涉及到量的决策,如究竟应该涨价多少才合理,则涉及到我们定量分析的范畴,而定量分析和决策则涉及到计算机模拟和动力学模型辅助决策。
可以看到思维的核心步骤完全属于分析和解决问题的步骤,再加上前面的问题定义以及加上后面的解决方案的跟踪实施即是完整的分析和解决问题的方法。这也正是思维和问题之本质联系。
第二部分 不破不立-谈破题
在前面讲了思考的三个核心要素和步骤是,确定目标,分解和关联,决策。这是思维的核心逻辑,也是分析和解决问题的核心逻辑。我为何困惑?我的思考是为了解决什么问题?是什么因素在促使我不断的思索?这些都和我们期望达到的一种目标相关,思考之第一步就是确定目标,而对于确定目标重点是破题,不破不立。
对于破题的过程,又分了一些小步骤,具体描述如下:
首先是要逐步形成转化问题本身到目标的习惯,即从对问题表象的思考转化到对目标本身的定义,只有牢牢的抓住了目标,思考的过程才不会跑题,才能够围绕目标这个主线展开,才真正体现思考的价值。我们举一些例子来看思考破题的过程。
1.一家新公司开出了更优厚的待遇条件,我在思考是否离开老公司。
破题:我希望在3年内(目标之时间性)我的年薪能够增长一倍(目标之空间性)。
2.我刚参加工作,不懂得的业务和知识技能太多,我在思考我应该如何学起。
破题:我希望在3个月的时间完全胜任我现在岗位的工作职责和工作任务。
3.年底了,要开始写年终总结报告,对应该如何写没有头绪。
破题:我写报告的目的是展示我的工作并完全得到领导的认同->我报告的目标是我的工作内容完全符合和超过公司岗位职责和绩效要求。
4.我在经营一家餐馆,最近采购原材料都涨价了,我们的菜品应该涨价多少呢?
破题:我期望我们的餐馆在3年的时间内创造的利润最大化。(目标之时间+空间)
在没有明确目标前不适合进行太多的发散性思考,因为很多思考内容往往不能围绕目标导致无用。后续很多的发散思考和分解的过程都应该围绕目标展开,这样才能够体现目标驱动。
其次,目标尽量符合SMART原则,在这里我们对其简化即需要体现目标的时间性和目标的空间性。 对于目标的时间性即SMART原则里面的T,对于目标的空间性可以理解为S和M。我们如此强调目标的时间性的原因就是你思维是一种短期思维还是长远思维要直接影响到你最终的决策。我们随着提醒自己目标的时间性要求就是体现了思维本身的战略性和前瞻性。同时我们也看到时间性+空间性也是后续系统思维之基础。
最后,将你的多个子目标抽象或提升为一个终极目标。这句话的意思是思考之开始不要马上进入到多个目标的平衡,即使是平衡也涉及到在终极目标的基础上进行平衡和决策,一开始就进入到平衡导致思考的过程存在太多的跳跃性而陷入了思考的僵局。
拿上面的例子,我是否应该离职,我现在的工作环境很舒服,也有升迁的机会,团队合作也很好,工作也不累,在我是否换工作的问题上我一下就过渡到了团队,自我价值和利益,个人和家庭等多个因素的平衡上面,导致了我们思考上的僵局。
再拿项目管理来说,项目本身有多个目标,成本,质量和进度等都是项目的目标,我一 开始就在考虑这些子目标的平衡,而忽视了我们做项目的终极目标是在几年内为公司和个人创造最大的利润和价值,也可能导致我们失去了后续真正平衡的基础假设,这些都是没有由多个子目标抽象形成终极目标导致的。
综合上面思考之首选是形成单一的符合空间+时间要求的终极目标,这是后续分解和关联之基础,也是后续系统思维和结构化决策之基础。
第三部分 找寻目标
思考之根本在于解决问题,解决问题之根本在作出决策,而作出决策之前提则是明确目标。所以思考应该是目标驱动的行为,只有目标驱动的思考是最有价值的思考,因为最终的思考真正可以指导我们的行动和实践,最终达成我们期望的目标。
上篇我们谈到了,对于目标首先要意识到目标的时间性和空间性,只有这样才是一个完整的目标,是一个后续可以进行系统思考的目标,单纯的追求时间或空间最终都无法达到我们的真正期望。找寻目标的方法主要就是将问题转化为目标,将子目标转化为终极目标。
我期望做一次长途的旅行,因此我开始行动找寻具体的适合的旅行线路,在我们查询的过程中我们不断的进行着否定,比如某个线路费用太高,某个线路人太多,或者某个线路已经去过了等等。
而真正的目标是什么呢?这个时候我们真正的目标往往就是做一次身心的完全放松,在完整点我的目标是期望在最近两个月内有一次身心的完全放松,这个是我们的终极目标。而旅途的花费,跟团还是独行,旅游热点还是偏远未开发地区,旅行时间长短的统统不是目标,这些是和目标相关的影响因素和约束因素。我必须要先明确目标,再来考虑这些影响因素,只有这样我们的目标才能够达成,同时你也会坚持目标而放宽约束因素。
很多时候我们有过类似的经历,我们将影响和约束因素当做为目标,而最终的结果是钱花了我们的身心往往并没有得到放松,即终极目标没有实现。这是往往并不是我们期望的一种平衡结果。目标是基础,不是用来平衡的,平衡的只有各个影响因素和制约因素。
所以第一点结论就是,找到终极目标,不要把影响和制约因素当做了你的终极目标。
思考之根本在于解决问题,因此找寻目标首先就是要明确问题,包括搞清楚问题的定义,而问题的定义本身就是我们的期望和现实之间的差距,而我们的期望通过一些量化思考后就逐步转化为了我们的目标。这个也让我们举例来说明。
刚入职的新员工张三在思考如何安排自己在新工作岗位上的学习计划?该思考对应的问题则可能是张三现在的技能和我们期望有差距?那现状是当前的技能水平,而期望则是岗位职责要求的工作技能?将期望转化为目标即是张三要达到岗位职责要求的工作技能?再根据空间性和时间性进行量化,即我们实际的目标是张三要在三个月的时间内容到达岗位职责要求的工作技能?那如何来定义是否达到,这涉及到后续目标的可度量性的话题。
思考到这里我们就发现时间有了约束即三个月,学习范围缩小了即岗位说明书要求的技能,后续针对该目标制定的学习和工作计划才会真正发挥最大的价值。这也正是我们说的目标驱动的思考,思考最终的目的还是通过将思考转化为行动和实践后达成我们的目标。
所以第二点结论是,先找到问题,通过问题找到期望,通过期望定义目标。
找到目标往往比较容易,但是对目标进行空间性和时间性的量化却很困难。比如前面的例子在三个月内达到能够熟练胜任现有工作的水平,目标SMART原则里面还有一个重要原则就是目标的可达成性,如果制定的目标不可行则再远大的目标都是徒劳。
而如何才能够让目标可行?这里面涉及到一个重要内容就是清晰的认识自己和评估自己的能力和效率,这个就和我们平时的数据收集和分析习惯很有关系,当我们无法很好的评估自我能力的时候,又涉及到一个重要的方法,既进行更短周期的实践和试验,通过试验来验证目标的可行性。如果三个月要达到熟练胜任工作,那我可以先拿一个月来试验,能否掌握工作所需要技能的一项,如果能够按照进度完成,我们则可以初步估算我们的目标是可行的。
所以第三点结论是,在目标无法很好量化的时候,要做短周期的试验来评估并最终确定目标。
第四部分 目标分解
分解之根本在于保证后续的计划,行动和呈现全部围绕你期望达到的目标展开。
在思考的时候确立了目标后,后续的重点就是目标的分解,目标分解有两个关键环节,一个是终极目标需要分解为多个子目标,一个是子目标需要去找寻关键影响因素。
如果按照这个逻辑,CSF关键成功因素法就帮我们把这样的思考过程结构化了,CSF关键成功因素法的图如下:
该图其实包括了三个重要的环境,分解为子目标,找寻子目标的关键要素,找寻关键控制变量。这正是我们谈分解的时候的重要步骤。而分解是静态分析的过程,需要结合动态流程分析,在图里面可以看到在找寻关键控制变量的过程则需要结合关键流程分析。
分解的过程正是形成逻辑树的过程,分解的过程需要尽量符合MECE法则,即完全穷尽,相互独立。同时在分解为树的过程中,树上同层的内必须是相同层面和粒度,属于相同类别下的分解。这往往是分解工作的真正难点。分解的结构化正是体现在层次性,粒度同一性,分类的同属性方面。比如思维导图我们大家都可以画,但是是否画的好重点这是MECE+分解的层次性方面。
大目标分解为小目标,小目标再分解为影响因素。那么小目标和影响因素之间究竟是什么区别?那么如何来判断分解的内容究竟是小目标还是影响因素?这里最简单的方法则是通过SMART原则来进行判断,如果分解的内容符合SMART原则,则就是小目标,不符合则是影响因素。
对于项目管理中的项目,可以先分解为进度,成本,质量三要素。我们看到这三个要素都是明确的,可以度量的,而且有明细的时限性要求,因此它们是子目标。而我们在看开发人员技能水平,开发工具等这些分解要素,它们显然不满足目标的SMART原则,因此它们更多的是影响目标的关键成功要素CSF。
终极目标是我们的期望,子目标也是我们的期望,有了子目标后就让我们的目标实现过程也变成一个迭代的过程,即目标真正通过迭代落地的问题。即使终极目标没有达到,但是我们并非是一无所获,因为有一些小的目标我们还是达到的实现了,同时通过实践为终极目标的达到奠定了基础。
接着举例来说明目标的分解过程:
对于项目管理而言,项目管理的终极目标往往是最终的客户满意,其分解的第一层子目标则是在项目范围一定情况下的进度目标,质量目标和成本目标。
对于企业的战略驱动的绩效评估体系而言,其最终的目标往往则是公司在几年内合法利润的最大化,其分解的目标按照BSC可以划分到内部学习,外部客户,财务,流程四个分解维度。对于流程方面可以按照价值链分析方法进行进一步的分解。
如何最大化公司的业务价值和股东投资回报率?要回答和思考这个问题首先也是要分解,第一层分解即我们的回报主要来源于经营利润和投资回报,而经营利润又涉及到收入和成本两个重要因素,如此层层分解形成完整的逻辑树。
前面我们将过如何进行绩效考核工作的汇报,这个的终极目标是领导对我工作的认可,而认可又基于我的工作胜任或超出了公司岗位绩效KPI对我的要求。因此分解的重点在于对我所在岗位的绩效KPI的分解,对于规范化的企业往往我们直接就可以找到相关的KPI分解。比如对于运维管理工作,分解如下:
在这个图我们看到一个重点就是分解的子目标前面增加了一个目标的分类,而平衡计分卡里面的四个维度也是起子目标分类的重要。增加分类的目的是方便后续的维度分析和平衡,在后面再详细描述。
分解中用的模型都是树模型,包括逻辑树,问题树,风险决策树,思维导图,鱼骨图等方法归根到底都是树模型的应用。树模型更好的解释了所有的分解都围绕一个终极目标,而不是多个目标,多个目标往往仅仅是终极目标的子目标。
对于鱼骨图也是分解,但是鱼骨图更多是用于问题的分解,体现因果关系,同时又给出根据一般的法则即从人,机,料,法,环五个方面进行分解。所以鱼骨图一般没有包括对子目标的分解。对于决策树也是分解,当时更多的是对不同决策的分解,而我们在思考中一般不适合过渡跳跃,直接由问题转移到决策。因此分解没有明显限制的还是逻辑树,在前面几层可以是子目标的分解,在后面几层可以是控制变量的分解。
分解的过程中保护了分类,对于我们有经验和前人体系积累的领域,则可以直接借鉴分类,在分类的基础上进一步分解。也可以是先进行分解,再对分解内容找寻共有的维度属性,抽象出标准的分类。分类和分解没有必然的先后关系,重点是要保证粒度同一性,分类的同维度性。
对于分解的思考,后续再写如何保证粒度的同一性,分类的同一维度性问题。这个思考清楚的才能够思考另外一个重要话题,即匹配。匹配是作出决策和行动之基础,仍然把它划分到分解的范畴。
第五部分 目标分解的原则
对于目标的分解包括三个步骤,首先是目标分解为子目标,其次是子目标分解为关键影响要素,最后是通过流程分析分解为关键控制变量。对于分解的原则重点就是分解的同层次性和同粒度性,即对于分解完成的结果要保证逻辑树上的同一层是在讲同一粒度的事物。
静态和动态
分解的过程应该是静态和动态相互结合,但是又不能将静态和动态混淆在同一层。可以先按静态分解也可以先按动态分解。对于项目管理领域静态分解即是9大知识体系,动态分解即是5大过程组,静态+动态形成一个完整的矩阵表结构。
对于非熟悉领域建议先进行动态分解,动态分解就是找寻事物的发展阶段和发展流程,通过流程分析后再找寻其中的流程活动要素,活动要素识别后再来进行这些要素的分类即静态分解。举例来说,比如我们需要举办一次晚宴,首先可以将活动分为准备,晚宴前,晚宴中,晚宴后几个阶段,再来考虑各个阶段都需要准备的物品。最后通过归来识别物品属于酒类,主食,正餐,水果,零食等几个大类。
抽象和具体
分解的过程是严禁将抽象和具体分解到同一个层面。比如上面的例子将主食和长城干红葡萄酒分解到一个层面就是不合适的,主食是一个抽象的名称,即我们所的一个分类;而长城干红葡萄酒已经到了一个具体的事物实体。
因此对于具体实体首先应该抽象其分类,再逐步分解,即分解的过程不是完全自顶朝下,有些也需要从下整合到上层,整合后结果可能是主食类和酒类,它们就是属于同一个层次的。
粒度和数目
同一个层面分解的数目如果对于目标到子目标的分解,最好在3-5个比较合适。如果是子目标到要素的分解最好是5-7个比较合适。子目标分解的太多往往不容易聚焦即后面的整合分析,对于要素的分解可以细化点但是仍然不适合分解的太多。
对于分解的粒度并不一定同层的粒度就要完全一样,考虑分解的粒度的目的仍然是为我们后续的执行,管理和控制服务。对于项目管理我们知道,对于WBS分解的工作包粒度不能太大,任务不适合超过80小时。因为工作包是我们后续成本核算的一个基准单位,所以为了成本管理,还需要各个工作包的工作量尽量偏差不大,为了进度管理方便工作包横跨的时间周期也需要尽量一致。
对于个人规划和目标,可以参考个人平衡计分卡进行分解,首先分解为对内(家庭),对外(工作),知识学习,财务四个方面进行分解。即我们说的子目标,然后可以对知识学习进一步分解,如在一年时间专业技能,通用技能,读书学习各方面需要达到的目标,最后再分解到具体的执行事项。
短期和长期
长期目标必须要分解到具体的短期目标,比如我们可能制定一年的工作和学习目标,这个目标往往并不是太困难的,但是如果我们每个月都没有进展那目标同样很难达成。因此年度目标需要分解到季度目标,月度目标,这样既有长远规划,又有短期规划支持现在的实践和行动。
长期目标到短期目标的分解有很多方式,一个是数量上的方式,比如我规划今年需要读50本书,为了实现这个目标并留些余量,则上半年需要读30本书,上半年的每个月需要读5本书。
另外一个就是知识维度方式的分解,比如上半年需要对自己的沟通能力,写作能力,市场营销,项目管控,SOA知识几方面的能力进行提高,则可以看到沟通能力往往是横跨一年的,则可以计划在1-3月重点提供SOA和市场营销方面的知识,4-6月提升项目管理方面的知识。
第六部分 流程分析
分解的过程是自顶向下,分解的时候先要考虑目标分解到子目标,然后才是子目标分解到关键要素,关键要素分解到控制变量。这个过程和步骤很清楚,但是实际上如果没有相关领域知识积累我们很难做到自顶向下,除非我们思考的问题域是我们原来已经接触过的领域,已经有相关的经验和知识的积累,或者有大量的业界标准可以参考,我们只是按照模板一步一步完成。
我们来考虑一个实际场景,当我们的软件系统遇到了性能问题,有经验的架构师可能直接会定位到数据库的SQL语句或者是索引出了问题,而直接去优化相应的索引和SQL语句。这即是我们常说的非结构化解决问题的思路,即先通过自己的经验提出最可能的假设,然后再进行实践去验证假设是否解决了问题,如果没有解决再找寻第二可能的假设。当我们接触全新的业务领域或者说经验不足的时候,以上方法完全不适用,我们根本不知道无从下手。
在这种情况下我们看到我们经常使用的方法是流程分析+头脑风暴。两者必须要进行结合以保证不出现重要的关键要素的遗漏,我们如果不注意使用流程分析而头脑风暴的一群人又是思考模式趋于一致的人,那么我们的思维仍然是片面的而出现遗漏,在这个地方也可以看到六顶思考帽强调的多种思考模式的初衷。而六顶思考帽更多的是从人的感性模式出发以做到各方面兼顾,流程分析更多是从事物发展理性分析进行兼顾。
再回到性能问题,当我们去思考和改进软件系统的性能问题的时候,首先我们思考的关键是要解决性能问题首先要明白性能问题是怎么产生的?而要明白性能问题是怎么产生的则需要去对完整的软件开发生命周期流程进行分析。
所以很自然的将思考的分析过程首先定位到流程分析,而流程分析的目的本身也就是找到子目标或关键影响因素。我们对软件开发和部署流程进行初步分析,得到如下图:
得到该图后接下来对流程中的每一个活动进行分析,找寻关键影响因素。
比如对于需求调研过程,我们应该分析到原来没有非功能性需求的调研,没有用户业务量,业务数据,网络和带宽环境的调研,而这些调研内容和性能相关。
在软件需求中非功能性需求是关键,在架构中开发框架应该支持相应的性能要求,数据库的范式设计有些为了性能考虑可能涉及到反范式,同时索引,存储过程,SQL语句都会影响性能;在开发中的逻辑层涉及到算法优化,事务,资源释放等关键影响点。在测试中性能测试涉及到场景设计以及对非功能性需求的匹配;在系统部署中则涉及到操作系统,数据库,中间件的安装和参数设置和优化。
通过以上分析让我们从全局对问题有了更好的了解,同时我们得到一个结论:把握关键点可以快速扑灭问题,但是分析全流程则可以从根本上持续改进问题,性能问题的产生是诸多环节不注意由小积累到一定量后的表现。
按对流程的全面覆盖对活动内的要素进行头脑风暴,经过头脑风暴后可以得到如下的图:
得到该图后我们接下来开始考虑分组,而分组的意思就是头脑风暴的内容可能是零散的,需要通过分组朝上面进行抽象,即通过分组由下向上形成问题分解树。而如何分组又是一个问题,分组的可以是按照事物发展的阶段进行分组,也可以是按照其它的事物共有属性进行分组,比如上面的例子,我们看到性能的影响要素主要是围绕软件,硬件和运行环境三个方面的,所有的影响要素都可以归属到这三类里面。而软件里面本身又分了多个方面的内容,重新进行归纳整理后形成完整的问题分解树:
第七部分 排序
在前面一篇讲了分解的一个重要方法就是结合流程分析,通过流程分析对事物发展的全过程有所了解,找到流程中的活动,头脑风暴更关键要素,然后自底向下的进行归纳和总结,形成最终的问题分解树。
对于思考的三要素再次说明,其一是确定目标,其二是分解和关联,最后是做出决策。在问题分解树形成后一个重要的思考内容就是各个关键要素如何排序,优先级究竟应该是如何的?
排序最简单的就是单要素的排序,对于产品销售可以按产品的销售额排序,可以按利润高低排序,可以按客户多少排序等等。单要素排序基本不需要做太多的思考,完全以数字说话。但是很多时候我们排序会提一个词叫优先级排序,要明确的是优先级是根据事物多个属性要素进行综合得出的一个级别。
我们可能在思考,今天先完成事件A优先级最高,其原因可能是基于事件A是其它事情的前置事件,事件A需要的工具今天已经具备,事件A的复杂度比较低,事件A对提高效率帮助最大等。所以我们综合衡量了很多关于事件的综合信息,最好凭借我们的经验认为事件A优先级最高。很多时候经验往往是正确的,当时并不一定是最科学的,而没有科学的方法则很难分析和解决大型复杂事物。
当我们在做购房决策的时候,我们可能先要决定关键影响因素,即思考中分解的过程。我们可能会分解出价格,周边环境配套,学位,交通,未来发展等多个影响要素。而我们对待选的房产进行排序的时候,往往就需要综合衡量这些影响要素,最终形成一个综合得分,来确定优先级。
当我们思考需求优先级和排序的时候,我们往往需要考虑需求的实现难易程度,紧急程度,重要性等各个方面的关键要素最终在进行综合的排序。
当我们思考前面分析的系统性能问题的时候,性能的发送可能涉及到数据库,中间件,前台应用,硬件等各个方面。我们需要提升性能到一个合理的范围,当时又需要花费最小的成本。所以需要对关键要素进行排序,而排序重点则是性能提升幅度,难度,成本消耗等。
如果我们刚毕业在做择业选择的时候,我们也会对待选择的企业进行排序,而这个排序可能就涉及到地域,个人发展,个人兴趣,专业对口,经济收入等多方面的考虑因素。
要注意到排序很多时候都涉及到多个维度的影响,是一个综合衡量,而不是单一要素确定的。这正是排序之复杂点,因此排序前应该是首先找到影响事物的关键要素,而找寻关键要素有可以遵循分解的方法进行。
排序之目的最终就是形成优先级列表,为决策服务。由分解后进行排序转化出来的决策往往则是一种结构化的决策方法。虽然很多时候我们往往并不会按部就班的这样一步步做,但是这确是一种科学决策和思考方法。
第八部分 组合分析
对于问题的分析,原来我们比较常用的都是二元决策,即是和非。但是随着问题本身的复杂化带来我们在分类和决策上的复杂化。因为一个大问题其本身就是一个问题的集合或者叫问题群,对于一个单独的事件我们可以用做还是不做来决策,但是对于问题群我们需要的是组合决策。而矩阵分析,我的理解正是一种最简单的多维度分析和决策,打破我们原有的简单的二元判断逻辑。
在排序完成后已经完成了第一步的分析过程,但是分解要素或者说问题群的排序清单很多时候往往并不是直接选择前面几个要素执行就可以了。
目标驱动的决策过程是我们关心的重点,拿企业的战略决策来讲,我们的战略可能是稳定平稳低风险战略,也可能是激进的高风险战略;有可能是成本优先战略,也可能是销售额优先的规模化战略,这些往往都将影响到最终的决策过程。
排序完成的列表缺点在于不能很好的根据不同的目标驱动来体现排序要素之间存在的分组特性,而组合分析其根本就是从目标分解的子目标的多个维度来分析排序结果之间存在的一种明显的分组特性。很多时候我们要的不是排序最终的分值,而是排序清单的分组边界。
组合分析重点则是从目标分解的子目标的多个维度来分析关键要素所呈现的各种分组特性,通过目标驱动来综合考虑最终决策需要改进的关键要素组合。在这里一定要注意的就是我们最终得到的决策清单,是多个关键要素的组合,这个组合的特点往往并不是简单来源于排序结果。
常见的组合分析简化方式即是矩阵分析,矩阵分析可以考虑2-3个决策目标和维度下关键要素的一个分群现象。在市场和战略规划中可以看到很多的矩阵分析例子,如安索夫矩阵,波士顿矩阵,GE矩阵等。如下:
波士顿矩阵让我们可以从市场增长率和市场占有率两个重要的维度来观察和分析企业已经存在的产品。通过分析我们就知道了哪些是明显产品需要加大投入和扩展,哪些是现金牛产品需要维持,哪些是问号产品需要改进,而哪些是瘦狗产品需要舍弃。
对于投资组合是组合分析常用的另外一个例子,而基金本身就是一个投资组合,是在通过组合分析进行的一个优化选择,以在能够容忍的最大风险下获取最大收益。对于投资矩阵分析可以用下图描述:
当我们完成这个矩阵分析后,根据我们期望的目标和风险容忍度,就可以得到一个初步的选择范围,这个范围可以是一种定性的分析,也可以是一种通过计算机模拟得出的定量分析。
矩阵的形成过程重点是找寻目标所分解的关键子目标,这些子目标都是我们所关心的矩阵维度。比如拿投资来讲我们期望利润最大化但是风险又要最小,显然投资收益和风险则是矩阵分析的两个重要维度。在系统性能优化和改进上我们期望性能提升最大,但是成本又需要再受控范围,则性能提升幅度和成本就是两个重要的分析维度。在产品研发上我们期望进入全新的市场,期望有最高的收益,但是人员投入又需要受控,则可以三个要素两两展开进行矩阵分析。
通过矩阵分析让我们从多个维度和视角来看待我们的关键要素集合,以认识到了要素本身对目标诸多维度的影响是平衡的,一方面好了另外一方面肯定会带来负面的影响。而这是过渡到系统思维之基础。
第九部分 决策概述(未展开)
决策一词的意思就是为了到达一定目标,采用一定的科学方法和手段,从两个以上的方案中选择一个满意方案的分析判断过程。管理就是决策,是指通过分析、比较,在若干种可供选择的方案中选定最优方案的过程。从这个定义我们看到一个重点就是决策一定是涉及到多个方案的选择,同时思考的目的是为了做出正确合理的决策,而决策的目的是行动和执行,执行的目的是解决问题。
在《卓有成效的管理者》里面,德鲁克给出了决策的五大要素,具体如下:
- 对问题性质的了解(去追究问题的根源)
- 确定问题的边界(简单讲就是决策不能破坏前提条件,要达到的最基本的目的)
- 先考虑最优方案,而不是一开始就考虑妥协
- 决策的方案必须要兼顾执行
- 决策执行过程中要重视反馈,不断验证决策正确性和有效性(形成闭环)
从这些关键要素也可以看到,决策分为三个阶段,首先是根据问题的定义和分析比较,给出若干个可行的方案;其次是再次明确目标后,根据目标来选择最优方案;最后是执行和反馈形成闭环。用数据说话当然是我们所期望的最科学的决策方法,但是很多时候决策时包含了预测能力,决策有时候靠的是前瞻性的见解和假设,凭借的是个人丰富的知识和经验。
决策本身的困难在于决策后的执行,执行后带来的效果。一个好的决策往往可能受到诸多因素的影响并不一定带来好的效果。或者说一个决策可能短期效果很好,但是长期可能产生更大的负面影响。因此决策的困难往往在于多目标而非单目标,决策很多时候不是单目标最优,而是多目标的平衡发展。在《项目管理艺术》一书里面,为了提升决策技能,需要我们对决策进行回顾,具体如下:
- 我们做的决定是否能够解决最核心的问题?
- 在做决策过程中,是否有更好的逻辑或历史数据能够帮忙我们快速对可选方案进行筛选
- 我们的目标和具体的需求在我们做决策过程中有多大帮助?
- 决策对项目的进展是否有利?
- 我们认为的关键人物或专家是否参与了整个决策过程?
- 决策是否妨碍或影响了其它问题的解决?
从上面回顾可以看到,决策往往需要数据支持,决策的目标是为了行动并解决问题,决策的同时还需要考虑不能为了再解决当前问题的时候产生了其它更加严重的问题。一个好的决策必定是一个系统思考的过程。
对于决策分为结构化决策和非结构化决策,结构化决策是指对某一决策过程的环境及规则,能用确定的模型或语言描述,以适当的算法产生决策方案,并能从多种方案中选择最优解的决策;而非结构化决策,是指决策过程复杂,不可能用确定的模型和语言来描述其决策过程,更无所谓最优解的决策。
对于结构化决策,在CMMI三级的DAR决策和解决方案里面给出了一些较为明确的方法和步骤,如下:
再次明确问题的目标根据目标来确定评估被选方案的准则
根据问题定义和分析过程给出可行的多个被选方案
根据评估准则对备选方案进行多维度的评估
根据评估准则从备选方案中选择推荐方案
执行决策结果并跟踪效果
从这里可以看到目标明确是决策之基础,多个备选方案的准备是决策之准备,执行评估和选择备选方案是决策的重要过程,执行和跟踪时最终的决策落地。