技术成长的思考-抽象、归纳、分层、结构化思维

1.引言

  • 抽象思维:帮助我们快速抽取面对问题的关键要素和本质,可以是其他能力的“元能力”
  • 分层思维:帮助我们拆解问题,分而治之,划清问题和职责边界
  • 归纳思维:帮助我们从个性问题中抽象出问题的一般规律和得出共同结论
  • 结构化思维:帮助我们沉淀自己的知识树,逐步系统性的思考问题

2.抽象能力

2.1 什么是抽象能力

提到抽象,程序员第一反应可能是abstract,抽象能力的官方解释是这样的“抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。抽象表达的是一种思维方式,用来反映事物的本质和规律的方法,抽象强调的是关注要素,隐藏额外细节”。

抽象能力是每个人自有的一种天生能力,可以让我们把一些相似的东西集中概括起来,暂时忽略他们之间的差异。当我们遇到从未见过的事物时,如果能够运用“抽象能力”去寻找记忆中的知识与现有的事物之间的联系,作为解决问题的关键要素,那么我们解决问题的效率将会大大上升,比如当我们碰到《图一》这个动物的时候,我们不知道它具体是什么动物,但是因为我们脑海里有一个猫科动物的抽象,所以通过寻找记忆中的知识,我们可以知道它是猫科动物的一种,而不会把它当成一匹马。

2.2 抽象能力的重要性

抽象能力在我们的工作中非常重要,甚至能决定一个人能力水平的上限,一个抽象能力强的人,往往能从复杂的现象中直击事物的本质。也就是我们生活中常见的“这个人总是能抓住重点”“这个人总能看到我们看不到的”,举一个例子:《北大逻辑课》一书中,就讲了一个运用“抽象能力”解决现实问题的例子。

有一天衙门接到报案,发现一民居失火,男主人与房屋都惨遭不幸,而女主人因为刚好有事离家,因此幸免于难。
正在女主人为丈夫的逝去而哭泣的时候,法医宋慈发现了尸体的异样:死者虽表层皮肤被烧毁,但口中十分干净,并无烟灰。于是断定这个案件并非意外事故,而是另有凶手隐瞒真相,死者是先被谋杀、后尸体被烧毁。
宋慈的推理过程是这样的:
取一活猪、一死猪一起放在火中烧着,取出后发现活猪被烧毁后口中有大量烟灰,而死猪口中十分干净,并无烟灰。
宋慈解释道:“之所以会如此,是因为动物在被火烧会发出激烈的自救运动,而剧烈运动会大量的呼吸氧气,同时,就必然会把烟灰吸入口中、肺中,例如我们过年烧的猪头,由于是死猪,口中就十分干净。”
“同理,本案中死者的口中并无烟灰,因此可以推断,他在火灾发生前,就已经被人杀害了!”

宋慈之所以能做出这段推理,就是灵活运用抽象,从“猪遇火灾的反映”抽象出“口中有无烟灰是生物遇火时,是死或生的唯一标准”这一定理,并加以证明的结果。

  • 抽象能力决定你是否能比别人快速掌握技能

作为一线程序员的核心本职工作是编程,编程的本质也是为了解决生活中的实际问题而存在的,通过抽象能力把现实中的内容的本质和特性抽象出来,然后以此应用于工作上,通过编程的方式来解决一类问题,设计源于生活、扎根生活,最终为生活服务。

  • 抽象能力是将复杂问题简单化的重要方法

《史记》有云:“大乐必易,大礼必简。”意思是说.“大”的音乐一定是平易近人的;“大”的礼仪则一定是简朴的。世界的表现虽然复杂,但方法的本质却是简单。面对纷繁复杂的万事万物,迎接不断出现的新情况新问题,说难也难,说易也易,关键看你能否把握事情的本质,复杂问题简单化是提高我们生活工作效率的正要途径,通过抽象思维把复杂问题简单化的例子有很多,比如:
➢ 曹冲称象
孙权送来了一头大象,曹操想要知道大象的重量,询问他的属下这件事,但他的手下都不能说出称象的办法。曹冲说:“先把象放到大船上,在水面所达到的地方做上记号,然后将大象牵下来,再让船装载其它东西,称一下这些东西,那么比较下就能知道了。
➢ 地铁线路图
即使不标出各个站点之间相隔的具体距离,也没有标出它们的具体位置,仅仅只是提取了必需的信息,就能将整个复杂的地铁体系简单地表现出来。我们只要有地铁路线图,就可以知道要怎样去各个站。
➢ 系统交接
再举一个最近发生在身边的例子,前几天的一个系统交接会上,交接过程中总感觉有些遗漏,基于我自己记忆中的知识,我判断交接清单至少包含如下几个内容:
a.系统架构图、核心领域模型
b.核心业务流程、时序
c.上下游系统依赖、核心联系人、协议方式
d.中间件基础资源依赖、基本账号
e.系统操作页面、入口
f.以往大促保障手册、应急预案、资损盘点
g.系统基础监控、业务监控地址
h.遗留线上Bug清单和Owner分配
i.代码权限以及核心L0入口

