[译]新手/老手如何逃出教程的泥沼

4,408 阅读5分钟

曾有很长一段时间,我都没有开展我自己的项目,因为我不知道如何去动手。

每个我想做的项目里,都有诸多功能是我根本不知道如何去实现的。我总是问自己,对于根本不懂的东西,我该怎么下手呢?那时候我确信在做项目之前,我需要储备更多的知识。

欢迎来到教程地狱

因此,我深陷于“教程地狱”中,迟迟不能开展我的项目。我感觉我最好学得充分一些,于是我把能找到的所有感兴趣的、感觉终有一日能用上的教程都仔细学习了。我花了一个月又一个月,整晚看Youtube、Udemy等教学网站上海量的视频。在这个过程中,我学了好多知识,同时也忘了好多。

例如,最开始,我在Udemy上买了The Web Developer Bootcamp,这个课程的视频内容有43小时之长,内容涵盖HTML、CSS、Bootstrap、JavaScript以及jQuery。这门课程棒极了,但当我学完了,还是感觉所学内容不足以做项目。

然后,我又回过头来买了The Complete Web Developer Course 2.0,又看了30个小时的教学视频,视频内容跟第一门课几乎相同!

为何会犯这样的错误?说实话,看教程能给我安全感。有了教程,就有人能告诉你到底应该做什么。看完教程你会感觉自己肚子里有货,生产力爆棚。

但事实上,如果你只是为了学而一课又一课的过脑子,而不是用在的的项目里,那么可能你学到的东西比你以为的要少得多。

没有教学,就没有烦恼

最终我幡然醒悟,我得从看教程中停下来,跳出那个舒适区,开始动手操作,不去理会那些貌似为我量身定制的教程。

我决定搭建一个类似Stack Overflow的网站,支持用户注册、发表问题、回答问题、添加评论,甚至直接发表视频。

听起来像是个雄心勃勃的计划,但我先不管实现难度。我就是想直面挑战。我那时正学Ruby on Rails,还挺享受这个过程,因此我把Rails定为我的项目的框架。

当我开始做那第一个项目,我有那么多知识盲区(正如我开始每个项目的时候)。我不知道怎么实现授权系统、分页、在Rails应用里运用AJAX;我不知道怎么用递归实现评论系统。事实上,我连递归是什么都不知道!

就从你所知之处开始

但没关系,我不去想那些我无从下手之处。我会做什么,就先做什么,其余的部分见招拆招。

Google成了我最好的朋友,它带领我探寻Devise和oAuth Rails的瑰宝,我把二者结合来做授权系统。Devise使用户能够新建账户并登录;oAuth使用户可以选择用他们已有的Google账号或Facebook账号登录。

首先,我通过阅读文档学了一点Devise和oAuth,然后在Google上搜索如何将二者结合使用。我找到了这篇优秀文章,它一步一步地指导我操作,仅仅几个小时后,授权系统就成型了。

每当我卡在什么问题上,我都一头扎进Stack Overflow的问答中,搜索文章和教程来帮我解决问题。我还是会经常借助教程,但现在我仅从中学眼下要用到的知识点。

求助不可耻

极少情况下,当在网上找不到现成答案,我就在Stack Overflow上提问。不是所有问题都能得到完全适合的回答,例如这个,在跟嵌套评论死磕了无数小时后,我决定求助了。虽然网友给出的答案没有解决我的问题,但他们给了我灵感,帮我找到了解决方案。我学到了,在Stack Overflow上提问并没有想象中的可怕,毕竟每个人都有需要援手之时。

我第一个项目的代码不能算是优秀的代码,不符合DRY原则,需要重构。另外有些功能点我可以用更高效的方式实现。还有些用到的技术我还没完全理解。但没关系,我写出了能运行的程序,没有被一系列教程牵着走。

我在第一个项目里学到的东西比我之前一年里钻研教程学到的还多。最重要的是,我学到了成为开发者所需的技能。我教自己如何解决问题,如何妙用代码。第一次能把自己写的程序运行起来,那种强大的满足感让我很享受。有没有用户使用我不在乎,设计是否优秀我不在乎。重点在于,独立完成项目对我来说是质的转变。

你绝无可能会做所有事(没人能),你总会需要在互联网上查找信息(人人如此)。不要追逐教程,那会绊住你的手脚。