原文:How to Stay Motivated While Learning to Code,作者:D.M. Oladele

学习编程可能就像准备一场持久的战役,最终的胜利并不总是取决于你最初的能力,而是你准备得有多好以及你能坚持多长时间。

当学习编程的时候,最大的挑战往往不是语言的复杂度,而是保持步调并且在学习过程中获得动力。

为了在你的学习过程中保持步调,你将需要许多动力与精力,通过持续不断地学习将帮助你理解编程语言中复杂的概念,学编程可不能一口吃成个胖子。

因为我没有接触过任何技术性的东西,所以我开始学习编程较晚。在我尝试迈出转型第一步后,每一步的学习都十分地挣扎,我越来越怀疑自己的动机。

这篇文章我将分享我如何随着时间的累积逐渐克服困难,从而坚持下来并且自我激励。

Testudo_formation-1

放平心态,养成习惯

在早期学习阶段,你可能没有太多的时间用来学习。

这是因为你刚开始尝试做一些你从没有做过的事情,并且你可能有全职工作会占据你每日生活中大部分的时间,因此仅仅是挤出时间来学习就实属不易了。

在这个阶段,你并不需要担心你一口气能学多少,最重要的事情是抽出时间每天学,无论学了多少、无论发生什么情况,都要坚持下去!

始终为你的学习做好规划

如果你不管理好你的每日任务,你就十分容易拖延并且遗忘它们。你很容易专注于一两件任务上并且全然忘记你还有其他的任务要做,这种情况在你没有设置任务清单时会经常发生。

为了防止拖延及健忘,确保你通过制定任务来管理你的时间,你可以通过以下建议来制定你的任务:

  1. 想想你总共有多少任务需要完成
  2. 预估完成每项任务需要多少时间
  3. 确定你一天什么时候最有生产力
  4. 按优先级来安排好你所有的任务
  5. 确保将相似的任务安排在一起从而提高效率
  6. 在你的手机或电脑上排好任务以便管理
  7. 将复杂及困难的任务安排在你脑子最好使的时候
  8. 为意想不到的状况预留时间以防遭遇到它

值得一提的是最好是在每周开始的时候安排好一周的计划。

想了解更多关于如何安排你的时间以提高生产力,你可以考虑阅读这篇由 Calendar 的联合创始人及 CEO——John Rampton 所撰写的文章

参加一个学习者社区

对于绝大多数人而言,独自学习可能是孤独且乏味的,而且很快就会伤害你的学习积极性,拥有志同道合的朋友一块儿准没错。

这种类型的社区将带给你无数的好处,包括但不限于:

  • 获得组团学习的机会
  • 得到不同的资源来帮助你学习成长
  • 获取当下的技术趋势讯息
  • 给你的个人项目带来反馈
  • 扩展一个能分享你的进展、衡量你的成长的渠道

寻找你所在的地区是否存在这类型的社区。如果你找不到,你也可以加入一个远程学习社区来代替。

下面是一些我发现的远程社区,我觉得他们非常有价值:

  • 100Devs: 这个社区是一个非营利性组织,由 Leon Noel 维护——他是一名老师、以及 ResilientCoders 的技术主管。100Devs 社区向个人提供免费的全栈网络开发课程,你可以加入他们。
  • 100DaysofCode: 这是一个 100 天学习编程语言的挑战。为了参加 100DaysofCode,你必须每天投入至少一小时的时间来学习,并且还需要在 Twitter 上发布你所完成的任务并且带上标签 #100DaysofCode。
  • Kevin Powell Community: Kevin Powell 主动学习者社区是一个 Discord 频道由 Kevin Powell 创建并维护。Kevin 是一个拥有多年经验的教师以及软件开发人员,你可以从这儿加入
  • Commit Your Code: 这个社区由 Danny Thompson 创建,这个社区有很多主动学习者以及经验丰富的开发者,他们十分愿意帮助及指导你的项目。你可以从这儿加入该社区。

当然了 freeCodeCamp 社区也拥有一个充满支持与善意的论坛,你可以在这儿问问题并且遇到其他的开发者。

在加入其中的一个或多个社区后,重要的是拿出你最好的态度,也别忘记保持自我,提供价值、遵守规则。

寻找一个学习伙伴

如果你即便是管理好你的任务并且加入一个学习社区后,还是很难坚持下来并保持动力,在这种情况下,你可能需要一名学习伙伴。

拥有学习伙伴可以从以下几个方面受益:

  • 能让你建立起责任感
  • 可以设置共同学习的时段
  • 可以在合作项目上协作
  • 可能会互相得到指导
  • 一起通过编程挑战

使用更高效的学习技巧

编程语言通常来说都比较复杂。除非你有一个高效的学习技能,否则你会很难理解其中的概念并且很难运用在实际的情况中,这会使你沮丧并且打击你学习的动力。

如果你在学习一些新的概念或者新的编程语言,这里有一些学习技巧可能你已经尝试过:

  • 反复阅读
  • 突出重点
  • 总结或做笔记
  • 填鸭式学习

但是很多著名的科学家及心理学家通过大量的证据证明——对比以下的学习技巧,以上的学习技巧效果较差。

为了最好的利用你的时间并确保你能更长时间地记住你所学的内容,请尝试以下的学习技巧:

主动回忆

主动回忆是一种学习技巧,指的是从你的大脑中检索已经储存的信息。

大脑是一个巨大的仓库或空间,记忆是储存在这个空间中的物体,检索记忆就像是在物理空间中搜寻和发现一个物体一样(Roediger,1980)。

