Book-note

如何学习

如何高效的学习纷繁复杂的计算机知识?

实践

  1. 在你阅读某个主题的书之前,大致浏览后就开始实践。不用担心自己是否知道自己在做什么。乐在其中,你就会发现随着自己的实验和探索,自己在哪些方面发现了问题。
  2. 一旦你已经实践过,并积累了各式各样的问题,立刻回到书本当中。当你回去重读这些参考资料的时候,你有强烈的冲动去消化吸收其中的内容。因为你已经积攒了很多想要找到答案的问题,你对哪些内容更重要早已了然于胸。
  3. 然后,你可以把自己学到的新知识重新应用于实践。看看你学到的新方法是否能解决你已有的问题。你可以继续探索新领域,发现需要解决的新问题。以解决实践过程中发现的问题为目标,在向着知识前进的道路上重复这个循环,周而复始。
  4. 最后,你可以将自己所学的打包教给别人。进行的一次对话,也可以是写一篇博客文章。关键在于,你要用自己的语言将这些信息组织起来,把你的思想表述给别人。

十步学习法

  1. 当拥有足够的时间,且没有一个真实具体的目标的时候,通读全书这种学习方法很好。
  2. 通常,并没有时间通读全书,而且书本里的很多内容更适合作为参考资料,而不适合实际学习。
  3. 先明确需要掌握哪些内容,再去寻找我能获得这些信息的最佳资源,同时也会忽略那些并非达成目标所必需的其他信息。

如何掌握一门新技术

  • 如何开始——要想开始使用自己所学的,我需要掌握哪些基本知识?
  • 学科范围——我现在学的东西有多宏大?我应该怎么做?在开始阶段,我不需要了解每个细节,但是如果我能对该学科的轮廓有大致的了解,那么将来我就能发现更多细节。
  • 基础知识——不止在开始阶段,要想使用一项特定的技术,我需要了解基本的用户案例和最常见的问题,也需要知道自己学的哪20%能满足80%的日常应用。

如果我了解三项主题——如何开始,我能做什么,以及相关基础知识,那么我就能随着学习深入学会所需的其他知识。如果我想提前掌握所有知识,那只是在浪费时间,因为真正重要的内容会湮没在那些细枝末节中。这种新方法能让我关注重点。当我确实需要了解更多细节时,我可以利用参考资料来弥补这些不足。有多少次你从头到尾仔细阅读一本技术书籍,却发现自己实际用到的也只是书里介绍的技术的一小部分?

“十步学习法”的基本思想:要对自己要学的内容有个基本的了解——了解自己不知道什么就足矣。然后,利用这些信息勾勒出学习的范围,即需要学哪些内容,以及学成之后又会获得什么。依靠这些知识,你可以找出各种资源(不局限于书)来帮助自己学习。最后,你可以创建自己的学习计划,列出要去学习哪些相关课程,筛选学习材料,只保留能帮助自己达成目标的优质内容。一旦完成这些工作,你对自己要学什么和怎样学都了然于胸,你就可以把控自己的学习计划中的每个关键点,通过“学习—实践—掌握—教授”(Learning, Doing, Learning and Teaching,LDLT)的过程,获得对该学科的深刻理解,同时你也向着自己的目标前进。 image.png

前期调研

确保自己明确知道要学哪些内容,以及如何确认自己已达成目标。你还将学到如何挑选最好的资源来帮自己实现目标、制订学习计划。

了解全局

要完成这一步,你需要对自己想要学的课题做一些基础性研究。通常你可以使用网络搜索来完成大部分研究。如果你碰巧有一本关于该主题的书,那么你就可以只读一下其中的介绍性章节,粗略浏览一下内容,但是不要在这一步上花费太多时间。记住,我们在这一步的目的不是要掌握该主题,只是对这一主题的相关内容有一个全局性的了解。

确定范围

学习范围务必大小适当,既能符合你的学习理由,又能符合你的时间限制。

对比

  • 学习C#:学习C#语言的基础知识,掌握如何创建一个简单的控制台程序。
  • 学习摄影:掌握针对人像拍摄的数码摄影知识。
  • 学习Linux:了解如何设置和安装Ubuntu Linux,以及如何使用它的基本特性。

定义目标

这一步的目标是形成一份简明清晰的陈述,勾勒出你勤奋学习后的成功图景。根据不同的学习内容,这份陈述也各不相同。但是要确保其中包含具体的成功标准,从而能让你用来充分评估自己是否已经达成学习目标。好的成功标准应该是具体的、无二义性的。不要对自己想要完成的任务进行含糊不清的描述。相反,要列出某一特定的结果,或者一旦实现自己所能达到的目标你应该能够做到的事情。下面展示了一些示例。

