这是一篇译文,原文作者 Beau Carnes 曾经是一名 K-12 老师,目前是 freeCodeCamp.org 的一名全职开发者,主要负责制作 freeCodeCamp YouTube 频道 的大量编程视频教程。原文创作于 2017 年 3 月,记录了 Beau 如何在一年时间内获得第二学位以及 5 个开发者证书的经历。

“标准的节奏是为愚者设计的——系统这么设计是为了让任何人都跟得上。如果你比“任何人”更有动力——那么你的成就会大大超出任何人的预期。不仅仅在学校里是如此,生活的方方面面都是如此。”——Derek Sivers, CD Baby 创始人

学习编程是一件具有挑战性的事情——特别是当你已经成家,有了小孩儿,还有一份工作的时候。尽管如此,我还是认为我的人生不应该是标准的节奏。

我写这篇文章的目的不是为了吹嘘——尽管我对这些成就感到非常自豪。我只是希望让读这篇文章的人也相信自己的人生可以有所不同。

在过去的一年中,我做了很多事情。我获得了两个 Oracle Java 证书,两个 CompTia 证书和 freeCodeCamp 前端证书。大多数人获得其中一个证书都得准备好几个月,但是我每花三个星期就拿到一个证书。

此外,我在不到六个月的时间内学习了软件开发课程,从一所正规大学获得第二学位。

我在完成这些事情的同时依然保持全职工作,经常与我的妻子和两个小孩相处,并且在我的社区做志愿者。

有一位了不起的另一半在身边支持我,是我达成这些成绩的关键因素之一。

当然还有些其他因素。

动力来自于哪里?

我曾是一名 K-12 老师,在学校待了五年之后,我意识到我不想以后也都待在学校上课。我喜欢上课,但我不喜欢强迫孩子们去做他们不喜欢的事情——而这,不可避免也是我工作的一部分。

我所在的城区学校的课堂管理非常紧张,我对整个教学体系也感到失望。我们似乎正在培养未来将被人工智能所取代的学生

我一直对编程感兴趣,甚至有时用 Scratch 和 Code.org 教我的学生们基本的编程知识。我觉得是时候全面学习编程,并且以此作为我的全职工作了。

想换工作就是我的驱动力。在学校上课的每一天都激发我不断向自己的目标前进。

反复调研

一定不要急于开始学习。学校或学习资源数量繁多,质量也参差不齐。一旦选择失误,你会在达成目标的过程中走不少弯路。

我试着确定哪种学习方法最适合我和我的家人。虽然我知道有很多方法可以进入科技行业,但我决定采用一种传统的方式:读一个学士学位。我知道我已经学过一些课程,可以转入新课程。我调研了许多学校,最终选择西部州长大学,原因如下:

  • 可以在线读学位,所以我不需要在交通上花时间。
  • 可以自主安排学习节奏,所以我知道我可以很快完成所有课程。只要完成一门课的所有作业和考试,就可以立即进入下一堂课。
  • 学费很低——六个月的课程大概花 3000 美元。
  • 这是一所广受认可的大学,奥巴马总统和比尔·盖茨都推荐过它
  • 读完这个学位可以获得行业认可的证书,会为我的教育背景加分。

设定远大目标

起初,我的目标是在一年内读完这个学位。经过一个月的学习,我决定把时间周期改为六个月。

我快速学完这些课程的方法是:规划完成每节课程的具体日期,确保在六个月内完成。

我根据课程要求为每节课程安排一到三周的学习时间。我当时还制定了如何很快完成每节课的计划。在整个学习过程中,设定很多子目标可以帮助我始终保持好的节奏,这是非常棒的。

上图是我的部分学习计划

设定远大目标非常重要,帮助我自我驱动。 《消费者研究期刊》的一项研究表明,远大目标让人们更快乐。我最终都达到了我为自己设定的最后期限或者提前完成,这让我非常开心!

详细时间表

我创建了详细的每周时间表,以保证在花大量时间学习的同时能够兼顾我的家庭和其他事情。我安排了家庭聚会时间,志愿服务时间,朋友聚会时间,以及每周约会之夜!

上图是我刚开始学习时列的日程表,现在的日程表更加详细了


详细时间表帮助我保持生活的平衡。但是,有一件事我没有安排进我的日程: 看电视

