《刻意学习:如何从新手到大师》读书笔记

开这个系列是因为暑假中的一个想法。当时在刷leetcode、准备面试什么的,刷题刷得很痛苦,有的时候就会发呆想一些有的没的,甚至怀疑自己这样的学习方式是不是正确的。

随后在某论坛看到了一个关于使用刻意学习法学习DOTA的帖子。其中主人公是一个印度小哥,他从来没有接触过MOBA类游戏,完全0基础。他使用刻意学习法,利用3个月的时间,从MOBA小白一跃成为DOTA对线高手(中路影魔solo单杀万古流芳选手三次)。

当时论坛里面一片“这就是天才啊”的声音,我在感叹印度小哥厉害的同时,也对这个刻意学习法(Deliberate Practice)和Dr. Anders Ericsson 产生了巨大的好奇。究竟是怎样的一个学习法可以产生这样的效果?我自己的学习方式是怎么样的?我自己的学习方式有什么有缺点?有没有改进的空间?

抱着这样的问题,我读了这本《刻意学习:如何从新手到大师》,并做了一系列笔记,包含刻意学习法本身的讨论,也有对自己学习方式的思考。文章中所有引用部分都来自于书中或网上资料。

“1万小时定律”

这是书中序的部分所讲的内容,一上来就提到了“1万小时定律”。

我在很早以前就听说过这个所谓“1万小时定律”,远远早于我听说“刻意训练”。

一万小时定律是指作家格拉德威尔在《异类》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件”。要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。

我向来知道“熟能生巧”的重要性,因此在我第一次听说这个理论的时候,内心默认是理解为“想要在一个领域内成为专家,就要花大量的时间在里面。”至于这个时间具体是多少、这个时间怎么花,我是一概不知的。

然而在书中这样写道:

真相是,从来不存在1万小时定律,它仅仅是畅销书作家对心理科学研究的一次不太严谨的演绎而已。

进一步解释要从源头说起,简单来讲,“1万小时定律”的产生源自于1978年诺贝尔奖得主Herbert Simon与合作者William Chase发表的一片关于国际象棋大师与新手比较的论文。简单来概括,这篇论文发现国际象棋大师的专业长时记忆(如摆盘、复盘)显著强于一级棋手和新手。而获得这些专业知识大概需要10年。这就是西蒙的“十年定律”。

随后,本书的作者,埃里克森于1993年发表了一篇有关音乐学院三组学生的研究结果的论文。

……到20岁的时候,卓越的演奏者已经练习了1万小时,……那些比较优秀的学生练习的时间是8000小时,而那些未来的音乐教师练习的时间只有4000小时。

后来,可以料到,作家格拉德威尔在看到了埃里克森的研究之后,得到了所谓“1万小时定律”的理论。这个序中感觉有点把格拉德威尔描述成一个肤浅的畅销书作家,和只想用一些噱头来博取大众眼球的无良作家。这一部分有待考证。

“1万小时定律”的问题

在了解了这个定律的简单起源以后,序中简要阐述了“1万小时定律”所忽视的几点问题:

  1. 不同专业领域习得专业技能的时间和所需要的练习时间,并不是“1万小时”这个最低阈值。它可能是几千个小时(如优秀专业演员),也可以是几百个小时(如记忆数字)。

  2. 成功与否和练习时长并不完全成正比,“1万小时定律“忽视了天赋(或者说天才)也是一个重要的影响因素。比如体育项目,身高160cm的男子很难成为优秀的篮球运动员,这并不是一定时间和简单的练习可以弥补的。

  3. ”1万小时定律“没有指出学习(练习)方法的重要性。生活中有许多我们所谓的”死读书“的人,或者”看似很努力,实则没有什么成就的人“。有时候我们会简单把这些人归为”天赋所限“,实则是没有发现更加有效的训练方法,他们的方法是”机械的,缺乏针对性和技巧性“。

而对于当今市面上的所谓学习方法的畅销书,序中也给出了这样的评价:

熟悉写作技巧的畅销书作者常常会用一个_清晰的行动准则_,如“练习1万小时成为专家”、“21天养成好习惯”等来激发你的行动。但是对于究竟有多少人能够坚持1万小时,1万小时是否真的引向成功,坚持1万小时的关键节点,以及1万小时练习的本质是什么却置之不理。这些畅销书作者略过不谈的_细节_,恰恰是科学着墨最多,也是对人们提升自我最有帮助的地方。

刻意训练的核心观点

那些处于中上水平的人们,拥有一种较强的记忆能力:长时记忆。长时记忆正是区分卓越者与一般人的一个重要能力,它才是可以练习的指向与本质。

简单理解来讲,想要在某一领域内成为中上水平者,最终的目标便是在从事这个领域工作的时候,能够用调动起更大容量的工作记忆。

最近不管是生活还是学习也好,我经常会想,要是自己的记忆力能更好就好了。这样我学过的课程也不会忘记,经历的生活片段也不会渐渐离我远去。我也很羡慕那些过目不忘的人。举个例子,我和一位同事三个月前一起做过一个项目。三个月后的今天,他仍能记起很多关于项目的细节,包括代码、实施过程、验证过程、最终结果如何等等。但是我就没有记住,许多细节都要靠回翻文档来确定,甚至项目中的算法我都不能流畅地写出来。这常常让我产生一种挫败感。

如果说专家和准专家们已将自己的大脑升级了,工作记忆内存条可以同时调用一块SSD硬盘来当虚拟内存用,那么那些专业领域的新手们往往还是在使用小内存跑。

那么问题来了,这种长时记忆的能力能否人为培养呢?像我们这种成年人能否再像小孩子一样激发自己的潜力,使自己的记忆力获得长足进步呢?

