程序员的关键思维

       

        在IT行业工作多年,越往后走,越是感觉到需要强调思考的能力。思考是我们底层非常关键的能力,尤其是在脑力密集/知识密集的行业里面显得更加重要。而这些思考的能力到底指的是什么,有没有什么方法论可以作为指导,让我们在日常的工作中不断精进?我最近试图总结了一下,同时也是提醒自己要在底层思维能力上面,不断的刻意练习。

关键思维方式

这是我整理的关键思维方式的结构,核心是三部分,动机、方法、反思。动机是我们思考的起点,指导我们前进的方向,方法帮助我们在这个方向上更好的前进,反思帮助我们更好的迭代认知。

动机

做任何事情都是需要有动机的,我把动机里面的关键活动定义成本质思维。为什么这个非常重要?引用教父里面的一句话:花半秒钟就能看透事物本质的人,和花一辈子也看不透事物本质的人,注定是截然不同的命运。

是否能看透本质是方法问题,在接下来的章节会讲到,更多的时候是我们忽略了要去分析现象背后的本质,而将自己迷失在无穷无尽的现象中。这儿重点阐述一下为什么本质思维的习惯非常重要。举几个例子,例如我每天都会刷牙,有一次牙齿发炎,医生告诉我应该主要刷牙齿和牙龈交界的地方,我才注意到之前刷牙的方式是错的。每天都只是机械的重复,而没有去思考一下背后的规律。这个就是行而不知,工作其实也是这样,很多事情我们去做了,但是没有认真的思考背后的本质,只是按照我们主观的臆断来进行判断和决策,自然对事物的认知和对结果的掌控都不会太好。

世界是复杂的,人是复杂的,事情也是复杂的。本质思维是让我们不断的去思考事物背后的规律,再碰到现象的时候能够更快的认知,能够采取和事物发展规律相符的行为。这个在科技研发过程中也是非常重要的,我举个银行产品的例子,例如存款产品,现在的种类非常多了,有定期、活期、通知存款等等各种产品形态,但是它的本质主要就是利息和久期的差别,认识到它的本质,在代码开发中就能够设计得更具扩展性,对于新增业务能够实现更快的交付效率。这个业务抽象本质的过程就是领域建模,是应对复杂业务行之有效的一种方法。

本质思维还有一个层次的问题,老子说道生一,一生二,二生三,三生万物。万物可以理解成层出不穷的各种现象,一二三可以理解中间过程的推导,道是最终的根本。在这方面应用最好的是埃隆马斯克,总是找到事物最本质的东西并加以改进,例如做spaceX,从基础的物理学入手,找到最本质的底层规律,所以能够突破之前的瓶颈,变革整个行业。

方法

有了动机之后还需要掌握合适的方法,帮助我们更深刻的认知规律。这里面比较重要的就是抽象思维、结构思维、升层思维。

抽象思维:当我们接触到很多的现象之后,其实还是在表层进行理解,我们需要借助抽象思维进阶到理性认知。理性认知是从特殊到一般的过程,牛B的人擅长小样本学习,像我这样鲁钝的人就需要更多的样本,需要通过更多的实例来完成这个抽象的过程。那什么是抽象呢,就是抽取共性,并进行概念定义和命名的过程。例如川菜,一听到这个概念大家就反应出来这个菜是辣味比较重的,这个就是抽取的地域特色,这个地域的菜都是比较辣的。抽象是可以从多个维度的,川菜鲁菜是从地域的角度区分,也可以从动植物例如肉菜和蔬菜,也可以从定位来抽象主食和菜肴,当然也可以从其他角度来抽象了。从什么角度来抽象取决于实际的需要。另外一个呢是命名,这个也是非常重要的,好的命名应该很好的反映抽象的特点。这也是为什么在写代码的时候命名是一个难题。实际上体现的还是抽象的能力,我们是对这个处理过程的一个抽象,是对处理过程一个凝炼的表达。

