大约在去年这个时候,我写了一篇关于 JavaScript 学习现状的文章。在那篇文章中,你会发现我雄心勃勃地计划学习 JavaScript——甚至还附上了一个我用来跟踪进度的 CodePen 收藏集 的链接,并且还收到了几十条鼓励我的评论。
像大多数人一样,我当时雄心壮志。新的一年开始了,我兴奋地准备着手一个长期以来的项目。这就像是我版的减肥计划(我也确实需要减肥)。但是,如果你点击那个 CodePen 收藏集的链接,你会发现里面什么也没有。如果你翻遍我的硬盘或云存储,你也不会发现任何 JavaScript 文件或项目。
过去的一年里,我没有在其中一个主要目标上取得任何进展。那么,到底发生了什么事呢?
一个古老的故事
互联网上充斥着类似的推文和博文。收件箱里满是关于新年计划的简讯,YouTube 上也到处都是教人们如何度过最好一年的人。但很少有人能坚持完成自己的目标。在设计和开发领域,这种情况可能更为普遍,因为定期涌现出大量的新技术、语言、库和工具。
这些故事都遵循着类似的模式
- 设定主要目标
- 告诉朋友(或无数 CSS-Tricks 访客)
- 分心、不知所措、失去兴趣,或三者兼而有之
- 一段时间后完全忘记目标
- 向朋友道歉并为自己找借口(或者,再次强调,向无数 CSS-Tricks 访客道歉)
根据我的经验,问题不在于设定目标或告诉每个人你的目标,而在于上面的第三步。至少对我来说,当目标偏离轨道时,主要是因为三个问题:分心、压力和缺乏兴趣。除了不可预见的人生变故之外,这三个问题是我们难以克服的所有未实现目标的罪魁祸首。
在思考今年的目标时,我决定首先分析一下为什么我无法实现去年设定的那个主要目标。所以,让我们深入探讨这三个问题,看看是否有办法防止它们再次发生。
分心
分心似乎是这里最大的问题。我们每个人都有很多事情要做。在工作和家庭责任、其他爱好以及与朋友聚会之间,很难挤出时间来进行新的项目。尽管所有这些其他兴趣和责任都是必要的,但当涉及到我们的目标时,它们却成为了干扰。
设定目标的意义在于腾出时间去努力实现它。这意味着将目标优先于其他事情。对我来说,我发现自己让生活中所有这些干扰因素都渗入了我的日常生活。在工作时不吃午饭,而不是利用这段时间学习 JavaScript 书籍中的章节,这很容易做到。孩子们睡后,我很容易沉迷于最新的 Netflix 剧集。我没有把学习 JavaScript 放在首位,所以到年底时我什么成果都没有。
克服分心
关键是要屏蔽这些干扰因素,说起来容易做起来难。我们不能简单地无视家庭和事业的需求,但我们需要给自己时间专注于工作,不受干扰。对我来说,我越来越相信解决方案是时间块安排。
时间块安排顾名思义:你将日历上的特定时间段分配给特定的任务。时间块安排可以让你优先处理重要的事情。它不会强迫你坐下来,打开一本书,或者开始编码,但它会给你时间去做这些事情。
网上有很多关于不同时间块安排方法的文章,其中一些列在下面
对我来说,我将在每周的特定时间段内集中精力学习 2019 年的 JavaScript。我试图现实地评估自己可以投入多少时间,并将其与其他义务相权衡。然后,我把这些时间段安排到我们共享的家庭日历上,让每个人都清楚我在优先处理什么。更重要的是,我明确表示这段时间是用来专注的,其他的干扰因素都应该放在门外。
屏蔽手机和电脑上一些较小但同样重要的干扰因素也很有帮助。关闭与任务无关的浏览器选项卡、静音通知以及清理桌面上其他分散注意力的物品,应该成为你坐下来开始处理任务时的常规操作。在 Twitter、Hacker News 甚至 CSS-Tricks 上随意浏览很容易,并且你会说服自己这是时间利用得当(尽管最后一个通常是),但这些时间加起来,并不总是像你想象的那样能让你学习或提高技能。屏蔽这些干扰因素,专注于你想要完成的事情,是真正实现目标的好方法。
压力
去年的文章概述了一个充满各种有趣文章、书籍、播客和课程的景象。学习的内容并不少,资源也足够让任何人忙上一年不止。而且,在 JavaScript 方面,似乎总有一些新的技术或框架需要学习。

