如何逃离教程炼狱
注:这是一篇转载文章。如果您有兴趣,可以在我的开发者博客上查看原文。
我们都经历过这种阶段:你跟着教程一个接一个地学习,希望能从中获得一些成就感或满足感,成为一名开发者。然而,你最终却感到空虚——渴望找到一些真正能让你大展身手的实战项目。但你始终找不到。你找到的只有一种生存焦虑:我真的适合做开发者吗?我什么时候才能真正成为一名合格的开发者?
欢迎来到教程炼狱,朋友。这有点像被锁在柱子上——你看到一个充满机遇的世界在你面前展开,挑逗着你的想象力,但你只能走一段路,然后就会想起脚踝上缠绕的冰冷铁链。
还在为教程的枯燥乏味而苦恼吗?以下是我的一些建议,希望能帮助你摆脱这种困境。
以教程为指导
“你跟随我,我将成为你的向导。”——维吉尔,《神曲》
想想你在观看或阅读开发者教程时是否会做以下这些事情:
- 盲目地将教程中的代码复制粘贴到自己的环境中。
- 从关联的存储库克隆已包含设置代码(例如 HTML 或 CSS)的启动文件。
- 跟着教程一起编程,结果却发现自己在这个过程中感到无聊。
- 只需按照教程操作,无需自己编写任何代码。
这些都是致命的错误,只会让你在教程的“炼狱”中待得更久。如果你想学习新知识,或者寻找灵感来启动自己的项目或沙盒,那么教程应该仅仅被视为考试答案:它告诉你答案,但只有在你尝试自己解决问题之后才能参考它。
我们来看看WesBos 的 JavaScript30 课程——对于 JavaScript 开发者来说,这是提升原生 JS 技能的绝佳途径。但你不能只是观看视频并跟着写代码。而且,你绝对不应该使用 Wes 提供的初始文件,除非是像音频文件这类你需要自行获取的资源。
你应该怎么做呢?可以把教程当作灵感来源:观看开头几分钟,了解你的任务是什么,但一旦开始讲解实现细节,就暂停观看。此时,你已经有了一个粗略的 UI“原型”,可以着手自己进行构建。
从你自己的环境中开始,尽你所能,发挥你的创造力,尝试解决问题。如果遇到困难,不要立刻放弃并观看视频。相反,先研究你遇到的问题。现在,几乎可以肯定,你遇到的任何问题都已经在 Stack Overflow 或 Reddit 上被记录下来了。只有当你找到一个可行的解决方案后,才能继续学习教程,并将你的尝试与解决方案进行比较。
这种方法能教会你一项至关重要的基本技能:独立学习。你需要能够独立解决问题,并提出自己的解决方案。失败完全可以接受,只要你能反思并从中吸取教训。
谁知道呢?说不定你的解决方案比教程里的还要好。就算更糟,或者你忽略了一些特殊情况,你也能从这些错误中吸取教训,整个过程也会比从一开始就盲目地照搬教程要更令人难忘。
别再尝试学习你不感兴趣的东西了。
我最近读到戴夫·格德斯 (Dave Geddes) 的一篇精彩文章,文章讲述了开发者们都非常熟悉的一种经历:尝试学习一项新技术,但没有任何具体的目标,努力理解为什么需要这项技术,或者应该如何使用它,然后因为整个经历让他们觉得自己很愚蠢,便在网上发泄不满。
人类创造的所有工具都有一个共同点:它们都能解决问题。而且,它们的主要用途是为那些已经遇到过类似问题的人而设计的。否则,这些工具对用户而言就失去了意义。
<img src="https://www.aleksandrhovhannisyan.com/assets/img/posts/how-to-escape-tutorial-purgatory/tools.png" alt="xkcd comic about tools">
<figcaption>Source: <a href="https://xkcd.com/1629/">xkcd</a></figcaption>
初学者强迫自己学习X技术,因为它被描绘成职业发展和无限财富机会的诱饵。他们并不真正明白为什么需要React,但他们肯定能复述别人告诉他们的关于React的一切——它有虚拟DOM,而拥有虚拟DOM……嗯,这真是个好东西。
你难道没想过,如果没有这些花哨的新技术,事情是怎么做的?或者它们究竟解决了哪些问题?想想看,如果那些可怜的、无助的人在接触 React 之前先学好 JavaScript,就能省下在 Stack Overflow 上几个小时的煎熬。想想看,如果他们懂得如何驾驭原生 CSS 和 CSS 预处理器,而不是被 Bootstrap 和 Tailwind 这类臃肿的 CSS 框架束缚,那该有多好。这些框架写出来的 HTML 简直让我眼花缭乱。
当然,你可以自由选择学习任何你想学的内容,随时随地学习。但要循序渐进,并理解所学内容的实用性——这是摆脱枯燥乏味的学习过程的众多关键中的两个。
别再把钱浪费在课程上了
只需几百美元,有时甚至几千美元,一年下来,你也可以学习 Python、React 以及所有相关知识,并找到你的第一份软件开发工作!
在我看来,付费课程订阅绝对是编程学习行业最糟糕的事情。它们旨在提供即时满足感——让购买者在结账时获得成就感,并让他们觉得自己已经迈出了掌握新技能的第一步。
有些人通过课程学习效果最好,这无可厚非。但有些初级开发人员却不了解其他方法——他们把学习等同于花钱和考取证书。
我之前就写过这方面的内容,现在再说一遍:网上有那么多免费信息,何必浪费钱买课程呢?价格标签并不代表任何内在价值。
休息一下
你知道软件开发最棒的地方是什么吗?就是每个人都能从中受益。你知道它不棒的地方是什么吗?那就是……找到适合自己的那部分真的很难。
我有时觉得这个行业就像一片形状奇特的锁的海洋,而我手里拿着的钥匙似乎都无法完全打开任何一把锁。大多数时候,我对前端和CSS充满热情。但有时,我的思绪会被移动应用开发、机器学习、网络、游戏开发以及其他各种各样的东西所吸引,我每次都会浅尝辄止几分钟,然后迅速放弃。
科技发展如此迅速,这是否有帮助?你可能已经听过很多遍了,所以请原谅我的重复,但几乎每分钟都有一个新的 JavaScript 框架诞生。几年后 React 还会流行吗?Vue 呢?换一种语言、框架等等,你都会面临同样的问题。现在 WebAssembly 又来了。你该如何跟上所有这些变化呢?
说实话,你还能忍受多少待办事项应用教程而不至于崩溃?更重要的是,你明天或一周后还能记住这些东西吗?还是你只是因为某些原因才去学习它们?
有时候,放下一切一两天,放松一下,真的很有帮助。我知道你对开发充满热情,但这不应该占据你生活的全部。听听音乐,读读书,看看电影,玩玩游戏,写写东西,锻炼锻炼,总之,做任何事都行,就是别一天24小时、一年365天都在开发。
新手入门阶段只是一个阶段——你最终会找到自己的方向,从事有意义的项目,并找到你梦寐以求的工作。
与此同时,偶尔看看教程来提升技能或学习新知识当然无妨。但不要让教程成为你的拐杖。
文章来源:https://dev.to/aleksandrhovhannisyan/how-to-escape-tutorial-purgatory-53i7