其实上面都是基于对一个系统本来该有的内容的一个抽象,所有的业务系统都具有相同的特征,日常的抽象积累可以让工作更轻松更简单,不至于束手无策、手忙脚乱,抽象思维让我们只关注了要素隐藏了很多细节,按照上面这9个大类要素深入进去,我们面对的就是无穷的细节,细节是决定成败的关键。

分层能力

除了抽象,分层也是我们应对和管理复杂性的基本思维武器。日常生活中的一些分层的例子,比如我们经常所去的大商超,店铺的分布也是有分层的思维,比如负一层一般是小吃档口/停车场,一层一般是化妆品/香水/黄金首饰店铺,二楼是女装、三楼是男装、四楼是儿童/母婴用品,在往上就是餐厅和电影院、健身房等,通过分层思维,商超将一些共性的东西划分到一起,让管理和客户消费更轻松(如一般晚上只有电影院的那层关门最晚,其他楼层相对较早,管理上可以重点保障该楼层的用电和安保。),类似用到分层思想的东西非常多,比如新华字典收录了800千字,通过按照汉语拼音的顺序完成所有汉字的分层,同时提供一个目录用于快速检索。这样一个复杂的问题就简单化了。在系统架构和设计中,分层思维也是常用的一个思维方式,比如:

TCP/IP协议栈的分层架构

归纳能力

很多时候,我们习惯了碰到问题,都希望能快速的解决,而快速解决的方法很多只能是做表面工作,从表面解决,从表面上下功夫,头痛医头脚痛医脚,不追究发病的病根,看似很快,实则隐患不少,待问题再出现的时候代价会更大,其实最快的解决问题是从根本上解决问题,虽然这样前期不能最快解决问题,投入的精力也会很多,但是投入的成本低,在没有形成顽疾的时候,提前介入,一劳永逸。
“物有本末,事有始终,知所先后,则近道矣。”,当我们了解了一件事情的来龙去脉,掌握了事情的本末结构 就基本探究到了事情的本来面貌,归纳思维让我们可以从一个个具体的事例中,推导出它们的一般规律和共通结论的思维。帮助我们寻找问题的根因,从而对症下药解决问题。归纳思维的方法有很多在此不做讨论,生活中运用到归纳思维的例子有很多,比如:一个人看见一群乌鸦是黑的,于是断言: 天下乌鸦一般黑。天空乌云密布,燕子低飞,蚂蚁搬家等现象时,我们会得推断说天要下雨了。还有很多比如晚上火烧云,明天晒死人、立冬晴一冬凌,立冬阴一冬温等等。归纳思维应用于工作中,可以帮助我们通过个别问题归纳推演出一类问题的共性和规律,采取合理的方案解决问题。

结构化思维

先来看下下面这个图片,然后再10秒内说出图片上的内容



是不是有点难?如果我们把图片上的内容调整下,变成下图这样:



是不是清晰了很多?
其实这涉及到了结构化思维:人不能接收大量杂乱信息,处理复杂信息的能力有限,但是更偏爱有规律的东西。我们每天工作生活中都会接收到大量信息,如何把这些信息吸收并结构化为我所用就需要构建自己的知识树。比如上面的业务梳理大纲的例子,其实我们就构建了一个自己的知识树,通过它我们可以检索我们需要的信息,好的知识树可以借鉴,但是每个人都有自己的一个思维方式,如果没有内化成自己的或者不是自己构建的知识树无法熟练的使用。

结构化思维指从整体思考到局部,是一种层级分明的思考模式。简单来说就是借用一些思维框架来辅助思考,将碎片化的信息进行系统化的思考和处理,从而扩大思维的层次,更全面地思考。没有结构化的思维是零散混乱无条理的想法集合,而结构化思维是一个有条理有层次,脉络清晰的思考路径,让这些点连成了线,举一个常用的问题解决方法思维框架:

低头走路,抬头看天,长路漫漫,不忘初心 -- 自勉

你可能感兴趣的:(技术成长的思考-抽象、归纳、分层、结构化思维)