一、背景
最近有些同学遇到一些困惑,比如看书,看了容易忘,记住不会用。
这是非常普遍的问题,也是我曾经遇到过的问题。
那么如何解决呢?
这就是本文重点要讨论的内容。
二、原因分析
2.1 “看着答案做题”或者称为“背诵 or 记忆”
我们读书的时候,书上直接将(可能是最优的)答案告诉你。 你并不需要进行深度思考就认为一切顺理成章。
但是“看着答案做题”危害很大。 试想一下,如果你是一个高中生,如果你每次做数学题都是直接看着答案,你会很轻松,会认为就该这么解。但是一旦脱离答案,你将手足无措,和答案在手时完全不一样的状态。 看着答案做题时,信心爆棚,似乎自己啥都会了一样,完全脱离答案后发现并没有真正掌握知识。
很多人平时学习都会遇到类似的情况。看书啥都对,(”看着答案“)误以为自己啥都懂了,并没有经历实践的检验。
那么如何验证你学的好坏呢?
其实就是解决未知问题的能力!举一反三的能力。
学了某个技术,可以看到问题的本质掌握核心原理,进而在工作和生活中灵活运用的能力。
2.2 如何学习
强力推荐B站《学习观》相关系列视频,讲得非常透彻。
其中一个核心思想是: 学习不等于记忆;知识不等于信息。
本质上相当于通过大量的例子去归纳出规律,不断修正自己的认知,然后用归纳出来的规律解决未知问题的能力(演绎)。
三、怎么做?
3.1 学习和行动
3.1.1 学习
通过直接经验和间接经验来学习。
直接经验印象最深刻,但是很多人经历了很多事情却从来不复盘,导致同一个错误反复出现,进步并不大。
由于直接经验的有限性(比如你是一个校招生,几乎不太可能和工作四五年的人遇到的问题那么多,积累的经验那么多;每个人的智商、天赋和能力都不同,而牛逼的人可能把毕生的思考总结成某一本经典的图书),必然要借助间接经验来成长。
间接经验可以通过对不同知识进行类比来获得;可以通过和别人交流来获得;可以通过多看书和视频等来获得;可以通过脑海中推演来获得。
3.1.2 行动
纸上得来终觉浅,绝知此事要躬行。 Talk is cheap show me your code!
实践是验证你知识掌握程度的重要方法,因此行动必不可少。
学习技术时可以多画图,调动多个感官。
可以多重复,很多人看书看完第一遍就抛之脑后,下一次看可能都几年过去了,必然很难彻底掌握。因为遗忘规律是人类的记忆规律,最近看的内容很快会遗忘,大脑会认为重复出现的东西更重要。因此最近读的书,最近就要写书评、分享给别人等,最近要再反复看几次。
刻意练习,这也是为什么高中很多课本后面会有针对这一节的练习题,就是为了让你验证本节学的内容。
3.2 核心方法
下面介绍我认为最重要的学习方法。
3.2.1 归纳和演绎
归纳和演绎是两个逆向的过程。
所谓归纳就是从无数个例子(书中看到的具体信息)中归纳出普遍性的规律。
所谓演绎就是将归纳出来的规律举一反三,灵活运用到解决实际问题当中。
我们的眼中不应该再有具体的技术甚至学科限制,应该试图将自己所学的东西的共性(or 本质)归纳起来,而这个共性和本质的东西才是最重要的知识,才是帮助你逆向运用到实践中的关键。
如下面是我积累的思维导图的其中一小部分:
这个过程需要不断的积累,和反复的实践得来。
面试中为什么有些面试官会问源码的一些原理?为什么会问如果是你,你会如何设计某个中间件?
一方面是看你掌握的程度,另外一方面主要还是看你能否看到问题的本质,进而更有可能运用到未来的工作中。
具体的知识点并没那么重要,但是原理是相通的,这也是为什么面试中喜欢问原理的原因。
这也是为什么“面试造火箭,工作拧螺丝”的一个原因,另外一个重要原因就是供大于求(必然要求就高)。
3.2.2 猜想和验证
我们之所以对看过的书,学过的东西印象不深刻,其中一个重要原因是我们大多数时候趋向于记忆,没有经过思考转化为自己的东西。
另外也没有那么多“练习”的机会。
猜想和验证就是学习非常重要的方法,比如我们学某个技术的时候,可以猜一下这一个模块,如果是我我会怎么设计?
看源码的时候,想想如果是我我会怎么写?
然后和实际的技术设计或源码进行对比,才能发现自己的不足,不断纠正自己的思路。
这点非常非常重要!
另外推荐大家了解下 费曼学习法 和 PDCA 戴明循环。
本质就是做计划,行动,验证,修正,继续行动…
很多人学习存在的重大问题是:没有验证,没有改进。
猜想和验证恰恰弥补了这个缺陷,而且猜想和验证方法和费曼学习法本身都符合PDCA戴明循环的理论。
3.2.3 以终为始(本质思维)
如果带纠结于表面,纠结于细节,往往就会忽略事情的目的。
技术的本质还是为了解决问题,我们应该主动思考问题的本质,我们设计所要达到的目的是什么,据此来调整我们的方法和行为。
比如恋爱的时候,如果女生说你“是一个好人”,多半是因为你没钱,你丑,那么穷追不舍的说“我对你这么好,为什么…”
就没有意义。
很多人设计技术方案的时候,经常会考虑“以前就是这么设计的”、“大家都是这么做的”,而不去考虑本质上是为了什么。就像很多人问技术问题的时候,你明显地可以感受到他在“走弯路”,当你帮助他梳理清楚他的核心目的之后,可以有更简单的方法来解决这个问题(也也就是那句话“事出诡异必有妖”)。
我们学习某个技术的时候也是一样,该技术的本质是什么?
比如 redis 缓存,就是一种缓存(和浏览器缓存、CDN缓存、DNS缓存甚至CPU缓存都是一致的),那么缓存的本质是什么? 缓存的本质就是通过空间换时间的方式获取更好的性能。
这样你对一个知识就有更宏观和更本质的理解,就更有可能灵活运用。
3.2.4 逃离舒适区
舒适区对一个人的阻碍是非常大的,因为人性害怕不确定性,更愿意呆在舒适区。
但是呆在舒适区就意味着很难成长,接触的都是已经掌握的东西,既不能提高知识的广度也不提高知识的深度。
但是步子迈得太大,往往也容易受挫。
因此应该保持在学习区,不断学习新的东西/有一些挑战的东西/对自己发展有帮助的东西,让自己能过不断成长。
另外随着归纳和演绎方法不断深入,你会发现很多新的知识都是旧的知识的一个应用,学起来也会变得容易地多。
3.2.5 “适合自己的学习方法”误区
正如孤尽老师曾经强调的,大家要重视学习如何快速学习的能力。
大家要敢于拜托固有的低效的学习方法。不仅要学习而且要学习牛人如何学习,学习如何高效学习。
但是从小就经常听说“找到适合自己的学习方法”。但是很多人潜意识里就会认为适合自己的方法其实是“舒适”的方法,但是舒适的方法往往是已经用过的方法。
但是已经用过的很多方法往往并不是高效的方法,但是由于舒适区的原因,由于人们恐惧不确定性,导致很难做出改变。
其实我们不应该找“适合自己的(舒适)的方法”而应该追求“高效的方法”。
如果高效的方法不适合你,那么活该低效喽?
而且前面也提到以终为始,我们运用各种方法的目的是啥?难道不就是为了快速学习新的知识,快速成长吗?
3.2.6 教是最好的学(输出)
可以通过写博客、写公众号甚至进行技术分享。
在教的过程中不自然地要搜各种资料,要进行梳理和思考。整理过程中会发现自己理解不好的地方,在分享之后也可以得到反馈,进而可以改进。(和前面讲的费曼学习法、PDCA循环类似)
在输出的过程中,自己的知识更加系统化,得到反馈后也可以更快速地改进。
比如我的博客就坚持写了很多文章,把它当做帮助自己梳理思路,理解知识的途径挺好。
3.2.7 其他
搜索资料优先使用谷歌、StackOverflow 而不是直接百度。
超级推荐搜狗微信搜索,可以搜到一些一些高质量的公众号文章。
多看一些经典的书。
多向比自己工作早几年的或者牛逼的人请教和交流,可以少走很多弯路。
语速则不大,除了纯技术的书之外,可以看看产品、心理学、管理学等图书,开拓视野。
四、总结
我认为不同的学习方法就像数学中不同的函数,他们的增长速度是完全不同的。
只有方法和思想发生改变,一个人的成长轨迹才能发生质变。
希望我的文章能够给大家带来一些启发,希望大家可以作出一些尝试,提高技术发展的速率。
如果你觉得本文对你有帮助,欢迎点赞评论加关注,你的支持是我创作的最大动力。
想了解更多开发和避坑技巧,经验,学习方法少走弯路,
欢迎关注本人的慕课专栏:
再学经典:《Effective Java》独家解析
解锁大厂思维:剖析《阿里巴巴 Java 开发手册》
热门评论
文章很好,受益匪浅,另外文中有几处错别字。