我们在过去的时光中,谈了很多关于技术、关于生活、关于工作、关于学习的话题,这次我们来谈谈关于『认知升级』这个话题。
实际上,『认知升级』相对来说是个比较抽象的概念,它与掌握一门技术相比不是那么容易看到。因为技术的进步和成长是任何人都可以看到成效的。比如说,你之前不会Netty或是对Netty不是那么了解,通过学习和实践掌握了Netty的方方面面,那这其中的进步就是非常明显的,也是很容易看到成效的。
与技术上的成长相比,『认知升级』则属于更加抽象,且更具方法论的一个话题了。那么,到底什么是认知呢?
我个人认为,所谓认知指的是你对这个世界,对身边环境,对于生活、学习与工作的认识以及所采取的行事方法。
如果说切实掌握了一项技术属于『硬技能』的话,那么『认知升级』则属于软技能这个领域。不过,这里千万不要认为只有『硬技能』才是我们需要掌握的;相反,『软技能』的重要性有时还会超越『硬技能』,为什么这么说呢?
根据我的经历,诸如『认知』这样的软技能是我们能够切实掌握『硬技能』的一个重要前提和方法论保证。具体来说,我们在学习任何一项新技术时,每个人所采取的方式与方法都是不尽相同的,你有你的方法,他有他的方法,而我显然也有我的方法。不过,无论中间采取了何种方法,我们的目标是不是都是一样,或是几乎是一样的呢?那我们的目标是什么呢?显然,我们的目标是扎实地掌握所学习的这项技术或是这个框架,并且对于一些重要技术与框架来说,掌握的越深入、越扎实越好。
既然大家的目标是一样的,即我们所要追求的最终结果几乎是无差别的,那么这中间的过程就会对结果起到很大的影响,有的影响是正向的,有的影响则是负向的。
从我们准备学习一门技术开始,一直到最终彻底掌握它,这中间会经历很多的过程,也会出现很多反复。因此,如何更好地确保中间过程的效率与效果就会对最终的结果产生极大的影响。
可以将掌握一门技术的过程分为如下几个步骤:
1. 觉得这门技术挺有用,准备学习。
2. 搜集学习资料,看官方文档、购买相关图书、看相关视频。
3. 不停地遇到各种各样的问题,在网上不停地搜索解决方案。
4. 继续看官方文档、继续看书、继续看视频。
5. 依然会遇到各种问题,心情比较烦躁地搜索关于问题的解决方案。
6. 初步掌握了这项技术。
7. 一段时间没有使用或是没有再看这项技术,开始产生遗忘。
8. 又经过一段时间,发现之前学习的这项技术很多都已经记不清楚了,甚至当时非常清晰的一些细节已经完全回忆不起来了。
9. 重新开始学习这门技术。
10. 历经千辛万苦,终于算是比较深入地掌握了这项技术。
11. 又有一段时间没有再碰这项技术。
12. 当有一天翻看这项技术时,发现又有太多、太多的细节已经完全想不起来了。
13. 感到非常的沮丧。
14. 感到更加的沮丧。
15. 重复上述的步骤9。
是不是上面的这15个步骤感到似曾相识呢?
原因在于什么?
根本原因在于,你将太多的精力放在了非核心上面,而对真正的核心之处却从来没有深入思考过。
经常有人咨询我,为什么我学起一些技术会比较快,而且还比较深入,并且还能将自己的积累很系统地讲出来。但是换作自己,哪怕将一门技术扎实掌握都很难做到呢?其实,这个问题并非个案,而是一个普遍存在的问题。这个普遍存在的问题严重到会成为制约你更好前进的一个巨大障碍。
正所谓『不识庐山真面目,只缘身在此山中』。我们每个人都上了十多年学,但是很多人甚至连最为重要的学习方法都没有掌握。这里面一方面有学校教育的缺失,另一方面则是作为个体从来没有认真思考过这个问题。
对于我来说,在上大学时收获的最重要两个方面并非掌握了什么专业知识,而是我在大三时明白了下面两点:
1. 我知道自己热爱的专业是什么:我不喜欢自己当时所在的专业,我更加喜欢计算机专业,因此确定了跨校跨专业考研的目标。
2. 我掌握了适合自己的较为高效的自学方式:这一点在后来的时光中对我产生了巨大的帮助,让我能够走得更加从容不迫。
回到上面的话题,为什么我们在学习一项技术时总是容易遗忘,哪怕当时印象极其深刻的内容,以为自己永远也不会忘记的内容过一阵还是会遗忘呢?
答案就是『无输出』。
是的,道理就是如此简单。
无论你的学习手段是什么,是看官方文档,看书,看文章,还是看视频,这些都是『输入』。是别人的东西灌输到你的脑海中,但它不是你的。
如何将别人的东西最终变成自己的呢?答案只有一个:输出。即,通过自己的不断输入,在脑海中经过一系列的加工,最终变成自己的输出。即下面这3个过程:
1. 输入
2. 加工
3. 输出。
很多很多人在学习时,第1个步骤做得都还可以;第2步则因人而异了,有些人会思考,有些人则全盘接受,更可悲的是将网上看来的东西就当作真理一般对待。至于第3步,只有很少很少人才会做。因为,这个步骤是最耗费时间与精力的一个步骤。而且,第3步在你学习的当下你会认为是一个毫无存在必要的步骤,因为你当时自我感觉已经将待学习的这项技术理解的很透彻了。然而,成败就在一念之间。
对于没有输出的学习,其最终的效果就如同我上面所列出的15个步骤那般。
为什么总有人说,一项技术只有在项目中实际用过了才能真正掌握,其实这里面暗暗隐含着『输出』这个环节。在项目中实际用过显然就是一种输出方式。但在项目中使用过仅仅是『输出』的一种方式而已,它并非全部,请勿一叶障目,不见树林。
在项目中使用本质上就是一种『输出』方式,它会令你产生一种错觉:一项技术只有在项目中使用过了才能算真正掌握。
当下的技术领域如此之多,一个项目充其量只会使用其中很少的一些技术集合。按照上面的理论,难道项目中用不上的技术就不用学了么?答案不言自明。
其实,在项目中使用会令你加深对一项技术的理解与认识这个观点只不过是对于一种方法论的具体解读而已。
『输出』的形态其实有很多种:
1. 在项目中使用
2. 形成记录(记录到印象笔记或是有道云笔记上),发表到博客、微信公众号等媒体上
3. 给别人讲
这里面我只列出了自己所钟爱的3种方式,其他方式也有很多。
因此,你觉得在项目中使用才算掌握一门技术,在我眼里看来,可谓是『认知』尚未升级,因为你并未透过现象看到本质。在项目中使用可以让我们比较好地学会到应用,但是对于技术的深层次掌握是需要额外下功夫的,这通常都是对自己有着较高要求的人才会做的事情。
给别人讲是一种我特别推崇的学习方式。通过这个过程,你会发现自己在技术理解上的诸多问题,同时会不断加深对技术细节的把控;可以这么说,将上面3种『输出』方式有机结合起来,会令你真正掌握学习的方法论,也会令你在学习之路上越走越好,越走越踏实。
可以举一个例子,目前圣思园正在发布『深入理解JVM』课程。实际上,除了本职工作就是与JVM打交道之外,绝大多数人的日常工作并非天天都会接触到JVM,那为何还要学习呢?因为它重要啊!
既然无法做到天天与JVM打交道,那该如何学习JVM呢?显然,既然无法做到在项目中直接使用,那我们就完全可以用其余2种方法:形成技术+给别人讲;通过这种方式,你会发现自己的技术能力会持续水涨船高,而且会变得越来越好。
全文完。