在读学位期间,我只看了三集电视剧。为了实现目标,我的时间表排得非常紧,所以我没有时间看电视。另外,花时间看电视就意味着陪伴家人的时间减少了。自从毕业之后,我一直都限制自己看电视的时间,因此我可以专注编程。

为了实现我的目标,我必须放弃一些事情。

忽略那些反对者

西部州长大学为每个学生都安排一名导师。导师每周都会和学生通话,以帮助他们保持正常学习进度。每次我和导师分享我的目标,她都鼓动我把目标调整得更合理一些。而我却决定把目标设定得更”荒谬“。我知道她是出于好心,但我决定不再理会她的警告并且不再与她分享我的目标。

有时候,我们不需要和某些不会鼓励反而阻碍我们的人分享目标。

最大化利用时间

除了我预定的学习软件开发的时间外,我还找到了一些方法进行更多学习。例如,我用了大部分的午休时间来学习。另外,我经常在口袋里放着笔记本,每当我有空闲时,我都可以查看。

此外,我也曾(目前仍会)休假几天来学习课程或者是跟进编程项目。在我修学位期间,因为有的课程的考试比较难通过,所以我会休假几天来保证学习进度。

我总是不断重新评估我的日程安排,以及如何花时间让我有更大的效率。

我常常在孩子们睡觉之后编程。然而,我发现熬夜太晚,我的大脑有些迟钝,我就调整了我的睡眠时间表。所以我现在晚上 9 点左右睡觉,凌晨 4 点醒来编程(以及制作视频教程)。这样的方式可能听起来有点疯狂,但大大提高了我的工作效率。

学习别人的经验

我花了很多时间浏览我大学的 Reddit 页面和各种论坛,阅读其他人分享的对他们的学习有益的方法。有很多资源可以用于辅助修一个行业证书。这些都帮助我更好地计划最快的路径。

总会有些人比你先踏上这条路,所以找到这些人并向他们学习是很重要的。

在学习 freeCodeCamp 的课程时,向他人学习也非常有帮助。社区中经验丰富的人们经常在论坛和社区聊天室中为大家提供帮助或建议。

尽管交付!

交付的意思是把一个完整的产品发出去。

我常常会考虑我是否需要花更多的时间在项目上或学习上。然后我就发现如果我想赶在自己设定的最后期限之前交付的话,我并没有那么多时间。

往往是我觉得自己有十足把握之前,就到了最后期限,那我也不得不交付。这当然是有好处的。

我发现把项目交付出去比力求使其完美更加重要。如果你想做到尽善尽美,那你可能永远都完成不了。即便你还有些犹豫,也尽管交付吧!

二八原则

二八原则的意思是,对很多事件来说,80% 的产出来自 20% 最关键的行动。在学习软件开发时,这意味着之后实际使用的大约 80% 都是 20% 的学习内容。如果你专注于这 20%,你可以节省很多时间。

对于我的学位来说,我只阅读了所要求内容的 20-30%。根据二八规则,这足以理解这门学科超过 80% 的内容。

诀窍在于需要确定关注哪 20%。我经常这么会问自己,“如果我正在设计试卷,我会采用这些材料吗?”

真的,在学习任何东西时,你应该问问自己,它是否是 20% 的学习内容,可以带给你 80% 的价值。

这就涉及即时信息的概念。学习一些你不打算在近期使用的东西通常是没有好处的,特别是如果你也跟我一样记忆力差劲的话。我只会学习我当下所做项目所需要的知识。

你的老板通常更关心你所做项目的结果,而不是你学习编程的过程。牢记这一点有利于你决定如何最好地利用你的时间。

不断往前推进

在完成学位之后,我也没有懈怠,而是继续学习。我意识到做项目的重要性,所以我直接开始在 freeCodeCamp 创建个人项目来制作我的作品集。并且我在修学位时所使用的所有方法都能继续派上用场。

当我决定开始制作 JavaScript 视频教程的时候,这些方法也能用得上。现在我几乎每天都会在 freeCodeCamp YouTube 频道上发布 JavaScript 视频教程。

如果你感兴趣了解我具体是怎么学习西部州长大学学位的每门课程的,你可以看这篇博客

也许你也像我一样每天都很忙碌,那么我希望我的一些方法对你也有帮助。

请记住:标准的节奏是为愚者设计的,而你可以做得更好!