我从Coursera的“学习方法”中学到了什么

我如何使用Coursera课程中的学习技巧成为更好的开发人员

我从事软件开发工作已有4年多了,如果有一件事情从未改变过,那就是它总是在变化。 总是有新的东西要学习。 我喜欢那部分。 学习是目的地。

因此,当我在Coursera上看到一门名为“ 学习如何学习”的课程时,我抓住了向学术专家学习的机会,这些专家是来自加利福尼亚大学圣地亚哥分校的Barbara Oakley博士和Terrence Sejnowski博士。

这是本课程的主要收获,可帮助我成为更好的开发人员,并且总体上来说,也是更好的学习者。

“聚焦”和“扩散”模式

在学习时,有时您会专注于某些事情,有时您会让您的思想漂移。 这种无焦点或分散的模式与使您的大脑学习某些东西的聚焦模式一样有价值。 因此,请稍事休息,打坐,思考其他事情,并在两种方式下给自己充裕的时间

确保定期休息的一种方法是采用Pomodoro技术。 在这里进行25分钟的编程,然后休息5分钟。 上班时间和休息时间可能会根据最适合您的时间而有所不同。 重要的是您要定期休息。 那里有几个应用程序可以帮助您设置番茄钟。 我用番茄时间。

块状

这是将您想要学习的内容分解为概念的想法。 目的是学习每个概念,使它们每个都像众所周知的拼图一样。 为了掌握一个概念,您不仅需要了解它,而且还需要知道如何适应更大的前景。

熟练的大块构成了一个完整的难题(左)与学习过的难题相比,但不是熟练的大块则无法容纳一个更大的难题(右)

奥克利(Oakley)博士提出了一个循序渐进的学习过程。 首先, 调查和准备工作 –例如,这涉及到扫描书籍或课程提纲,以获得对总体情况的总体了解。 其次, 观察一个例子 。 然后, 自己动手。 最后, 在不同的环境中一次又一次地执行此操作

所以-假设我正在尝试学习React,我很幸运地找到了Tyler McGinnis的很棒的React.js程序课程。 为了应用建议的过程,我将首先查看本课程中的所有单元,以期全面了解所涵盖的主题。 然后,随着Tyler构建示例应用程序,我将密切关注。 之后,我将构建自己的应用程序。 最后,我会将这些经验应用于我们在工作中用React开发的新功能。

提防能力错觉

我们可以通过多种方式使自己感到自己已经“学习了一个概念。 例如,查看解决方案并认为自己知道如何实现该解决方案是学习能力中最常见的幻觉之一。 强调或强调也是经常导致这种学习幻想的技术。 另一方面, 概述关键概念的简短注释要有效得多

最近,我发现了一个名为Highly的出色应用程序(您应该使用它!)。 它们使使用Chrome扩展程序突出显示我正在网上阅读的任何文章变得非常简单。 当我阅读完并突出显示一篇文章后,它提供了我所有突出显示的内容的美丽摘要。 这对我非常有用。

我会尽量保留我强调的内容。 外卖越少,我实际上将其带走的可能性就越大。 这与下一点紧密联系…

召回

Oakley博士指出了Jeff Karpicke博士对检索实践的研究,以在花费几分钟来总结或回忆您尝试学习的材料后提供科学支持。 从短期记忆到长期学习要走很长一段路。 即使在不同的物理环境中回忆材料,也可以帮助您独立于大脑可能具有的任何物理提示来掌握材料。

因此,在阅读完本文(或任何文章)之后,请花点时间尝试说明您从该文章中所记得的内容。 它会走很长一段路。

咬合大小的测试

为了避免或突破能力幻想, 您在遇到新材料时应进行自我测试 。 召回是此迷你测试的一个简单示例。

通过这些测试而不犯任何错误并不重要。 错误(并纠正这些错误)是巩固学习的重要一步。

过度学习

经过长时间的学习……

在这一点上,主要的收获是不要花太多时间一次又一次地翻阅相同的材料。 收益递减定律当然适用。 把它散布在许多环节和许多不同的学习模式中

我一直在尝试每天留出30–60分钟的时间来处理我尝试学习或更深入学习的每件事。 这不仅可以更好地进行持久学习,而且我还觉得说要在X上进行30分钟的工作更容易实现。

交织

一旦您对尝试学习的内容有了基本的了解,就可以使用交织来帮助您掌握概念。 通过练习在需要不同技术的问题之间来回跳动,可以通过学习如何选择在各种情况下应用它们来巩固对概念的理解。 知道何时应用特定概念与知道如何应用同样重要

我还没有刻意应用这种技术,但是,回到前面学习React的例子中,我可以通过有两个不同的项目(其中我正在应用React和Flux架构)来应用交错技术。

产品处理

面对拖延症时,请考虑对产品的处理。 当我对“好吧,我必须完成X”的想法不知所措时,我常常会拖延。 相反, 思考一下“好吧,我将花一个小时花在X上”可能是有益的,这不会使人感到压倒,也不需要长时间的任务分解就可以让我开始(90%的战斗)。

隐喻与类比

隐喻和类比经常被认为是有用的学习技术。 就我个人而言,我从来没有过多使用它们。 但是,当我遇到更多的人和更多的老师/导师时,我发现最好的人在交流时总是会使用它们。 能够交流您所学的知识是使优秀开发人员与优秀开发人员(IMHO)脱颖而出的主要技能之一。

因此,请尝试着刻意向他人传授所学知识 ,这样做可能会迫使您用相关的隐喻和类比来解释概念。

在软件开发的日常实践中,有很多机会可以教别人。 您可以配对程序,对拉取请求进行注释,注册以给出有关特定主题的代码讨论以及博客! 做所有这些事情。 我知道我想

研究小组/团队合作

这对我来说并不陌生,事实证明,这对于保持持续的进步和相互追究责任最有益。 但是,重要的是要包括在此列表中,并注意找到合适的组是关键。

在工作中,我很幸运有很多内部小组:技术书籍俱乐部(目前正在阅读实用程序员),开源俱乐部,文化俱乐部,长生不老药小组,可能还有其他一些小组。 但是,有几个很棒的社区可以在纽约市和在线上见面并一起学习!

无论您在什么地方学习, 都不必独自学习 。 实际上,正是与您一起学习的人的独特性以及在一起进行的讨论才使您所学的内容刻骨铭心。