使用这种技巧意味着曾经阅读过一个主题,然后将该主题中的概念和想法转换为问题,然后用问题来向自己提问。

间隔重复

这个学习技巧,顾名思义,需要通过主动回忆的方式,对你所学的知识进行间断性的复习。这与填鸭式的学习不同,填鸭式学习是指一次性记住这个主题的所有概念。

从本质上讲,间隔重复可以帮助你将遗忘曲线的影响最小化。这是一种允许自我忘记所学的学习方式,然后通过明确的时间、主动的回忆、从而从你的大脑中找回这些概念。

遗忘曲线假定了记忆的保持将会随着时间逐渐下降。这个曲线展现了当没有试图记忆信息时,信息是如何随着时间不断流逝而丢失。(Source

The-Forgetting-Curve-and-Spaced-Repetition

使用上述学习技巧将帮助你确保你不会花费太多时间理解并记忆任何的主题或者概念。

并且,你将有更多的时间用于完成你清单上的其他任务,有机会学习对你的专业发展更有帮助的新技能。

你可以使用一个流行的工具——— Anki,来帮助你主动会议及间隔重复。学习如何使用 Anki。

要了解更多关于这些高效学习技巧的使用,可以观看这个视频

番茄钟(Pomodoro Timer)

Pomodoro 学习技巧是那些挣扎于无法长时间集中注意力来学习的人的理想技巧。

使用这种技巧的一种方法是将你的工作时间分为 30 或者 20 分钟的小块,中间有 5 分钟的休息时间,这些间隔被称为 Pomodoros。

pomodoro

设置短期目标并保持专注于一次实现一个目标。

成功不会在一夜之间发生。

尝试在同一时间实现太多的目标会让人不知所措。所以最好是分解你的目标成为几个小目标,然后集中精力一次实现一个小目标。

例如,作为一个初学者,假定你的目标是能用任何流行的 JavaScript 框架建立一个网页。要做到这一点,你需要学习各种脚本、编程语言、工具和技能。下面是你实现目标所需要知道的:

  1. 理解 HTML 的基础知识
  2. 理解 CSS 的基础知识
  3. 理解 HTML 中语义元素的使用。
  4. 理解 CSS Flexbox 和网格布局的使用情况。
  5. 尝试用你目前所学来建立一个简单的静态网站。
  6. 开始学习 JavaScript 的基础知识
  7. 用你到目前为止学到的 HTML、CSS 和 JavaScript 的基础知识专注于建立项目
  8. 开始学习高级的 JavaScript 概念,如面向对象的编程异步编程
  9. 通过建立项目来巩固你对高级概念的知识。
  10. 学习你选择的JavaScript框架。ReactVueAngular 都是流行的选择。
  11. 最后,你可以使用你所学的框架建立你喜欢的项目。

你可能会认为,按照所述顺序完成上述步骤需要几个月的时间。也可能会花费更长时间,没事儿。

另外,不要试图跳过任何步骤,仅仅参加一个速成的网页设计课程可能是不够的,而且会让你感到失望,并导致你如果想要花时间彻底学习这些概念的时候,会更加挣扎。

另一方面,确保你仔细地通过每一个步骤,一次一个,将帮助你建立必要的技能来实现你的主要目标。这也会防止你失去动力,失去动力是不切实际的期望的结果。

a-step-at-a-time

不要害怕寻求帮助

人们在学习编程时过早放弃的原因之一是他们在程序中碰到了某种似乎难以解决的 Bug。

但是你应该知道在编程上,没有人知道所有的事情,即便是拥有几十年经验的软件开发人员仍然会遇到他们认为很难解决的 Bug。

这就是为什么合作是如此的重要的主要原因之一——甚至比发展你的个人技能更重要。

每当你发现自己处于这种状况时,不要在问题上徘徊太长时间。在寻找答案时要利用互联网的优势。在这一方面,你最好的朋友是 Google。如果你花时间并且深究,你可以在 Google 上得到几乎所有与编程相关的答案。

如果你无法从 Google 上搜索到你所需要的答案,下一步要做的就是去你所属的学习社区,从他人那里寻求帮助,他们通常都会十分愿意帮助你,无论问题是什么。

在向社区寻求帮助时需要注意以下几点:

  • 直接提出问题
  • 确保问题清晰易懂
  • 提供一份你的代码副本,把它们放在一个公共的远程仓库里,如 GitHubCodepen,并提供该仓库的链接。

保持健康的生活方式

我怎么强调保持健康生活方式的好处都不为过。它将帮助你维持精力充沛并保持健康,以迎接下一次挑战。

有各种方法来保持健康的生活方式,其中有些是:

  • 经常锻炼有助于提高你的认知能力和身体素质。
  • 不要长时间坐着。
  • 在学习时定期锻炼手指。
  • 学习时,眼睛要定期离开屏幕。
  • 为你的兴趣爱好腾出时间,作为对你努力的奖励。
  • 确保你总是睡得好,得到适当的休息。

总结

编程是一场马拉松,而不是一场短跑。如果你想取得任何程度的成功,你必须花时间并坚持不懈地学习。

采取本文所讨论的步骤将极大地提高你实现目标的机会。

如果你喜欢这篇文章,你可以给我一个 shout-out

拓展阅读和参考资料

  1. Retrieval creates learning
  2. The forgetting curve
  3. Download Anki, a powerful tool for active recall and spaced repetition