技术人如何"结构化"高效思考?

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.要有结构化思维的意识:当你面临一项挑战性任务时,不要急着开始解决问题,切忌一开始就进入细节,先思考是否可以运用一些框架来解决问题。如果自己暂时没有思考框架,可以去找寻前辈和他人的框架借鉴。

posted @ 2024-03-01 20:43  golang架构师k哥  阅读(96)  评论(0编辑  收藏  举报