类别示例问题分析
不好的成功标准• 我可以用我的数码相机拍出好照片
• 我学习了关于C#语言的基础知识
• 我知道如何使用HTML去构建一个网页
• 标准过于模糊,无法客观衡量
• 缺乏具体的能力验证标准
• 没有明确的应用场景要求
好的成功标准• 我可以使用我的数码相机里的所有功能,能够清晰地描述这些功能是什么,并且知道何时何地使用各功能
• 我可以利用C#语言的主要功能写出一个小的应用程序
• 我可以使用HTML5在网上为我自己创建一个主页,展示我的简历和我的代表性工作
• 具体可衡量,有明确的能力验证
• 包含实际应用场景
• 展示深度理解和实际应用能力

寻找资源

在这一步中,你会想找到尽可能多的与自己所选主题相关的资源。此时你无须考虑这些资源的质量。这一步与头脑风暴类似。稍后你会对你找到的这些资源进行过滤,去伪存真,但是目前还是想先获得尽可能多的不同类型的资源。

学习信息来源

在寻找资源时,可以考虑以下多种信息来源:

  • 图书 - 系统化的知识体系和深度内容
  • 博客文章 - 实践经验和最新动态
  • 在线视频 - 可视化演示和实践指导
  • 专家/导师 - 个性化指导经验分享
  • 播客 - 轻松学习碎片化知识
  • 源代码 - 实际项目参考和学习
  • 示例项目 - 完整实践案例
  • 在线文档 - 官方参考资料

创建学习计划

在这一步,你需要创建自己的学习路径。把它看作自己写书时候的大纲。事实上,当你大功告成的时候,你会发现自己的学习路径可能与一本书的目录非常相似。你基本上就是完成一系列的模块,直到最后达成目标。

筛选资源

如何利用这些资源。很多数据都是冗余,并非所有资源都适合你的学习计划。为了研究一个主题要读10本书、50篇博客文章,并不现实,并且即使你真的这么做了,其中也有很大一部分是重复的。因此很有必要对现有资源进行筛选,从中选出最能帮助你实现自己的目标的资源。在这一步中,把你在第4步中收集的全部资源浏览一遍,找出哪些内容能够覆盖你的学习计划。你还应当看看评论,试着找出品质最高的资源。我在购书时,通常会浏览亚马逊上的评论,找出我认为最物超所值的一两本书。

开始学习

目标是通过“学习—实践—掌握—教授”(LDLT)的方式真正领会知识。你从掌握恰到好处可以开始的基础知识开始,然后通过操作来学习,同时也通过自我探索收集问题。之后,你掌握了足够多的有用的知识。最后,你能将自己学到的教给他人,以此来弥补自己在学习过程中的不足,同时通过深入思考巩固知识。

浅尝辄止

在这一步中,你的目标是获得足够多的与所学主题相关的信息,从而能让你开始学习,并在下一步中动手操作。对于编程语言或框架这样的技术,这一步还包括掌握如何创建一个基本的“Hello, world!”程序,或者设置自己的开发环境。

这一步的关键在于过犹不及。你会很容易就失去自控力,开始消化计划学习中列出的所有资源。但是,你会发现,如果你能经受住这样的诱惑,你会取得更大的成就。你要专注于掌握自己所需的、能在下一步动手操作的最小量的知识。你可以浏览参考材料,或者每章的摘要,或者各种简介,这些信息足以让你对自己要做什么有基本的认识。

动手操作,边玩边学

你无须提前了解全部内容,你要做的首要的一件事情就是亲自操作和亲身体验。采用这种方法,你通过探索和实践进行学习。在操作的过程中,你的大脑自然地产生各种问题:它是如何工作的?如果我这么做,会发生什么?我该如何解决这个问题?这些问题引导着你走向真正重要的方向。当回过头寻找问题的答案的时,不只是这些问题迎刃而解,而且你记得的东西比你学习的东西要多得多,因为你所学到的都是对你很重要的东西。

全面掌握,学以致用

利用先前收集到的所有资料,进行深入学习。为了有效利用自己选择的资料,为上一步产生的问题寻求答案,阅读文字、观看视频、与他人交流都是必要手段。这能让你沉浸在学习材料中,尽可能地汲取知识。

不要害怕回头再去操作,付出更多,因为这不仅能让你找到问题的答案,也能让你学到新东西。给自己足够多的时间去深入理解自己的主题,你可以阅读,可以实验,可以观察,也可以操作。