结构思维:结构思维体现的是对一个事物的拆解,需要满足MECE(Mutually Exclusive Collectively Exhaustive,相互独立,完全穷尽)原则。例如把大象放进冰箱需要几步,打开冰箱,塞进大象,关上箱门。这就是一个流程的维度的拆解,步骤之间相互独立,并且能够完整的表述把大象放进冰箱的过程。还有很多这样的例子,例如结构化表示的框架,SCQA(situation,conflict,question,answer)按照这样方式进行述事也会更有条理和逻辑。

升层思维:这儿强调的事当我们认识一件事情的时候,应该放到更大的背景或是向上探一层来看,更能够帮助我们打开思维,看清楚本质。例如三个泥水匠的故事,一个人认为自己是在砌墙,一个人认为自己是在建造一栋博物馆,一个人认为自己是在建造城市。这个体现的就是从哪个层次上看待问题。我们实际的工作中也是这样的,我们从更高的层次还看待问题的时候,更能理解为什么要做这件事情,背后的意义是什么,未来会朝什么方向发展,我们应该提前做什么样的布局。

反思

利用本质思维构建的只是在有限时空范围内的规律,这个规律随着事物的往前发展,周边也在不断的变化着,是不是成立需要保持怀疑的态度。另外一点,之前规律的发现本质上是利用的归纳法,通过接触到的有限的样本,归纳出来的一种假设。随着更多新的样本的发现,可能会发现不符合的情况,这时候需要迭代我们的认知。最典型的例如我们看着太阳每天东升西落,想当然的认为太阳围着地球转的,从而构建了地心说。再往后,发现金星的运行轨迹发现折返了,而围绕地球转是不可能出现这样的观察轨迹了,那我们在原来地心说的基础上构建了均轮和本轮的优化模型。再往后越来越多天文现象跟这个认知模型产出偏差了,最终日心说诞生了,很多现象就很好解释了。不过现在我们也知道太阳也不是宇宙中心。这个过程就是不断的猜想与反驳的过程。批判思维就是不断的提醒我们要对事实、推理、结论都持一个怀疑的态度,不断的分析,通过更多的现象实例进行验证。当存在不一致时,事实是不可变的,需要迭代的那一定是我们的认知。

如何培养思维习惯

思维能力的训练非一朝一夕,最行之有效的习得方式就是刻意练习。在事上练,通过事情来锤炼我们的思维方式。

本质思维:有意识的对司空见惯的现象问个为什么,探究下背后的原因。例如夏天天气热了,思考一下四季的形成原因。做一件事情的时候,不仅仅只是完成它,而是形成做这件事情的方法论。

抽象思维:关键是泛化。碰到个别的事情或事物的时候,能够从泛化到同一大类的角度去认知问题。

结构思维:在抽象认知的基础上,自底向上的进行归纳分类,形成事物的全貌,或者是自顶向下的对事物进行拆解,形成更加细致深刻的认知。

升层思维:常见的升层维度时间维度(看到现状的同时能够认识到是什么导致了现在的情况,是怎么一步步发展而来的,同时也看看未来的演进趋势是什么样的),空间维度(看看周边地域和当前区域的关系),个人集体国家(个人利益和集体利益的关系,集体和国家大局的关系(互联网公司被罚,是不是因为这层没有考虑清楚?))。

批判思维:有意识的区分事实、推理、结论,看看每个环节是不是合理。当仍然无法区分的时候,多看看不同利益人群对同一件事情的看法。例如对待一项新的技术,技术供应商是怎么宣传的,实际客户是怎么评论的,相对中立的媒体(貌似很多也不中立)是如何评价的。综合看看多种不同的角度能够认识更为全面。

总结

本文对于一些关键的思维方式进行了总结,本质思维是我们思考的动机,我们需要透过现象认知背后的规律,并采取和规律相符的实践;抽象/结构/升层都是帮助我们更好的认识规律,从不同的角度识别提炼;批判思维帮助我们分析判断,尤其是通过一些反例,反思迭代升级过去的认知。

猜你喜欢

转载自blog.csdn.net/u011467523/article/details/125943520