读过无论是人生抑或是技术相关的书感觉依然无法把握好自己的人生。不知您是否有和我有一样的感触和懊恼。


为什么周围的人一直在不断的成长,而且成长的速度我们也可见,而有的人却依然毫无长进。


我们每每都会看到这样的新闻,许多运动员退役之后穷困潦倒,但是有的人却能干出一番事业比如李宁。


同样是写文章,比如在简书上,为何有的人写了两年就出书了,而且成为了畅销书作家,而有的人埋头苦写依然毫无作为呢?


是不是因为他们背后有如天助神力或者说天生就是吃这口饭的人呢?在我看来,显然不是这样。


除开极少数比如少年班的神童,绝大多数在我们看起来非常厉害的人,虽然所从事领域不同,但是他们身上似乎有某种共性,造成的这种差异并非偶然,可能有潜在的必然。


这种共性我们可称之为思维模式上的不同即-成长型思维


成长型思维的人认为无论出身环境如何,自身天赋如何,笃定都可以通过自身的努力来改变并且成长。


固定思维的人认为从成长的环境就决定了自己的命运,不管后期如何努力,结局都不会得到改变。


在《异类》这本书中通过大量的实例证明一个结论,任何事情通过一万小时理论基本都会得到实现,一万小时理论中所注重的是刻意练习,反观成长型思维其实刻意练习也是建立在此之上。


那么对于固定思维的人和成长型思维的人在处理事情的方式上有何不同呢?


对于固定思维的人,遇到问题时往往会唯唯诺诺,最终则是放弃。


对于成长型思维的人,他们想的是利用什么手段来达到自己的目的,从而突破自己。


当固定思维的人说这不可能的时候,成长型思维的人正为将不可能的事情演变成可能忙的不可开交。


有些人可能对此进行反驳或者更加有疑惑了,我很努力了啊,为什么依然毫无起色,我只能说可能是你的方法不恰当导致。


比如我们在看一篇技术博客时,我们应该先看到它的好处,再批评它的坏处,任何东西都有好与坏、正与反,这和我们吃东西一样,只有经过了消化才能摄取营养。


与成长型思维等同的则是开放性心态,秉承开发性心态的人,会有更强的好奇心。他们的态度则是去探索或者寻找事物背后隐藏的逻辑和原因。他们乐于去接受一个新知的世界,并且把未知看做是一种冒险。


与固定思维等同的则是封闭性心态,简而言之,就是用自己熟悉的概念,去解释新事物。他们喜欢从不同的事物之间寻求相同,从而提取其共性,自以为抓住了事物的规律和本质。他们乐于将一个新知的世界,改造成自己熟悉且稳定的世界。


那么封闭性心态或者固定思维是不是一定就是不好的呢?


很显然也不是,我们将未知的事物通过我们以往的经验解释成我们熟悉的资源,这样可以降低注意力上的消耗,帮助我们将精力放在更重要的事情上。


但是,封闭性心态,是每每遇到一个新的概念,都会将其拆解,并用自己已有的知识网络结构来解释和替代,它会不断强化固有的知识网络节点,但是并不会增加任何节点,所以到头来收获不到什么。


而,开放性心态,是每每遇到一个新的概念,哪怕暂时无法解释,也会将其纳入大脑体系,同时新增一个节点,再然后不断尝试将它和固有的知识节点建立强有力的联系,最终会不断增加新节点,扩大知识网络范围。


如果我们大脑中的知识网络越广,越来越丰富,我们对事物的理解就会越全面,越加有效,所以开放性心态优于封闭性心态。


开放性心态的人完全不会担心自己的认知会被颠覆,因为他们无时无刻都在怀疑和修补自己的认知,相比稳定感即安逸感,他们更乐于追求新鲜和未知的东西。


成长型思维或者开放性心态的人在面对挑战和困难时,往往抱着试一试的心态。


固定思维或者封闭心态的人,非常害怕挑战,他们害怕自己的表现比如自己想象中的那么优秀。


当领导安排事情给我们时,如果这件事情我们之前从未接触过,此时对于封闭性心态的人则会推脱或者避开。


因为封闭性心态害怕尝试挑战自己不熟悉的工作,觉得这不是我擅长的事情,觉得我无法胜任,觉得我根本做不好,最终导致失去了提升能力的机会,长此以往,久而久之,在熟悉的岗位做着自己烂熟于心的事情,结果将是工作能力未提升,技能也停滞不前。


学习的本质,在于获取新知,而聚焦于知道。如下Jeff结合代码来看看我最近又收获到的知识。

人与人之间的差距是如何被放大的呢?_java

如上是通过Json.Net序列化非常简单的例子,这种情况很常见,但是有时候我们可能需要返回诸如如下Json格式。

看到上述Json格式数据,我们想到涉及到二维数组,同时将数据进行了拆分,上述实现代码如下:

那么问题来了,我们如何将上述集合转变成上述二维数组Json格式数据呢?如下:

但是此时发现无法将int[]数组转换为string[]数组,当然我们立马能想到在投影Age直接转换为String就可以了,是的,很简单,如下:

人与人之间的差距是如何被放大的呢?_java_02

人与人之间的差距是如何被放大的呢?_java_03

是不是到此就这么结束了呢?还有没有其他方法呢?当然是有的如下:

人与人之间的差距是如何被放大的呢?_java_04

我们看到最终序列化的Age为字符串,要是定义最终返回Age格式必须是int呢?比如如下:

人与人之间的差距是如何被放大的呢?_java_05

此时用二维数组返回只能是一种类型,不可能同时包括string和int,我们该如下解决这个问题,我们可以将二维数组定义为object类型,如下:

人与人之间的差距是如何被放大的呢?_java_06

但是此时会报无法将int[]数组转换为object[],按照上述演示我们还是可以用Array.ConvertAll来实现对不对,结果演变成如下:

人与人之间的差距是如何被放大的呢?_java_07

但是此时结果依然报无法将int[]数组转换为object[]数组,这时就有点棘手了,我们看看ConvertAll是否有重载方法,然而没有,如下:

人与人之间的差距是如何被放大的呢?_java_08

虽然该方法无法用lambda表达式,但是结果可以,此时我最终想到的方案如下(不知是否有其他解决方案,您可以留言):

人与人之间的差距是如何被放大的呢?_java_09

人与人之间的差距是如何被放大的呢?_java_10

如上简短示例则是我最近收获到的知识。


大卫.库伯提出过一个库伯学习圈。他认为学习一个新的技能和概念,需要经过如下这么一个循环。


具体经验->反思->抽象性概括->应用于实践


只有走完这一个流程,才能学会某一个知识点,这就叫做内化。走完整个流程最终形成自己的一套体系,只有这样,我们才能不断更新、完善自己的知识体系网络。


大多数人都在追求快速高效,这并不是真正的学习方式,只是在缓解学习不足而带来的焦虑感而已。


可能有些人心想,我无从下手,不知从哪里开始做,更不用谈形成自己的知识体系。


不打紧,最近开始录制ASP.NET Core MVC基础课程,预计分为30节内容,陆续会进行录制。


本系列课程让您系统性学习ASP.NET Core MVC,并且在这套课程中您会学习到更深入的知识,非侃侃而谈,如您有意向想了解请扫描如下二维码,注册并关注我了解课程基本详情或者可以给我留言加微信交流此套课程的讲解内容。