该文章的学习方法来自John Z. Sonmez的书《Soft Skills:The software developer’s life manual》
教育的目的不是简单传授知识而是去实践,去学以致用。要能够体会到学习的快感,在玩的过程中发现问题,通过查找资料解决问题,进而通过传授知识来巩固所学。
对程序员来说,自学的能力是很重要的,在开始学习一门技术之前要清楚这三个问题:
- 如何开始——利用已学知识去发掘开始学习新技术所要掌握的基础知识
- 课题的宽度——要对所学新技术有一个概要了解,不需要搞懂细节知识
- 基础知识——使用这门技术能够完成什么案例以及清楚该门技术的基础知识,掌握20%的基础知识来应对80%的应用
上述方法的应用:学习Go语言
- 专注于用Go语言编写代码
- 掌握Go语言的使用范围以及能够使用的各种库
- 需要深入了解Go语言时来学习基础知识
解决上述三个问题不是一件简单的事情,这时候黄金10步法登场。
Step1:Get the big picture(描绘课题蓝图)
Q:大多数开发者在不了解所不知道的东西时就迫切地打开一本书开始阅读,就会出现这种问题:很可能学到错误的知识或者将所学的知识付诸脑后。所以要搞清楚自己不懂的地方在哪里,清楚自己要学习什么。
A:假设学习数码摄影这门技术,你就可以在网上搜索与数码摄影相关的一切知识,浏览关于此的博客和文章,碰巧有相关书籍,你就可以看一下目录和前面介绍的章节,这样几个小时后你就会在大脑里形成一幅关于所学技术课题的蓝图,并且清楚和此相关的一些子课题。(在这一块不要花费太多时间,此阶段不是学习技术而是去构建一幅学习蓝图)
Step2:Detemine scope(决定范围,抓重心)
Q:这个阶段你已经清楚所学技术的蓝图,是时候该缩减学习的范围了。
A:依旧以学习数码摄影这门技术为例,你不可能在有限的时间内学习所有的关于该技术的知识 ,所以要决定学习的范围,比如你想学习如何拍摄肖像照片,这就是你要学习的范围。要用上一步收集的知识来将学习的范围缩减至某一个中心上来,这样更容易安排学习。如下表所示,将原始学习范围缩减至合理的学习范围,让学习目标变得更加清晰、具体和容易实现。通过描述学习达到的目标来缩减学习范围。缩减学习范围能让你在有限的时间内完成你的目标。
原始学习范围 | 合理的学习范围 |
学习C# | 学习所需的C#基础,能够创建一个简单的控制程序 |
学习拍摄 | 学习数码摄影,能够掌握拍摄肖像照片 |
学习Linux | 学习如何搭建和安装Ubantu Linux,能够使用其基础功能 |
Step3:Define success(定义成功,制定目标标准)
Q:不清楚成功的样子,很难知道你将要达到的目标。在你开始学习任何知识时,你要在大脑中形成一个清晰的目标。有了目标,这样你才会更容易地朝着目标前进以及决定你需要付出努力地方向。
A:仍然以学习数码摄影这门技术为例,好的成功标准是:学习使用数相机的所有功能,并且能够描述它们,掌握为什么以及何时使用这些功能。这一步的目标就是找到你的学习目标的成功标准。好的成功标准是具体的,是能够评估的标准,而不是模棱两可的。列出你达到目标后的结果。下表是例子。
不良成功标准 | 优秀的成功标准 |
使用数码相机拍一张好的照片 | 学习使用数相机的所有功能。并且能够描述它们,掌握为什么以及何时使用这些功能 |
学习C#基础 | 使用C#构建一个能够利用该语言重要功能的小程序 |
知道如何用HTML构建网页 | 搭建一个能够展示自己简历和样式的网页 |
Step4:Find resources(查找资源,寻找资料)
Q:回忆高中写作文的场景,如果你写作文的素材仅仅来源一份资料,试想你写出的作文是什么水平的?片面!
A:继续用数码摄影的例子。你可能开始浏览相机使用手册,但是你绝不会只看这一份资料。你可以浏览不同的网站来查找数码摄影的资料,甚至查找你使用的品牌数码相机的资料。你还可以在亚马逊上查找相关书籍,或者咨询相关专家给出建议。不要简单地涉猎一本书,要尽可能的广泛收集与课题相关的多种形式的资料。先不要担心查到的资料的品质,这一步相当于大脑风暴,稍后你会筛选出较好的资料来学习。资源的形式如下所述。
- 书本
- 博客
- 在线视频
- 专家
- 音频
- 源代码
- 项目例子
- 在线文档
Step5:Create a learning plan(制定学习计划,规划学习路线)
Q:书本内容都会拆分为章节来叙述,章节之间通常是递进的关系!好的教科书会在每一个子章节中做好知识的铺垫。现在你已收集了很多资源,是时候该理清学习什么,为学习资料排一下序(优先级)。对于大多数课题,都会有一个自然的学习层级。从A到B最后到Z。你需要找到一条正确的学习路线。在有限的时间内掌握每一个重要的知识点。
A:制定优秀学习计划的方法是:观察别人是如何教授你要学的课题。你可以对比上一步中你确定的几本书的大纲目录,如果5个不同的作者将你所要学的课题内容分割为相同的模块和相同的学习顺序,你就可以遵从这种方式来制定你的学习计划。当然,这不意味着你复制粘贴别人的内容,很多书覆盖的内容超过你的学习目标,也有很多书组织混乱不堪。所以,你需要依据你收集的所有资料得出一个内容全貌和学习顺序。
Step6:Filter resources(筛选资源)
Q:现在你知道你要学习什么以及学习的顺序,是时候决定用哪些资料来完成你的目标。削减第四步中的搜集的学习资料来适应第五步的目标。
A:这时候你拥有大量的关于数码摄影的书本、博客和其他形式的资源。但问题是你不可能利用完。很多资料涵盖的知识时冗余的,也不是所有的资料都适合你的学习计划。想象你是校队的教练,你想让所有的成员上场是不可能的,必须要找出合适数量的队员组成上场校队。可以通过看别人的评论来筛选出最好的资源。比如浏览亚马逊上的书评。将购买的书本数量限制到1到2本。
至此,你已经完成了学习计划的第一个模块。这6步只需要做一次即可。接下来就是要重复步骤7-10来完成你的学习目标。
PS:
如果你要学习的知识很少,仍旧套用这个法则,你的获益会很少。
如果你仅仅读了这些步骤而不去实践,这对你不会有太多好处。
Step7:Learning enough to get started(适学始行)
Q:生活中存在两种错误的学习方式,其一是没有学太多就开始行动了,属于行动过早型;其二是准备地太充分才开始行动,属于行动过晚型。因此要平衡好二者,学的足够了就开始行动吧。
A:这一步的目标是得到足够的关于学习课题的资料,进而开始行动进行下一步。对于学习编程语言的人来说,这一步的目的是搭建开发环境,创建基础的“Hello,world!”程序。注意这一步不要太深入其中。专注于用少量学习来开始行动。在下一步进行更多的探索。就像过去玩的插卡游戏机,简单的熟悉一下操作就开始探索关卡了,而不是去仔细的研究游戏手册。现在,学习够了基础知识,就开始行动吧!
Step8:Play around(四处探索,乐在其中)
Q:大多数人通过阅读一本书或者观看视频资料来学习一门新的课程,他们吸收足够的信息来准备开始。这个方法的问题在于读者在复制他人的学习路线,很难把握所学知识的重点。
A:拿数码摄影为例。假设你在研究光如何影响数码摄影,这时你就可能是在室外开始调节不同的光的强度去影响拍摄的效果。但是你并不知道为什么会造成不同的拍摄效果?在这期间你通过探索来学习,并心中存疑。这一步重要的就是去探索,去体验。如果是学习一门编程语言,这一步你需要完成一个小项目的开发,然后去测试其功能。
Step9:Learn enough to do something useful(做有意义的事)
Q:好奇心对学习来说是一个重要的组成成分,特别是对于自学来讲。孩童时,我们对世界的好奇心很大,随着年龄的增加,好奇心慢慢地趋于消失。这一步就是带着好奇心去学习,在上一步中你心中存疑,这一步就要去通过步骤4中的各种学习方式去解决。(这个阐述在朱光潜的《谈读书》一文中也有讲到,建议看一下)
A:还是回到数码摄影这个例子上来,你研究了光的强度对摄影的影响,就会提出为什么会这样,其中的原理是什么?带着这样的问题去找资料,这也是你深入研究资料的机会,尽可能的多学点。不要害怕会有很多问题,更不要担心自己在学习中又遇到新的课题去学。这一步就是要花费足够的时间通过阅读、实验、观看和实践彻底地搞懂研究课题的问题。当然,也不需要完全的利用完你收集的资料,只需要阅读和你研究相关的资料。让问题驱动你去自学搜集的资源。也别忘了你在步骤3中定义的成功的标准,时刻与你要实现最终的目标匹配。你掌握的每一个模块在某种程度上都会让你朝最后的目的地前进。
Step10:Teach(传授)
Q:引用美国政治家、物理学家富兰克林的一句名言—— 告诉我,我会忘记;教给我,我会记住;让我实践,我才能学会。大多数人害怕教别人,会自我怀疑传授自己所知或者自认为自己所知的知识对别人是否有意义。如果你想学的更加深入,传授是不二法门。(这一步是不能跳过的)
A:如果你教别人学习光的强度是如何影响数码拍摄的。你可以制作一个在不同光源时拍摄的实验的视频。或者简单地向别人阐述你所学的知识。要走出自己的舒适区去教别人。你在传授的过程会真正的剖析和理解所学知识,会发现有很多你认为你已经理解了其实并未理解的问题。传授知识的方式有多种,如下描述。
- 写一篇博客
- 拍摄视频
- 演讲
- 交流
- 在线回答问题(论坛)
结束语:
- 自学能力的培养需要花费时间和精力,但获得的能力会让你收获颇丰。这10步不是一个会让你立马变得聪明的魔法公式,但是会在你全身心投入研究之前帮你体验有组织的学习过程,并且利用天然好奇心的机理驱动你吸收掌握更多所学知识。
- 如果这个过程中的步骤对你没有效果,或者你觉得这种形式没必要,尽管将其束之高阁。步骤不重要,重要的是形成一个你能够自学的体系——不断得到回馈的体系。
- 如果你觉得有用,尽情地使用,有可能的话通过修改来更加地适应你的学习方式。