让我们一起通过三个步骤来获得一个新的超能力。
在过去几年我已经花了很多时间来教我自已web 开发和机器学习。
虽然学习的科目有很多不同之处——从 Javascript、Node和React到Python、 Scikit 学习和神经网络——我的学习方法却一直没变。
虽然我的方法只是一个简单的 (几乎陈腐的) 三步技巧,但它已经成为我在 5个月内从业余人员成长到专业Web开发人员的关键。
所以我决定就我的方法写点什么,以防其他人也会觉得我的方法很有用。
我写这篇文章的时候就好像准备将它发给2012年的自己,因为我希望当我开始写这篇文章能有对这个方法更清晰的见解。
第1步: 在理解之前先去使用
当你需要学习一种新技术的时候,第一步就是要在你理解它之前,简单地开始使用它,这是比试图第一次就去理解它更好的方法。
然而,当你对这一门技术还什么都懂的时候,你不能只凭自己一个人。
比如Justin Mitchel的Django课程就是一个完美的 '在理解前先做' 式的教程。
你所需要的是一个有人引导你去搭建一个笨拙的小成果的视频教程。去找那些讲师会一行一行地讲解代码的教程,包括安装程序,并看着视频自己打代码。请确保你能够运行该项目,以及过程里的每一步。
10分钟左右的视频应该期望在1小时内能够掌握。
此外,一个好的youtube上的业余教学视频往往比网上公开课视频的效果要好,后者在这个阶段可能显得太详尽了。
与这一步骤相反的做法会是先阅读关于这门科目的理论。这个方法一直对我不起作用,因为我很快会感到太无聊,并且觉得即使是初学者的书籍都讲得太详细。所以我在起步的时候坚决远离书籍和文献类的东西。
当你在学习你所选择的视频教程时,你总是会不明白你在做什么,这可能会令你不快。尽量不要太担心这个。如果遇到你不懂的东西,记下来并保留到第2步。
这一步的主要目的是将教程学一遍,暂时忽略你的困惑和无法理解。
你要明白,以这种方式开始学习的好处要比坏处多:
(1)从第一天就开使有所产出
首先,你从第一天开始就在实际创造东西,这是比阅读理论更有收获的事情。并且如果你越喜欢某个东西,就越容易坚持下去。
我第一次过用Node.js写的服务器,我好像已经引用过无数次了哈。
(2)拥有了范例代码
另外,这个过程你得到的范例代码可以在你的学习过程中不时回头参考,这对以后的学习阶段是非常有用的。
我经常多次重看我 以前的范例代码,刷新我对知识的记忆;每次都能对这门学科有更深入的理解。
(3)找到你未意识到的未知
我从中也发现这是最快的发现你在哪个领域,需要努力专注的方法。
你也明白的,在开始之前,你甚至不知道你不知道什么,所以你根本无从知道哪一块技术可能会让你纠结挣扎并需要更多注意力。你会想要尽快发现这些信息,因为它们是你走出去路上的路障。
以下是在几个学科上帮助我快速启动学习过程的教程:
Sentdex: 机器学习投资 (ML)
Egghead.io: 反应原理 (React.js)
Justin Mitchel: 企业家学编程 (Django)
第2步: 消除你的内心挣扎
经过步骤 1 中的一个或多个教程,你对学科主题已经有一丁点的深入——大致了解了它是如何工作。但是你很可能非常困惑。现在是时候去找找解决这些困惑的资源。
如果你在学习 React.js,medium上的相关文章可能是你能正确查到状态和属性之间区别的地方 (顺便说下在我这篇文章里你是搞不清楚的)。
在这篇文章里,我没有任何特定的格式推荐。你基本上只需要找到适合解决你的问题的任意来源,无论是书籍、 官方文档、 Stackoverflow或者别的资源。
如果是非常艰深的学科,你应该多找一些资源,以帮助你理解得足够准确。
或者,你可能意识到你需要后退一步,提高一些基本的技巧,如果它们还不足够强大的话。
最近一次我这样做是当我教自己如何编写神经网的代码时。在学习了Coursera课程后,我意识到我需要能够理解逻辑回归,在那之后我才能理解整个神经网络。所以我回去,从零开始学习了逻辑回归,然后继续学习神经网络的后续内容。这一次便轻松了很多。
第3步: 产出成果
虽然步骤1和2是绝对重要的,但他们实际上只是你的垫脚石,以使你到达这个阶段,一般来说你想要学习一项新技术的原因就是你可以因此使用它来创造成果,也就是你这个阶段应该做的事情。
为什么呢?因为这才是真正的学习发生的地方。
除非你真的开始用技术来创造成果,不然你其实根本不需要学习它。
你可以在第一第二阶段蒙混过关,但是你没办法这样度过这个阶段(前提是你确实独立创造,而不是复制粘贴代码)。
有一个好主意是,努力创造些你怀有激情的东西。你是不是学了html和css并且刚好热爱酒?那就编程创造一个品酒网站的原型!或者你是个想试着学习ML的医生?那就找一个有关健康的数据集去折腾吧。
这里有一些我构建的初始项目。我并不为它们感到骄傲,但是我从中真的学到很多很多。
Ajax — The Guardian API
React — Note Taking App
Neural Networks — Predictiong College Admissions
这是我的第一个ajax项目,它是我和我的founders&coders团队在2014年初构建的。
总结
最后,我想指出这三个学习阶段可能是相互融合的,并不像这篇文章里看起来那样线性地发生。
虽说我的学习总会是以第一阶段开始,以第三阶段结束,我还是倾向于在学习过程的中间重复一些阶段。
关键只在于在学习新技能的时候,这三个阶段是同样重要的组成部分。
祝好运!