技术人如何"结构化"高效思考?
1 前言
你是否在解决问题时,常常觉得脑子很乱,很多零散的信息迸发出来,但就是无法形成解决方案。
之所以这样,原因就在于,我们的大脑处理不了太多零散而复杂的信息。人类大脑在处理信息的时候,有两个规律:第一,不能一次太多,太多信息会让我们的大脑觉得负荷过大;第二,喜欢有规律的信息。
如果我们在解决问题时,能够找到一个结构,将所有的碎片信息放进去,就能够大大减轻大脑的负担,更容易地解决问题。而这,就是所谓的“结构化思维”。
2 什么是结构化思维?
如果给结构化思维下一个定义,结构化思维是什么呢?我们先看百度百科是如何定义的。
结构化思维(Structured Thinking)是指一个人在面对工作任务或者难题时能从多个侧面进行思考,深刻分析导致问题出现的原因,系统制定行动方案。
从百科中提炼出一句话,“结构化思维是从多个侧面思考问题的方法”。所谓多个侧面,就是结构。
我们再看下智库百科是怎么定义的。
结构化思维是指在思考分析解决问题时,以一定的范式、流程顺序进行,首先以假设为先导,对问题进行正确的界定,假设并罗列问题构成的要素,其次对要素进行合理分类,排除非关键分类,对重点分类进行分析,寻找对策,制订行动计划。
"以一定的范式、流程顺序进行"说明结构化思维是一个关于思考流程的方法。
那么这个思考的流程是怎么样的呢?
1.正确界定问题。
2.罗列问题构成的要素。
3.对要素进行合理分类。分类的过程就是寻找结构的过程。
4.排除非关键分类,对重点分类进行分析,寻找对策。
总结一下百科的定义,结构化思维是一个关于思考流程的方法。流程以事物的结构为思考对象,要么利用已有结构,要么自己寻找结构,来引导寻找问题的解决方案。思考的流程分三步: 1.正确界定问题。2.构建结构。3.按结构进行分析,寻找对策。
3 如何界定问题?
界定问题的目的是为了弄清楚要解决的问题是什么,也可以说成:“为什么要做?/ 目标是什么?”,只有知道了目的和目标,才能去寻找解决方案以及知道解决方案是否能达成目标。那么我们该如何界定问题呢?
界定问题分为列框架和确定问题两步。
列出框架。用来界定问题的框架,分为5个要素。
1.旧解法。指现在用来达成目标的手段,可以是一个低效的人工流程、架构、算法。
如果我们是要做一个数据处理平台/工具,旧解法就是没有这个平台/工具之前,人工处理流程是怎么样的。
如果我们是要做架构/性能优化,旧解法就是现在的架构和算法实现是怎么样的。
2.症结。指让旧解法失灵的原因。
我们做一个平台/工具,是因为业务扩张,统计维度和数据量大了之后,人工处理太低效?
我们要做架构/性能优化,是因为数据量大了之后,读写性能裂化,不满足性能要求了?
3.现实结果。也叫痛点,症结让旧解法失灵,进而导致了不好的现实结果出现。
每次数据统计,人工需要处理1天,跟不上业务发展。
单个请求平均延时1s,请求超时导致用户看不到页面。
4.理想结果。或者叫目标。
原先人工处理一天的事情,希望半个小时能处理完。
之前单个请求平均延时1s,希望单个请求平均延时10ms。
5.新解法。消除症结,把现实结果导向理想结果的新方法。
建设一个什么样的软件平台/工具,自动化处理数据统计。
分库分表,降低数据量对请求延时的影响。
确定问题。5个要素列出来了,要解决的问题就产生在5个要素里。
情况1:前4个要素都是已知,由要素5「新解法」产生的问题,包括:
新解法是什么?(最常见,记这个就行了,后面的问题都是由此衍生的)
新解法也已知,是否对?
新解法也已知,并且有多个,哪个好?
新解法也已知,接下来具体怎么做?
情况2:由其他要素产生的问题,包括:
「症结」是什么?比如延时突然暴跌,得先确定症结,确定后才到解法。如果症结是qps突增,cpu负载过高,一般水平扩容就可以解决。
「理想结果」是什么?比如⽬前正是从不景⽓⾏业脱身进⼊成⻓性⾏业的机会,但不知道进⼊后会到达什么样的理想结果。确定理想后才到「新解法」是什么。
用表格总结下:
平台建设 | |
step1-列出5要素 | |
旧解法 | 人工从数据库查出数据,导出到excel,统计数据结果 |
症结 | 数据量大,统计维度多 |
现实结果 | 每次统计数据要1天 |
理想结果 | 半个小时可以出统计结果 |
新解法 | 无 |
step2-确定问题 | |
问题 | 如何才能半小时统计出数据结果 |
性能优化 | |
step1-列出5要素 | |
旧解法 | 从数据库查出数据,计算后返回 |
症结 | 无 |
现实结果 | 单次请求平均延时1s |
理想结果 | 平均延时10ms |
新解法 | 无 |
step2-确定问题 | |
问题 | 导致延时上涨的原因&&解法 |
4 如何构建结构?
当你面临一个难题的时候,该如何去寻找结构呢?这里给出两种方法:一种是自上而下地找结构,一种是自下而上地归纳提炼结构。
自上而下找结构:思考一个框架,将信息和解决方案放入框架
思考问题和表达时,根据主题去寻找是否他人或自己是否已经有适用框架,如果已经有框架,则按框架将已有的信息或者解决的方案放入到框架中。
我们来看一个问题,如何制定一个服务性能优化的季度OKR?
假如没有结构,我们可能直接写这个季度的目标是优化服务性能。至于目标是否完成,非常依靠主观判断。
我们可以用SMART框架(Specific 明确的, Measurable 可衡量的,Attainable 可达到的, Relevant 相关的,Time-bound 有截止时间的)来衡量OKR是否写得符合标准。
用SMART结构,我们服务性能优化的季度OKR可以写成:优化服务延时,平均延时从1s->200ms。
明确的:优化服务延时,是明确要做的事情。
可衡量的:1s->200ms,是衡量目标达成的指标。
可达到的:200ms是靠技术优化可达到的。
相关的:这个服务是我负责的,和我相关的。
有截止时间:这个季度。
自下而上归纳总结成结构:当我们不清楚用什么框架时,四个步骤把信息结构化
当我们对某一问题或信息掌握不全面导致还不能明确讨论主题时,或无法确定应如何做下一层次的分解时,这时候我们可以采用自下而上思考的方法。
自下而上建立框架的过程,主要分为四步:
1.罗列要点。把所有的要求和想到的点子先写下来,这是一个思维发散的过程。
2.分组。将上面所有要求和点子做分组,这一步是从发散到收敛的过程,在充分发散的基础上,又发挥了收敛思考的价值。
3.结构提炼。看一下这些分组,是否存在某种规律,按照这样的规律,是否需要补充或调整组。这时候需要用到MECE(Mutually Exclusive, Collectively Exhaustive,即相互独立、完全穷尽)原则,来决定分组调整。最后形成的组,其实就是你的结构
4.观点补充。确定了结构之后,看每个结构之下是否还需要补充其它信息,最后完善思路。
为了更容易理解,我举个例子来说明:
思考“相比回省会城市(武汉),还是留在深圳”这个问题的时候,可以先头脑风暴罗列要素,对要素进行分组,最后再总结提炼出自己的决策。
1.罗列要点。包括:1.深圳房价高 2.深圳房租高 3.深圳工资高 4.深圳互联网公司多 5.工作人脉在深圳 6.武汉离家近 7.武汉教育资源比深圳好
2.分组。我们发现,1/2/3说的是收入和成本,4/5说的是就业选择,6/7说的是家庭方面的
3.用MECE原则找出各组的规律,确定结构。根据MECE的原则,这些分组需要相互独立、完全穷尽。收入和成本、就业选择、家庭——这三个要素符合相互独立吗?是的,这是三个无关的要素。但是,这三个要素完全穷尽了吗?好像没有。还有深圳气候好、商场多、公园多等,所以,我们扩展一下,找出了这些组:收入和成本、就业选择、家庭、生活舒适度、生活便利度。
4.观点补充。比如,收入这块,除了考虑工资,是不是还有其它,比如股票增值、加薪速度呢?等等。
5 如何培养结构化思维
知道什么叫做结构化思维,是远远不够的,要将它变成自己的思维方式,能够做到不加思考地习惯性应用,还需要刻意练习。我们该如何培养结构化思维呢?
下面我给出两个方法,如果坚持几个月,结构化思维能力一定能得到提升。
1.累结构:看书的时候,看到一些有意思的理论,思考出它的三个应用,然后把它记下来,作为自己的素材,有空可以拿出来看看。同时,还可以给这些理论进行归类,比如价要素类结构、流程类结构等等。
2.要有结构化思维的意识:当你面临一项挑战性任务时,不要急着开始解决问题,切忌一开始就进入细节,先思考是否可以运用一些框架来解决问题。如果自己暂时没有思考框架,可以去找寻前辈和他人的框架借鉴。