埃里克森认为,这种长时记忆能力,是于具体专业领域密切相关的,且可以通过刻意训练习得。

只要你努力,经过几十小时到成千上万小时不等的艰苦努力,就能买来那款可以被工作记忆内存条调用,当作虚拟内存使唤的SSD硬盘,即长时记忆。

人类的潜力

在指明具体的训练方法之前,必须指出,训练方法也是随着人类文明进步而动态进步的。在任何一个领域中(比如运动、计算机、音乐等等),都在持续不断地出现变得更加卓越的办法,以抬高人们认为可以做到的“门槛”。

简单举个例子,以前成为一个优秀的程序员,可能只需要了解一门语言,如C++。现在,一个优秀的程序员必需了解多门语言,会C++的同时,也要会Java,会Swift,也要看得懂网络编程语言(如HTML、JS、PHP等),也要会胶水语言(如Python等)。更夸张的是,可能以前优秀程序员是从本科时候开始接触编程语言的,现在卓越的程序员是从高中,甚至初中就开始接触相关方面的知识。

人类的潜力,随着一代又一代的进步,也在扩张和提高。

如何买得起这块硬盘呢?

那么,这个刻意训练,到底怎么训练呢?

首先来讲讲长时记忆的培训,要做到以下:

  1. 快速理解自己领域内的单词与术语。这里可以采取思维导图的模式,从几个核心概念进行发散,逐步细分到各个分支。

  2. 对于专业领域的知识,要学会提炼其背后的思想,或者说大的框架。比如专家级的开发者善用设计模式,又比如在理解计算机网络的时候注意分层思想。

  3. 大量的练习。大量的练习可以提升调取长时记忆的速度。比如写了十遍二分法的人写第十一遍,理论上讲比只写了一遍写第二遍的人要快。

情景学习

上面的几点还是太过空洞,接下来进行更加全面的总结。

首先要介绍认知复杂度这一概念。人类对任何事物都有一个认知,那些比较简单、容易理解的事物,认知复杂度就比较低,如象棋、钢琴、篮球、驾驶等等。而有些事物则有一个较高的认知复杂度,如销售、管理、辩论等等。不同复杂度的事物,练习方式也不同。

而如果用人的能力来理解认知复杂度,那么,认知复杂度高的人,思维能力也高度复杂化,对客观世界的理解能力就越强。但是,认知复杂度的培养也是需要一个过程的,而且不是普通的学习方法就能实现的,这个过程可以概括为“情景学习”。

所谓情景学习,说白了就是,你要学习的东西在实际应用中是什么场景,那么你就应该在什么样的场景中学习这些东西。比如你要学习编程,就应该在Github里面学习,因为你以后编程就是通过Github。再比如,你要学习篮球,这不是坐在家里看几个篮球视频就能学会的,球场才是你提高篮球水平的最佳场所。

成人的最佳学习方式并非独自练习,而是在情景中学习。有效学习是进入相关情境,找到自己的“学习共同体”,学习者最开始围绕重要成员转,做一些外围工作,随着技能增长,进入学习共同体圈子的核心,逐步做更重要的工作,最终成为专家。

下面是“情景学习”的几个要点:

  1. 找到你的学习共同体。有效的学习不是关门苦练,而是找到属于自己的学习小团体。
  2. 隐性知识显性化。这个有点晦涩,简单来讲就是了解你的学习策略。
  3. 模仿榜样。这一点其实很重要,一个好的导师的作用非常巨大。这个榜样可以是现实中的,也可以是网上的导师。
  4. 培养多样性。有些情况下一种情景可能不够,需要在多种情景中实践,强调学习广阔的应用范围。

“情景学习”对于我们其实并不陌生,因为中国义务教育的一些模式就十分符合”情景学习“的要求。首先,学生是以班级为单位进行共同学习的,这就符合了学习共同体这一点。有时候班级这个团体又太大了,因此衍生出“学习小组”的概念。那么,“学习氛围”也自然而然的产生了。学习氛围的好坏决定了这个小团体的潜力。

其次,榜样的力量。一个班级的榜样由一群老师组成,具体来讲有班主任、各科老师、生活老师等等,他们是一个班级的核心,起着引导、鼓励、督促等多个作用。

就我个人的学习经历,以高中为例,我觉得一、三点是做得很好的,但是对于二、四点,我们学校是做得不够的。老师们并没有专门针对学习策略进行一个科学的指导,很多策略都是由学生自己在摸爬滚打中摸索出来,有些成功的学生可能很幸运,摸到了适合自己的学习路径,但是更多的学生从高一开始就浑浑噩噩,灌输成了他们接受知识的主要来源。同时,对于学习的阶段性目标和长期目标,也没有一个很好的、定制化的规划,大多数靠学生自己完成。

再举一个我暑假leetcode刷题的例子。刷题的时候我做了下面几件事情:

  1. 学习共同体。加了一个leetcode的微信群,找了Github上的repository,还有一些刷题论坛和刷题网。
  2. 学习策略。主要分为两大块,理论知识和编程能力。理论知识主要是MIT的公开课资源、网上的理论知识资源、还有刷相关书籍三块。编程能力主要靠刷leetcode,看GitHub上的刷题指南。
  3. 模仿榜样。这一部分是我所欠缺的,一直缺少一个可以交流的、以之为目标的榜样。
  4. 培养多样性。目前的练习环境有leetcode,Github,本地的IDE。感觉对Github的使用还有所欠缺,需要继续扩展,最好可以围绕一个项目展开。

下一集预告

第一部分的全部内容来自于这本书的推荐序,下一部分将会正式从书中正文第一章开始。

Reference