一、背景

最近有些同学遇到一些困惑,比如看书,看了容易忘,记住不会用。

这是非常普遍的问题,也是我曾经遇到过的问题。

那么如何解决呢?

这就是本文重点要讨论的内容。

二、原因分析

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循环类似)

在输出的过程中,自己的知识更加系统化,得到反馈后也可以更快速地改进。

比如我的博客就坚持写了很多文章,把它当做帮助自己梳理思路,理解知识的途径挺好。

四、总结

我认为不同的学习方法就像数学中不同的函数,他们的增长速度是完全不同的。

只有方法和思想发生改变,一个人的成长轨迹才能发生质变。

希望我的文章能够给大家带来一些启发,希望大家可以作出一些尝试,提高技术发展的速率。