再加上学习 JavaScript 时需要了解的所有辅助主题,你最终会得到那些 Chris 之前收集过 的令人不知所措的开发者路线图。

我不在乎你有多聪明,这绝对令人望而生畏。在网络上感到不知所措是很常见的。你认为初学者会是什么感觉?再加上上一节中提到的所有责任和干扰因素,你就会得到一个导致倦怠的致命配方。
我最初打算先学习 Marijn Haverbeke 的 《Eloquent JavaScript》,作为学习这门语言的第一步。但我同时也提到了我周围的所有播客、YouTube 频道和新闻通讯。我的目的是通过沉浸式学习,但它很快导致我感到压力和不知所措。当我感到不知所措时,我很快就让所有这些干扰因素转移了我的注意力,让我无法学习 JavaScript。
克服压力
就像处理分心一样,我认为应对压力的关键是专注于一两件事,并摒弃其他所有事情。与其完全沉浸在 JavaScript 世界中,我将只专注于这本书,学习完之后再寻找其他资源。我将有意忽略 JavaScript 世界的大部分内容,以便找到自己的方向,只有在我感觉自己想走这条路的时候,才会让自己承受开发者路线图带来的压力。
失去兴趣
翻阅任何编程书籍(至少对于初学者来说)都会让人昏昏欲睡。代码看起来过于复杂,就像数学课本一样。我不知道你是什么感觉,但我讨厌数学课,而且我发现很难让自己兴奋起来,把空闲时间投入到感觉像是回到高中时代的事情中。
但我知道学习 JavaScript(以及编程,一般来说)是一项有价值的追求,它将让我能够完成我一直想完成但没有能力完成的项目。那么,我该如何对这项乍一看似乎很无聊的任务产生兴趣呢?
克服学习兴趣下降
我认为关键在于将我学到的东西与我感兴趣的某个主题联系起来。
我一直对数据可视化很感兴趣。像Flowing Data这样的博客非常吸引人,多年来我一直希望能够自己创建数据可视化。并且我知道 JavaScript 越来越成为创建这些图形的可行方法。像D3.js和p5.js这样的工具是一流的框架,可以创建令人惊叹的可视化效果——那么为什么不学习这些工具使用的底层语言呢?
我克服学习兴趣下降的计划是朝着我想构建的项目努力。学习所有基础知识,克服困难,然后利用沿途学到的概念来理解更高级的工具,例如 D3.js。
只要你能将你的学习与你感兴趣的领域结合起来,你更有可能取得成功。我认为这正是第一次学习时缺少的东西,因此我在学习 JavaScript 时设定了一些目标,这些目标会让我保持足够的兴趣,从而学习我需要学习的内容。
这是一条艰难的道路
学习很少是容易的。但是,有时,当它最艰难的时候,它才会带来最大的回报。
我相信,我们越能发现自己的心理障碍并将其分解,我们就越有可能实现自己的目标。对我来说,我的心理障碍是分心、压力和兴趣下降。这三者共同阻止我实现目标,但我正在制定计划来克服所有这三者。你的障碍可能不同,但你可能也有应对它们的方法。
我很想听听大家在学习新技能时是如何克服自己挑战的。在下面发表评论,告诉我你的故事。分享它可能会帮助我和其他人最终实现我们一直想要的东西,无论是学习 JavaScript、深入研究最新的框架,还是参加我们一直推迟的马拉松。
我认为,要有效地学习新事物,首先必须诚实地面对自己,并问问自己是否有能力做自己打算学习的事情。例如,我喜欢汽车,有时我会考虑学习一些机械知识,但随后我意识到我并没有真正兴奋地打开引擎盖并开始执行诸如清洁喷油器之类的程序;因此,看来我没有朝那个方向发展的特质。当然,作为毅力的体现是一件好事,但由于我没有这种特质,我的大脑会将这项任务放在最低优先级,总是被其他事情取代。要进行编程,必须热爱逻辑,并且必须在一定程度上对计算机问题感到不舒服,以至于你会被迫找到解决该问题的办法来克服这种不安。在一个程序中,一切都基于先前状态的逻辑步骤。就此而言,你决定使用任何现成的工具,比如 JavaScript,然后你就会开始输入、输入、更正、逻辑思考并使用参考作为字典,直到结果成为一个解决了问题的程序……
嘿,Jason,感谢你分享这些!我学习 JavaScript 已经有大约三年了。你的流程图非常准确,即使我的一部分学习旅程因为结婚、毕业、有了孩子、搬到另一个城市、找到新工作等等而中断。我有很多干扰,也克服了很多干扰。最近,我一直在回家的火车上学习。它进展缓慢但稳定。
这是我读过的最好的文章!虽然我还是新手,哈哈。是的。我完全同意。动力会变化,但干扰和压力是进步的主要“坏家伙”。我喜欢这张 Chris 的地图……我确实发现它很有动力,而且我认为它非常适用……即使对于像我这样的新手也是如此,哈哈……我正在成为前端开发人员的路上……但我可以说我在这三个方面遇到了很大的问题,你上面提到的,即使我没有妻子和孩子以及那种家庭责任。我不认为自己是一个极客程序员,而且我数学也不好,哈哈,但我发现学习新事物以及以某种方式将这些知识具体化的动力,例如,制作一个网站。问候 Jason,祝你在实现目标和撰写更多有趣且真正有帮助的文章的道路上一切顺利。
嗯,数学在某种程度上可以使事情变得更容易。目标才是最重要的。实际上,我非常擅长实用数学,也就是工程数学。它有帮助,但对我来说,这并不比学习语言更难,如果你搬到一个国家并与那里的人一起生活,你就会学会它。关键是掌握任何地球上的东西都需要 10000 个小时,我发现这是真的。如果你花费 3000 个小时,你似乎就能构建一个很棒的网站。
多么诚实的帖子!感谢你的坦诚。
我肯定没有答案,但我相信目标周围必须有一些主要的内在动机。
大多数研究表明,如果没有内在动机,你只是因为想要而想要去做,那么放弃是不可避免的。
如果你为了工作、为了钱、为了社会地位或任何外部动机去做,那就困难得多,甚至可以说是不可能的。
但是,JavaScript 路线图很可能是你旅程中最好的事情:) 谢谢你的创建和分享。
图表中提到的“ideas”目录在哪里?
我一直都在努力学习 JavaScript,所以我完全理解并感谢这篇文章。一开始事情非常容易,但很快就会变得更难,以至于变得毫无意义。然而,我仍然需要学习 js。我刚刚开始关注 Vue,希望这是通往幸福的正确方向!
我 15 岁的儿子教孩子们编程。孩子们可以免费学习。Kidzideaztech.com。本周他将开始为成人开设课程。这将迫使成年人从忙碌的生活中抽出时间,每周与指导老师一起学习编码。我认为这解决了专注力和处理大量信息的问题。他的方法是实践操作。他们编码非常快,并且构建了一个可用的应用程序。
嗨,我很高兴找到这篇文章……但实际上我是一个 21 岁的大学生,我的专业是测绘工程,我的英语不好……所有很棒的学习编程的网站或平台都使用英语,我认为这是我最大的挑战,因为我必须同时理解语言和编程本身 T.T 我目前正在学习 JavaScript,已经快一个月了,我感觉迷茫了。我试图激励自己,如果我不这样做,将来我会做什么 T.T
我的经验告诉我,一开始并不总是告诉“全世界”我们的目标是有帮助的。这样做会在你的大脑中释放内啡肽,让我们感觉良好,而实际上并没有完成太多事情;然后我们发现自己更多地是在谈论和计划,而不是做实事。在自主工作(促进流畅性)和培养责任感之间取得平衡是很难的。告诉全世界你打算做什么,但首先,向我们展示。