[https://medium.com/learning-new-stuff/a-simple-technique-to-learn-hard-stuff-ffaa7879bf7c#.k6gud0wqq]
在过去几年,我花费了很多时间教自己web开发和机器学习。
虽然主题有所不同——从Javascript,Node和React到Python,Scikit Learn和神经网络——但我的学习方法一直保持不变。
尽管只是一个简单(几乎老套)的三步方法,它是帮助我在5个月内从业余爱好者变成专业web开发人员的关键。
因此我决定写一篇关于它的文章,如果有其他人会觉得很有用。
我写下这篇文章,就像能够把它发给2012年的自己,我希望在开始着手学习时能对这一切有一个更明晰的视图。
第一步:在了解之前使用
学习一种新技术所需的第一步很简单,在你了解它之前就开始使用它,这是一种比首先试图理解它好很多的方法。
然而,由于对这个主题没有任何了解,你没办法自己去做这件事。
你所需要的是一个有人指导你开发一个小小虚拟产品的视频教程。寻找教程中创建者的每一行代码,包括安装,在观看视频的同时编程。确保你也能运行该项目,以及过程中的每一步。
10分钟的视频预计需要一个小时才能完成。
此外,一个YouTube上好的业余指导往往比公开课更合适,在这里,公开课可能太过详尽。
与这一步相反的是阅读有关该主题的理论。这对我永远没效果,因为我觉得这样太无聊,而且即使是初学者的书也过于注重细节。因此我在起步时坚决远离书籍和文献。
当学习选择的视频教程时,你总是会不明白在做什么,这很令人不快。尽量不要太担心这个。如果你不理解某些东西,写下来并为第二步保存起来。
这一步的全部意义在于不管你的迷惑和缺乏了解,将教程坚持到底。
听我说,以这种方式开始的优势多于不利因素:
- 从第一天开始开发
首先,你确实从第一天就开始创造东西,这比阅读理论更有收获。而且你越享受某件事越容易坚持下去。
我的第一个Node.js服务器,我曾无数次回顾它
- 提供示例代码
另外,它为你提供了用于学习过程中稍后阶段回顾的示例代码,这非常有用。
我总是多次回顾示例代码更新我的记忆,每次都对主题有更好的理解。
3.发现未知的未知
我还发觉,这是发现该领域中需要集中精力之处最快的方式。
看,在开始之前,你甚至不知道你不知道什么,所以根本无从了解将要和该技术的哪些部分斗争,因此需要额外的注意力。你想要尽快发现这些信息,因为它们是你需要清理的路障。
这里是一些我在不同主题中用来启动学习过程的课程:
- Sentdx:Machine learning for investing(机器学习)
- Egghead.io:React Fundamentals(React.js)
- Justin Mitchel:Coding for Entrepreneurs(Django)
第二步:解决你的斗争
经过在第一步中的一个或几个教程,你将会对主题有一点点的深入洞察——对其工作方式的大致了解。但是你很可能非常迷茫。现在是时候找到解决这些迷茫的来源了。
如果你在学习React.js,state和props之间的区别可能是你要彻底研究的问题(可以在这里找到答案)。
在这里,我真的没有任何特定格式可以推荐。你基本上需要找到在该情况下有用的任何资源,无论是书籍、官方文档、Stack Overflow或者别的什么。
如果是一个非常困难的主题,你应该找到多个来源以帮助理解得更准确。
或者,你可能意识到需要后退一步,提高一些基础技巧,因为它们还没有足够强大。
上一次这种情况发生在我身上是在教自己如何编写神经网络的代码时。在参加了一门Coursera课程后,我发现我需要在理解整个神经网络之前先理解logistic回归。因此我回去从零开始完成一个logistic回归,然后继续神经网络。这一次轻松多了。
第三步:开发产品
虽然第一步和第二步是极其关键的,但它们实际上只是到达这一步的垫脚石,学习一门新技术的原因是因此你可以用它开发产品,这正是现在要做的。
一旦你觉得能够开发出自己的产品,就应该去用这种方法做。
为什么?因为这是真正的学习实际上发生的地方。
你从未真正开始学习这门技术,直到开始用它开发产品。
你可以欺骗自己已经通过了第一步和第二步,但是在这一步不可能(因为你是在自己开发它,而不是仅仅复制粘贴代码)。
有个好主意是尝试开发你喜欢的产品。学习HTML和CSS,而且正好喜欢红酒?那编写一个红酒品鉴网站的原型吧!或者你是个正在努力学习机器学习的医生?找个健康数据集来玩玩!
这里有一些我初次开发的项目。我并不以其中任何一个为傲,但是我从中学到了非常多。
- Ajax——The Guardian API
- React——Note Taking App
- 神经网络——Prediction College Admissions
最后,我想指出这三个步骤可能彼此相融合,而且可能不会看起来像这篇文章中这样线性发生。
虽然我总是以第一步开始,第三步结束,但我倾向于在学习的过程中来回跳转。
重点是在学习新技能时,它们同样重要。