如何进行倒序学习(以及为什么它能节省你的时间)
2016-02-17 米饭 看起来毫不费力
原作:Scott Young
今天我将教你们一种学习的方法,它源于一种软件开发的方式。或许有点奇怪,但我发现它对于学习时节省时间有效得难以置信。
-------------
有多少次你学会了某个东西,但是当你去考试时,它却彻底地难住了你?
这是一个我在很多学生连上看到过的普遍问题。幸运的是,它有一个极为简单的对策。但它涉及到要你逆着正常流程学习,所以只有很少人能利用它。
在我解释这个方法是什么值钱,我想告诉你我最初是怎么发现它的。不像我分享给你的其他战略,这个方法实际上不是作为一种解决学习问题的方法被创建出来的,而是用来开发软件。
软件的难点在于错误常常难于被侦测到。更糟的是,很多项目的代码量都巨大,常常有数百万行代码。然而只要一个程序员未曾预想到的很小的边缘情况就能摧毁完工的产品。
就像任何程序员都知道的,你的时间中很显著的一大块都花在调试错误【计算机术语称为bug,这个应该大多数读者都知道】上。有时调试bug会占据你时间的绝大部分,因为在一个复杂系统中要精确分理出来那个错误是很难的。由于调试bug的成本,很多程序员们使用的开发方法都不是用来解决问题,而是用来减少调试bug的负担。
其中一种减少调试bug的哲学被称为“测试驱动的开发”。
测试驱动的开发就是这样的流程:在你写代码和测试它之前,先创建一个你的程序必须通过的测试。如果你把这些测试做得足够周到,它就能确保你的代码在你第一次写它的时候就基本上没有bug。
这有一个示例就是编写一个给一副牌排序的程序。在你开始写分牌的代码之前,你可以先写代码用来检测分好后的牌的性质。你可以确保这个程序不曾遗漏或重复任何牌,并且能验证它们确实是按正确的顺序。
测试驱动的开发就像倒着写代码。你尚未创建出那个解决方案,但你先把验证它是否真的有用的代码写出来。
而它在程序员界的受欢迎程度表明,倒着做事情常常能免掉你以后的头疼。
那么这个跟学习有什么关系?
这里可以类推到“测试驱动的学习”。那意味着在你去上第一节课或是打开该课程的课本前,就先写一套(模拟的)期末试卷。
它意味着在读课文之前先做实践题目。它意味着在你学任何单词前就先尝试着说一种语言。它意味着在你练习一个技能前先试着应用它。
但是,你要怎么去使用你还没学会的东西?
在大多数情况下,你不能。做一份你从来没学过的课程的模拟试题,多半可能会得到一个糟糕透顶的分数。
然而,通过先做试题,你可以在去上课之前建立一个关于这些知识需要如何使用的精神评估。然后,一旦你在课堂上了,你就已经做好了准备,以那种可以帮助你再次做那份试题的方式来思考这些知识。
让我解释一下我是如何把这个方法用到我正在上的课程:神经医学( medical neuroscience)。
我已经学过很多种不同的科目。我大学时候学的是商科。在MIT挑战时我学了很多的数学、计算机科学和物理学。而我最近的项目都是关于学外语的。
但神经医学这门课是和我之前学过的东西都极为不同的一件事。
第一个部分是神经解剖学:需要知道几十个神经、细胞核还有皮质形态的名字和功能。非常与众不同的一次有趣的新挑战。
每当你开始一个像这样的新课程,难点在于很难确切知道你到底应该学些什么。对于这些信息,我需要了解细节到什么程度?什么样的问题有可能被问到?
解决方法很简单:先做试题。通过尝试在这部分课程前做测验,我可以挑出这个课程里最重要的元知识(meta-knowledge)。
例如在这个课堂上,我学习的很多问题都是围绕着假想出的病人组织出来的,他们可能有脑损伤,而你需要指出做哪些检查来定位受伤的位置。了解到它是如何被组织的,我就知道了在我上课的时候要特别关注功能和部位是如何联系的。
如果你没有渠道接触模拟试题或问题怎么办?
应用这个原则的最好情况是当你能轻易获取大量的练习题和测验资料时。那意味着它对标准化考试和课程是无价之宝。
不过,只需要一点点创造力,你就可以利用这个原则的修改版来学几乎任何东西。
例如,对于你想要使用的实践技能,你可以在你学习任何东西前先置身于使用环境。
例如,如果我在学一门外语,我或许会直接跳跃到以谷歌翻译作为辅助尝试对话。这让我看到这门语言中哪些种类的词语、表达和特点对我最重要,那样当我去学习的时候我可以深入学习正确的资料。
如果我在学习一个新的编程语言,我可能会直接去尝试写一个简单的程序。再一次的,前前后后地揣摩一段示例代码或者导论。
不像通常的测试情景,在那种情况下你得避免参阅任何帮助,而“测试先行”的学习则受益于回头查阅源头资料。
目标不是要尝试做某件你没还没学过的事情来为难死你,而是要让你在从事更多被动的讲座或者阅读前,更深入一些去探索问题。
现在就行动
如果你读到了这里,我想让你现在就采取行动。你现在或许并不在一个有时间做模拟试题或者实测你尚未学会的一项技能的处境下。但是你可以先做计划,这样你下一个要学的东西就能受益于这个方法。
这里是你需要做的事:
1. 挑选某个你将要学习的东西。它可以是一个课程的下一堂课,一个新的科目或者是一项技能。
2. 先决定你可以如何测试自己:有没有现成的练习题?如果没有,你能上网查到一些吗?如果它是一个实践性的技能,你能否找到一个场景可以让你自己置身于这个理论的应用中?
3. 承诺在你的下一个学习阶段之前花至少10分钟时间先实践再开始读或者听。
明天文章的主题是:我是如何在MIT挑战期间,每天保持8个小时以上的专注。
阅读 753 投诉
2016-02-17 米饭 看起来毫不费力
原作:Scott Young
今天我将教你们一种学习的方法,它源于一种软件开发的方式。或许有点奇怪,但我发现它对于学习时节省时间有效得难以置信。
-------------
有多少次你学会了某个东西,但是当你去考试时,它却彻底地难住了你?
这是一个我在很多学生连上看到过的普遍问题。幸运的是,它有一个极为简单的对策。但它涉及到要你逆着正常流程学习,所以只有很少人能利用它。
在我解释这个方法是什么值钱,我想告诉你我最初是怎么发现它的。不像我分享给你的其他战略,这个方法实际上不是作为一种解决学习问题的方法被创建出来的,而是用来开发软件。
软件的难点在于错误常常难于被侦测到。更糟的是,很多项目的代码量都巨大,常常有数百万行代码。然而只要一个程序员未曾预想到的很小的边缘情况就能摧毁完工的产品。
就像任何程序员都知道的,你的时间中很显著的一大块都花在调试错误【计算机术语称为bug,这个应该大多数读者都知道】上。有时调试bug会占据你时间的绝大部分,因为在一个复杂系统中要精确分理出来那个错误是很难的。由于调试bug的成本,很多程序员们使用的开发方法都不是用来解决问题,而是用来减少调试bug的负担。
其中一种减少调试bug的哲学被称为“测试驱动的开发”。
测试驱动的开发就是这样的流程:在你写代码和测试它之前,先创建一个你的程序必须通过的测试。如果你把这些测试做得足够周到,它就能确保你的代码在你第一次写它的时候就基本上没有bug。
这有一个示例就是编写一个给一副牌排序的程序。在你开始写分牌的代码之前,你可以先写代码用来检测分好后的牌的性质。你可以确保这个程序不曾遗漏或重复任何牌,并且能验证它们确实是按正确的顺序。
测试驱动的开发就像倒着写代码。你尚未创建出那个解决方案,但你先把验证它是否真的有用的代码写出来。
而它在程序员界的受欢迎程度表明,倒着做事情常常能免掉你以后的头疼。
那么这个跟学习有什么关系?
这里可以类推到“测试驱动的学习”。那意味着在你去上第一节课或是打开该课程的课本前,就先写一套(模拟的)期末试卷。
它意味着在读课文之前先做实践题目。它意味着在你学任何单词前就先尝试着说一种语言。它意味着在你练习一个技能前先试着应用它。
但是,你要怎么去使用你还没学会的东西?
在大多数情况下,你不能。做一份你从来没学过的课程的模拟试题,多半可能会得到一个糟糕透顶的分数。
然而,通过先做试题,你可以在去上课之前建立一个关于这些知识需要如何使用的精神评估。然后,一旦你在课堂上了,你就已经做好了准备,以那种可以帮助你再次做那份试题的方式来思考这些知识。
让我解释一下我是如何把这个方法用到我正在上的课程:神经医学( medical neuroscience)。
我已经学过很多种不同的科目。我大学时候学的是商科。在MIT挑战时我学了很多的数学、计算机科学和物理学。而我最近的项目都是关于学外语的。
但神经医学这门课是和我之前学过的东西都极为不同的一件事。
第一个部分是神经解剖学:需要知道几十个神经、细胞核还有皮质形态的名字和功能。非常与众不同的一次有趣的新挑战。
每当你开始一个像这样的新课程,难点在于很难确切知道你到底应该学些什么。对于这些信息,我需要了解细节到什么程度?什么样的问题有可能被问到?
解决方法很简单:先做试题。通过尝试在这部分课程前做测验,我可以挑出这个课程里最重要的元知识(meta-knowledge)。
例如在这个课堂上,我学习的很多问题都是围绕着假想出的病人组织出来的,他们可能有脑损伤,而你需要指出做哪些检查来定位受伤的位置。了解到它是如何被组织的,我就知道了在我上课的时候要特别关注功能和部位是如何联系的。
如果你没有渠道接触模拟试题或问题怎么办?
应用这个原则的最好情况是当你能轻易获取大量的练习题和测验资料时。那意味着它对标准化考试和课程是无价之宝。
不过,只需要一点点创造力,你就可以利用这个原则的修改版来学几乎任何东西。
例如,对于你想要使用的实践技能,你可以在你学习任何东西前先置身于使用环境。
例如,如果我在学一门外语,我或许会直接跳跃到以谷歌翻译作为辅助尝试对话。这让我看到这门语言中哪些种类的词语、表达和特点对我最重要,那样当我去学习的时候我可以深入学习正确的资料。
如果我在学习一个新的编程语言,我可能会直接去尝试写一个简单的程序。再一次的,前前后后地揣摩一段示例代码或者导论。
不像通常的测试情景,在那种情况下你得避免参阅任何帮助,而“测试先行”的学习则受益于回头查阅源头资料。
目标不是要尝试做某件你没还没学过的事情来为难死你,而是要让你在从事更多被动的讲座或者阅读前,更深入一些去探索问题。
现在就行动
如果你读到了这里,我想让你现在就采取行动。你现在或许并不在一个有时间做模拟试题或者实测你尚未学会的一项技能的处境下。但是你可以先做计划,这样你下一个要学的东西就能受益于这个方法。
这里是你需要做的事:
1. 挑选某个你将要学习的东西。它可以是一个课程的下一堂课,一个新的科目或者是一项技能。
2. 先决定你可以如何测试自己:有没有现成的练习题?如果没有,你能上网查到一些吗?如果它是一个实践性的技能,你能否找到一个场景可以让你自己置身于这个理论的应用中?
3. 承诺在你的下一个学习阶段之前花至少10分钟时间先实践再开始读或者听。
明天文章的主题是:我是如何在MIT挑战期间,每天保持8个小时以上的专注。
阅读 753 投诉