不过请记住,你依然没有必要把收集到的所有资料全部仔细看一遍。你只需要阅读或观看与当前所学相关的部分。我们很少能有足够的时间把一本书从头读到尾。这些资料只是帮你自学,基本上你可以以解决在动手操作中发现的问题为主要目的。

最后,千万不要忘了,你在第3步中定义的成功标准。试着把自己正在学习的内容与最终目标关联起来。你掌握的每个模块,都应该以某种方式推动你向着终极目标前进。

乐为人师,融会贯通

本杰明-富兰克林

你告诉我的,我都忘了。你教会我的,我都记得。让我乐在其中,我就一定能学会。

在这一步中,我会要求你走出自己的舒适区,将自己学到的知识教给别人。要想确定你确实掌握了某些知识,这是唯一的办法;同时,在你将自己所学介绍给他人时,这也是查缺补漏的好办法。在这一过程中,你要切实剖析并理解自己所学的知识,将其内化到自己的思想;同时,你也要用能够让他人理解的方式精心组织这些信息。 你可以用多种方式将自己所学教给他人。你可以写博客,也可以制作YouTube视频。你也可以跟自己的爱人探讨,将自己所学解释给他/她。重点在于,你要花时间将自己学到的东西从大脑中提取出来,以别人能够理解的方式组织起来。在经历了整个这个过程之后你会发现,有很多你以为自己明白了的知识点,其实并没有摸透。于是你会将那些以前自己没太明白的东西联系起来,并且简化自己大脑中已有的信息,将它们浓缩并经常复习。

教授知识的途径

  • 撰写博客文章。
  • 创建YouTube视频教程。
  • 发表演讲。
  • 与朋友或爱人进行对话探讨。
  • 在在线论坛上回答问题。

如何寻找导师

寻找导师检查清单

  • 他们做到了我想要去做的?
  • 他们曾经帮助他人做到了我想做的?
  • 他们现在取得了什么可以展示的成就?
  • 你能和这个人和睦相处?他充满智慧吗?

一定要有耐心!大部分人在第一次听到“不”的时候就止步不前。别做这样的人。恰恰相反,要做一个别人用棍子赶才能赶走的人——即便如此,过一会儿也还要回来。你的坚持不懈不会总有回报,但是你可能会惊讶地发现回报来得很频繁。你只要确保自己求教的方式足够有礼貌。显然,不要做会让人感到不舒服的事情,或以趾高气扬或咄咄逼人的方式行事。

在寻找导师之前,你必须要明确,你需要导师帮你解决什么问题。坐下来,仔细想想你为什么需要一位导师,你希望从这段师徒经历中获得什么。

短板

发现短板

知识短板会阻碍你进步。准确识别它们的最佳方式之一就是看看自己在哪些工作上花费了大量的时间,或者一直进行重复性劳动。通常,你会发现,自己的知识短板使工作速度放缓,额外需要大量的时间完成任务。由于理解得不彻底,你只能摸索着前进。

重复性工作也是如此。任何你所做的重复性工作都值得彻查一番,看看是否有自己不理解的地方,如果你这样做了,可能会提高你的工作效率。想想键盘快捷键。你一直重复使用某个应用,但是并没那么高效,原因是你不得不手动在屏幕上拖曳鼠标并点击。键盘快捷键可能就是你的知识短板。花点儿时间学习每天会用几个小时的应用(提示:你的IDE编程环境)的快捷键,一周能给你节约好几个小时的时间。

另一种识别知识短板的方法就是,时刻都要试图了解自己不理解或不清楚的事物。你可以维护一份清单,列出自己需要去研究或者自己不清楚的所有事物,追踪有哪些主题总是不断出现在这个清单上。你会惊讶地发现这份清单的增长速度有多快。你只要对自己坦诚:如果遇到不理解的知识,不需要马上就学会,但是一定要把它添加到清单中,这样你至少可以找出自己的知识短板。

假如你在准备面试,需要明确自己要学什么,这一方法最管用。尽量找出尽可能多的你在面试中可能会被问到的问题。如果你在找Java程序员的工作,你要整理出一份Java面试题的清单表,把所有题目做一遍,将自己不理解的概念和不会回答的问题整理到这个清单中。等你完成这一步,你就有了一份长长的待研究课题清单。这种方法看起来简单明了,但是很多准备面试的软件开发人员对要研究什么以及如何研究一头雾水。

检查知识短板

  • 在哪些工作上花费时间最多。
  • 可以改进的重复性劳动。
  • 自己没有完全理解的东西。
  • 你回答不出来的面试题。
This post is licensed under https://creativecommons.org/licenses/by/4.0/ by the author.

Trending Tags