“他忘记的比你知道的还要多?”,那个人指的就是我。我成为一名开发者已经三十多年了,忘记过不少知识。但问题是:我现在知道的,或者说,我记得的,和千禧一代的人一样多么?我的知识量真的比得上别人么?在与这些更年轻更聪明的天生适合做技术的人竞争时,我做对了许多事情。其中我做的最好的一件事情可能就是持续学习。但是我现在需要做的更好一些。我需要停止忘记学到的知识,不论是已经学会很久的,还是刚刚学会的。
这就有了更多疑问:Dreyfus的技能获取模型分5个级别:新手、高级新手、胜任者、精通者和专家。大多数开发人员在职业生涯的大部分时期都停留在高级新手的阶段。我已经在我的职业生涯中完成了足够多的工作,可以证明我至少是一名胜任者。但是我需要做些什么才能成为精通者和专家?编程技能水平上详细写到“编程人员的7个等级:码农、程序员、计算机科学家、开发人员、工程师、架构师。”
我在职业生涯的大部分阶段一直都使用相同的方法来学习。但是,由于我再有几年就60岁了而且马上会和GenZ一代的人【译注3】竞争,所以我一直严肃对待自己的学习策略。为此,我阅读了许多关于学习的书、博客和文章。本文详细介绍了我在学习方面重新制定的策略。
我将自己重建的学习策略分成三个方面:
学习队列的管理
主动阅读与倾听
编排目录
学习队列的管理
直到最近,我的学习队列是我办公室桌上的一堆图书、我Kindle上展开的清单以及大量仓促地标为书签的博客帖子。我过去一直用后进先出(LIFO)的方法来清理学习队列。这在过去是一种很好用的方法。但是,我需要,或许你也需要,主动地管理学习队列。不要把这个队列想像成一个挨一个排队那样的情形,例如银行排号、火车站排队买票或者交管所排队摇号。而应该把它想象成,在一个那样独一无二的夜总会里,有一个浑身肌肉的门童,而文章、博客帖子和图书就像希望进入夜总会的客人一样站成一排。这个门童眯着眼睛,跳过前面几个,然后挑出看起来有趣的家伙。随后,为了清理队列,他指向几个索然无味的家伙,说“伙计们,揍扁它。”毕竟,那个队列代表了你将来的知识,你应该主动地管理这个队列。
图书
图书方面,我降低了自己看书的存量,平均每次只看三本不同类型的书。我会将那三本书放到我的桌子上(或者Kindle主页),把其它的书放到书架上。我想,你钟爱的阅读设备一定有一个文件夹管理工具(在Kindle上叫做collections)。因此,我建议你将你的索引库放到类似collections之类的工具里,然后将一些最近要看的书放到主页。我目前喜欢三种不同类型的书,例如:一本是关于Ruby的,一本是关于JavaScript的,以及一本是类似《The Passionate Programmer》的关于学习动力话题的。当我一有空读书的时候,我就会挑选其中一本作为我当前的精神食粮。
博客帖子和文章
事实上,我现在不太重视图书了。我过去的学习方式是在互联网时代之前形成的,由于这种学习方式,在一二十年里,我几乎忽略了博客帖子和网络文章。当然,我会用众所周知的Google IDE来获取即时解决方案,但是我从图书中获取大部分新的知识。这可能与你们认为的我不太一样,在你们看来,我过去一直为技术网站付费写一些文章并且在2007年就创建了自己的博客。我从过去那种老旧的学习方式醒悟过来是当我意识到:
我从事的技术进步得如此之快,以至于图书中没有我所需要的信息。
我经常使用的技术太专业了而没有一本权威的图书
我的千禧一代的同事从博客中以更少的时间学到了更多的知识
但是我应该读哪些博客呢?它们应该怎么来筛选呢?我的解决方案是订阅一些电子邮件形式的时讯周刊或者月刊,它们会列举一些文章和博客推荐。我也开始主动关注或者被动接收来自我加入的各种Slack频道的其它开发人员的推荐。我还使用一些像dev.to和medium.com之类的网站,这些网站上面有许多被大量读者评价过的文章。
过去,我会把文章链接列表放到我的邮箱里。当从同一个信息源发来的后续邮件堆起来的时候,我会将最近收藏的文章先阅读掉,然后,删除这些读过的邮件。有一个同事向我推荐getpocket.com。Getpocket(以及类似的网站,例如instapaper.com和flipboard.com)允许你将一篇文章或Youtube视频快速添加到你自己的私人索引中。
现在,当我收到一封邮件列表,我会访问每篇文章链接,如果哪一篇文章的描述吸引了我,或者大约20秒的一瞥觉得它值得一读,我就会将它加到Getpoket上。因此,几分钟时间,我就可以删除这些邮件。现在,在健身房的训练间歇时间或者工作任务的间隔时间,我会坐下来阅读,在我的iPhone、Kindle Fire或者iPad上访问Getpocket,然后阅读一篇博客或者观看一段视频。每当我读完一篇文章,我会管理学习队列,将这篇读过的文章从队列中移除。
阅读习惯
我喜欢读书。我年轻的时候,在整个夏天,我每天都会阅读一本小说。在我开始我的技术职业生涯后,我也同样如饥似渴地一本又一本地阅读技术图书。我阅读的其中一个习惯是,首次打开一本技术图书时至少阅读100页。我不会打开一本书,除非我准备好快速读完它。但是,这35年来,我这么做都是错的。我学到了很多知识,但是没有记住它们,而我本来应该是可以记住这些知识的。
如何阅读技术资料
你曾经和一些看起来过目不忘的人一起工作过么?你和他们阅读相同的书籍,但他们能够在结对会议中脱口而出那些书中的技术。他们好像有过目不忘的能力,在任何方面都比你更聪明。但很抱歉告诉你,过目不忘很大程度上是一个神话。唯一不同的是,那些天才进行主动阅读(或者主动听讲,以教学或研讨会形式的听讲。)相反地,我的阅读方式一直都是错的。我过去一直都只是看过了那些书,但是大部分时候,我是一边记一边忘,而且可能忘的比记的还多。
主动阅读和倾听
下面总结了我重新构建的阅读或倾听策略:
开始之前,先想清楚你希望学到什么
当你阅读或倾听的时候,将你学到的东西与现实或想象联想起来
做有创意的笔记
不要阅读你不关心的章节
阅读之后,反思你阅读或倾听到的内容
至少温习你的笔记5次
详细描述
我曾经的阅读方式一点也不主动。我通过反复阅读去尝试去理解我读到的内容。那看起有点效果。我会理解一个概念或技术,但是我不会一直记得它。当你用一种主动的阅读方式,你会将这个概念与一些事情或事物关联起来。这些可能是你看到过的事物或做过的事情,也可能是你喜欢做的事情。在这个学习过程中,你会积极地运用大脑中有创造力的部分。在Andy Hunt所著的《Pragmatic Thinking and Learning》一书中,他将大脑划分为两部分:L模式和R模式,即线性(linear)模型和丰富(rich)模式。Andy倾向于上述划分方法,而不是左右半脑的划分方法,是因为我们的思维过程并不是严格地按照半脑划分的。他认为:你阅读时大脑联想得越多,你记得越多。你需要在阅读文章、博客或者报告时进行思考,并且有创意地详细描述你阅读到或倾听到的概念或技术,来调动你的思维过程。
有创意的笔记
做笔记是主动学习的一部分。如果不是主动学习的状态,我阅读的内容会从像梦一样从我的大脑中流逝。做笔记这个简单的过程,将那些概念钉进了我的脑海。我之后会利用这些笔记作为记忆内容位置的索引。我的笔记通常简短而难以理解,但是我经常尝试让它们更有创意。举个例子:我的一个儿子在医科大学,他将知识概念画成图片。那些乱涂乱画对其他学生没有任何意义,但对他而言,它们将那些概念与记忆情景联系起来。
手写笔记比死记硬背更有效,但是如果你一边健身一边阅读,或者开车时收听一段播客视频,就不能写笔记。
那我问你一个问题:你口袋中有设备吧,是什么呢?是一个社交设备吗?是一个照相机吗?还是一个奢华版MP3播放器?对于技术圈的人来说,最可能是一部手机。真人真事:我最近从Droid转向iPhone(在倒骑独轮自行车时摔碎了我的Droid之后。)我拿到我的iPhone几周之后才收到来电,而我到那时还不知道怎么去接听它。我的iPhone是一个学习设备。我用Kindle、Audible、Podcasts、GetPocket、Youtube以及Chrome来阅读、观看和听取技术信息。iPhone可以将我在使用的两款app中做的笔记实时同步:Notes(备忘录)和Voice Memos(语音备忘录)。当我双手空闲的时候就在Notes中做笔记,而当双手忙碌的时候就用Voice Memos来做笔记。例如,在锻炼的时候我会听一些播客视频和有声读物,当我听到一些想要记住的内容,我就创建一个Voice Memo。
要知道,做笔记的过程会强化大脑中的神经突触。当然,我会做个测验,而且稍后还会做更多测验。
反思
我年轻的时候,每周会开25英里车从纽约到宾夕法尼亚州的哈里斯堡两次,在一个冲绳训练过的空手道教练的指导下进行锻炼。这个课程班大部分由20多岁和30多岁的成年男性组成。但是,我一个小孩,似乎有过目不忘的记忆力,因为我学习复杂的一伸流招式(Isshinryu katas)比别人更快。当然,我过去肯定没有,现在肯定也没有,过目不忘的记忆力。我的“秘诀”是,在开回家的25分钟路上,我会在脑海中一遍又一遍复习我那晚学到的招式。学习主要招式花费的时间通常决定你准备好进行黑带测试的时间。但是我学招式如此之快,以至于我被告知推迟我的测试。(许多年后,经过数次鼻子被打破、眼睛被打成黑眼眶和肋骨被摔裂的经历后,我成功通过了测试。)
在Robert C. Brown的书《Make It Stick:The Science of Successful Learning》中,我年轻时的这种经历被称为反思。尽管我作为一个武术家能如此高效地使用反思,但我忽略了在我的技术学习中使用它。我过去阅读一篇文章或书中的一个章节,理解它,然后,它从我有意识的脑海中消失,隐藏到某个也许永远不会再被看到的隐蔽的角落。现在,通过使用我重新构建的学习策略,我会经常反思我读过的内容。例如,在健身房花费一个小时边做交叉训练边阅读文章之后,我会在沐浴和稍后开车回去工作的路上主动反思新获得的信息。
5次
因此,现在我积极地阅读(或者观看或者倾听)博客(或者视频或者播客)的时候都会记有创意的的笔记。之后我会反思我学过的东西。但是学习这些知识的过程并没有结束。我仍然需要去回顾我的笔记。学校里称之为测验。测试是很烦,但是大量调查显示,经常测验非常有助于学习和记忆。学习之后越快测验越好。在那之后,再进行几次测验。当我复习我的笔记的时候,我震惊于这种方式帮我补回了许多我虽然理解但是已经几乎忘记了的概念。虽然建议温习笔记5次,但是我通常在我自信已经记牢的时候就删掉那些笔记。我遇到感觉枯燥的几分钟时,在任何时候或地点,我都会温习笔记,不论是在商店排队时,或者在餐馆等座位时,或者在电视播广告时。比较酷的是:当我的笔记箱快空的时候,它就会提醒我去强化主动学习和做有创意的笔记。
我认为:重复阅读很多时候是无用功。当你重复阅读的时候,你的大脑会欺骗你,告诉你这些都是熟悉的信息。但是你在主动阅读过程中做的有创意的笔记会强化你的记忆。据我个人观察:我5年前开始在Audible上自学意大利语。听了许多内容之后,我发现自己没有跟上故事的节奏。因此,我会重复听,而我的大脑会告诉我它之前已经听过这段内容,然后宣告说这段内容太枯燥了。但是我的愚蠢的大脑又说不出其中的故事情节。我其实没在积极地听。真正的问题是,我听的时候,我还没有明白一个单词或一句话时,后面的故事就一堆废话一样(balblabla,意大利语中为blah,blah,blah)地播放出来了。现在,如果我没明白一个单词,我会点击30s重新播放按钮一次或两次,然后我读这个单词并将它记录到我iPhone上的Voice Memos上(Voice Memos会保存这段声音,并以一个数字作为索引),最后,我会重温这个单词并根据这个声音记录联想到对等的英文。一段时间之后,我会在Voice Memos上再测验自己。
编排目录
我们家过去有一个废弃的抽屉,里面有各种杂乱的东西:铅笔、X-Acto铅笔刀、Super Glue胶水、卷尺等等。通常我们会怀疑是不是有个东西在那个抽屉里,然后会漫无目的地在那个抽屉里翻箱倒柜地找那个东西。我们大部分人都将新学到的知识丢进废弃的抽屉:书签、充满匆促记录文本的被遗忘的文件夹、各种乱写乱画的笔记本。想一想你知识的废弃抽屉,它们是不是几个月以前就像我家(或者我的知识)的废弃抽屉一样杂乱了?
几个月前,我家的厨房意外漏水浸泡了地板。整个厨房不得不翻修,包括容纳了我们那个废弃抽屉的柜橱。当翻修过的柜橱安装好之后,我的妻子也把那个废弃的抽屉整理好了。
你的知识也需要像我们的放了各种东西的抽屉一样进行整理(当然,现在不能再称它为废弃的抽屉)。知识是你的战利品,你的财富。管理它,为它编排目录,经常温习它,然后将没有用的东西丢弃。丢弃那些像干掉的Super Glue胶水一样的东西,或者大量你不会再重复阅读的文章的链接。
书签
记住,你是为了那些你不记得的东西才用书签,因此你需要记得你把这些东西放在哪里。想象在一个配对会议中,你说“我抽屉里有一个微型磁性螺丝刀,现在应该能派上用场。”然后你去你的充满各种书签的废弃抽屉里翻箱倒柜地寻找那个螺丝刀。现在,再想想你走到一个用清晰名字链接的管理好的列表,然后很快就找到了需要的东西。你的结对伙计绝对会对此印象深刻,因为你的书签就像你大脑的扩展体一样。
只是简单地浏览你的书签就能强化你的记忆神经突触。如果你还没有阅读一个帖子,就把它放到Getpocket(或者类似的工具)里。之后如果你阅读了这个帖子,然后明白了它的意思,就可以将它删除。那些非常好并且可能非常适合重复读或者推荐给其他人的文章可以放到GetPocket,不要放到队列里,而是放到收藏夹里。我会在一个文件夹里放不超过一打(12个)左右的链接。如果需要放更多的链接,建议创建一个新的文件夹或者子文件夹。我也会用冒泡排序法将更好的链接放到顶部的文件夹。
我的书签是我记忆的扩展体。它们是各种技术的总结。如果你想,就可以查看这些列表。安装手册、秘籍小抄、格式指南。例如,我刚刚添加了一个ES6 cheat sheet。你也可以从这里查看这份列表。这是一份精心制作的各种流行工具和语言列表,例如CSS、Javascript和Bootstrap。移除那些已经在devdocs.io中存在的内容的书签,并经常更新书签列表。
印象笔记(和它的竞品)
直到最近,我的印象笔记清单才上了TV节目Hoarders。一方面,我将笔记记在同一家科技公司名下的各种笔记本客户端上。其中一些我的笔记有很多页,需要将它们分成多个笔记。随着我的书签被清空,浏览我的印象笔记,移动笔记,重命名笔记,删除不需要的笔记,这是一件非常令人享受的事情。这因为2个原因很有趣:1)我重新回忆起其它已经忘记的知识;2)我知道我正在优化我的大脑的扩展体的索引。
Wikis
我认为,我们做的笔记,最初是为了我们自己,因为它们帮我们完成了许多任务,但并不应该只存在于我们的PC上。那些笔记也属于你的客户或雇主。他们为这些知识收集付费。每一个IT项目都需要一个知识库。我最喜欢的工具是wiki,它与每个GitHub项目都绑定。我已经使用这种策略许多年了,有许多次在上级管理人员向我或者我的团队问工作成果的时候,当他们听到(和看到)在wiki上共享知识的容量时都会感到很满意。
我同样认为,当我们明白了一件事情或者产生了一个有价值的想法时,我们需要对此继续跟进。或许是在一个GitHub wiki上。不论怎样,把它放在一个共享的资源上。如果我没有将那个想法放在一个共享的区域,我将它称作“丢失的情报”,因为我肯定不会再记得它,然后客户也不会从他们付费的脑力工作中受益。
结对
在我当前的项目中,我从Al那里接手管理9个(或者也许是一打)Rails应用。Al是SimpleThread的楷模之一。在我与Al的远程结对会议上,我感觉我就像是在开一辆福特Fairlane追着一辆兰博基尼。他转过屏幕,快速地描述流程,然后有时会暂停下来问“你明白了吗”,而我通常的回复是“明白了”。但是我真正得到的是一张屏幕截图和一些在我markdown格式的日记本上胡乱拼写的笔记。我的愿望是我能够从潜意识里就明白他说的内容。随后,当我像从Fairlane中爬出来一样歇一口气时,我一边回顾屏幕截图一边剪切和重新命名它们。然后我会创建一个文件夹,用一个描述那个流程的名字命名,再然后把屏幕截图放到这个文件夹里。我之后会浏览我的markdown,清理这些笔记,将它剪切并复制到公司的项目wiki上。在那个时候,我潜意识里通常才是最终“明白”了。同时,我还把知识进行了分类并编排了目录。
反思
我将反思作为文章结尾的副标题,而且觉得这是一个非常好的做法。文章总结通常是作者安排来强制你反思文章涵盖的信息。当你学习的时候放缓大脑,主动参与到这个过程中。仔细消化你获得的信息,将它转化成知识,并明白这些知识。做有创意的笔记,自己念叨着,看向窗户,仔细思考你阅读到或收听到的内容。把这些变成你自己的知识。虽然主动学习花费时间,但是我读一半的次数,就可以记得比别人两倍还多。在(阅读、倾听或者观看)过程结束之后要进行反思。并且随后温习你的笔记差不多5次。在书签、笔记软件和wikis上为你的知识编排目录,然后将那些目录当作知识的战利品。