建立自己的个人学习课程

已发表: 2022-03-10
快速总结↬作为开发人员,我们不断学习新的语言和框架。 但是,您如何构建这种学习结构以确保在继续进步的同时获得最大收益? 以下是您可以如何设计自己的课程以继续朝着正确的方向前进。

在 2019 年 3 月完成训练营后,我不得不选择框架、库、语言和课程,以继续独立学习,并希望自己能获得那些难以捉摸的初级开发人员工作之一。 几乎与我交谈过的每个人都对什么是重要的和值得追求的有不同的看法,但他们中的大多数人都同意学习“基础知识”很重要,但从未真正具体说明它们是什么。

即使在去年夏天获得了我的第一份开发人员工作之后,我很快就发现我必须定期进行课外学习才能满足这个新角色的要求。 我在 Udemy 课程之间徘徊了一段时间,虽然我确实在学习,但我经常发现自己只是在模仿导师的动作,而没有自己培养解决问题的能力。 我花了我自己的小型草稿本副项目来真正掌握新材料。 所以现在我知道我的学习风格是什么:最初在课程或工作中接触想法,创建项目草图以巩固概念,然后如果可以的话,在我的日常工作中使用这种新的学习。

我们中的大多数人对我们如何在短期内学习得最好有一种扎实的(如果来之不易)的感觉,但是这如何转化为长期课外学习的结构呢? 我将告诉你我是如何为自己解决这个问题的。 这些策略适用于各种经验,无论您是软件开发新手还是经验丰富的工程师。

你自己的个人课程

这是我整理学习课程的方法。 作为一个时间有限的人,并且倾向于以牺牲持续、专注的工作为代价被冲动的微风所吸引,我发现这种方法最适合我的大脑和一般节奏。 当然,您的里程可能会有所不同。

使用“理想工作”角色规范设定目标

我发现这一步对于消除所有环境噪音并让自己专注于在未来五年左右对我的职业生涯实际上有用的事情非常有用。 (作为一名前端开发人员,我经常发现自己在学习 Rust 时会大吃一惊。虽然很吸引人,但这并不是一个优先事项。)

你可能不想自己在一家大型科技公司工作,但值得看看他们在招聘时优先考虑什么,因为无论好坏,大公司往往会为整个行业定下基调。 我有一小部分非邪恶公司的购物清单,我想在某一天结束,它们都大致共享相同的优先事项:语义 HTML/CSS、出色的 vanilla JS 技能、可访问性和流行的框架。 有一天我要学习 Rust,但是,就目前而言,学习这些技能是我的首要任务。

显示工作规范如何转化为学习目标的图形
值得查看工作委员会并研究公司在招聘开发人员时正在寻找什么要求。 (大预览)

我倾向于支持 Indeed、Guardian Jobs 和 LinkedIn,因为它们可以获得市场上广泛的工作机会,但同样有用的是 Twitter(只需搜索 [您感兴趣的公司名称] 和“工作”),并定期关注每隔几个月在您最喜欢的几家公司的“职业”页面上。 以@jesslynnrose 的名义发推文的杰西卡·罗斯经常在推特上写出“非邪恶公司”的职位空缺,这些帖子有时在其他地方并没有很好地宣传。

一旦你收集了一些工作规范,试着找出它们之间的共同点并记下它们。 我们将在下一步中使用它们。

确定发展您想要的技能的机会

还记得我提到的那个清单吗? 把它分成两列。 第一栏:你可以在日常工作中做的事情。 第二栏:你需要在自己的时间看的东西。

工作学习

您日常工作中涵盖的清单上的事情是您最不需要担心的事情。 无论如何,您在这些领域的技能会随着时间的推移而提高。 你们中的一些人将在由许多具有不同资历和专业水平的开发人员组成的庞大组织中工作,坦率地说,我建议你们不惜一切代价去挤奶。

如果可访问性是您想要改进的知识差距,请尝试忍住任何紧张情绪,并在您的工作场所与具有聊天/ Zoom 咖啡技能的人联系。 尝试与他们配对,并理解您可以在不是编码问题的事情上“配对”。 与他们聊天,了解他们在哪里可以找到他们的信息,他们关注哪些 Twitter 帐户、博客和播客,以及他们如何及时了解新的发展。

跳跃后更多! 继续往下看↓

在家学习

作为一个以前有两个职业的人,这两个都不是计算机科学相关的,一年前通过为期九周的训练营进入这个行业,我对计算机科学有一个初步的了解,你们中的很多人可能都处于同样的境地。

我发现前端大师对于精心设计的计算机科学原理和更具体的学习课程来说是非常宝贵的。 就个人而言,我发现 Will Sentance 的前端大师课程对于理解原生 JavaScript 的方式和原因非常有价值。 同样,Brian Holt 的“5 小时计算机科学四个学期”课程让学生了解技术面试中可能出现的那种概念。

Frontend Masters 有每月订阅费,这是非常值得的,但是那里有很多很棒的免费资源。 我真的建议任何尚未这样做的人报名参加 CS50。 该课程由哈佛大学开设,是一个很棒的免费资源,它将向您展示 C、Python、JavaScript 以及有关道德和基本数据结构的模块。 讲座非常有趣,您可以随心所欲地完成课程,没有时间限制。

哈佛 CS50 编程讲座上的学生
CS50 是一个很棒的免费资源,可以全面介绍计算机科学和编程艺术。 (大预览)

同样,对于自学成才的开发人员和希望利用现有技能的开发人员而言,FreeCodeCamp 已经赢得了重要起点的地位,我鼓励您在 Udemy 上寻找与您的兴趣相关的课程(我建议不要买一个没有大折扣的 Udemy 课程。他们的销售每隔几周就会出现一次,而且总是有折扣代码浮动)。

我特别喜欢的是 Andrew Mead 的 The Complete Node.js Developer Course,我很喜欢 Colt Steele 的课程(有一个关于算法和数据结构的特别好的课程,如果你发现自己更偏重于算法,它会为你提供帮助技术面试频谱)。 Smashing Magazine 还经常举办一系列主题的在线研讨会,以帮助您提高技能。

正如您可能知道的那样,让人们在技术领域工作的技能往往与人们在工作中需要使用的技能有所不同。 这些课程将教你计算机科学基础知识,同时让你灵活应对面试,并帮助你通过对不同数据结构及其优缺点的快速总结来填补任何可能令人崩溃的沉默。 重点不是要完成所有这些课程,而是要确定并结合那些适合您所针对的工作规范的课程。

我发现 Twitter 对寻找可以讨论代码问题的人非常有帮助。 去年春天,我对 Android Studio 遇到的一个问题大喊大叫,并在不到十分钟后与一名 Android 开发人员进行视频通话时感到惊讶,不仅如此,他似乎很乐意提供帮助!

不要低估开发者社区的善意,不要害羞地在需要时向它寻求帮助,并尽最大努力让自己置身于可以与来自相似世界的人交谈的环境中更广泛的科技行业背景。 如果您需要帮助,#CodeNewbie 主题标签非常方便。

设定目标和时间表

现在是时候将你的自主学习目标与一些目标联系起来了。 尽量不要把标准设得太高——如果你在一周内完成一门 Udemy 课程是不切实际的,不要试图强迫自己如此努力地完成目标,以牺牲你生活中其他重要的事情为代价或者达不到目标,让自己觉得自己很失败。 这个想法是让自己保持在正轨上,施加温和的压力来保持动力,但不要让你感到不知所措并失去所有动力。

作为一个早起的人,我觉得最能在早上 9.30 开始我的日常工作之前的几个小时内专注于学习。 考虑到这一点,并使用出色的时间跟踪工具 Toggl,我每周有两个早上从早上 7 点到早上 9 点花在代码学习上。 使用 Toggl 对我来说非常重要,因为无论我做了多少,我常常觉得这还不够。 但是在 Toggl 的帮助下,我可以肯定地看到我每周至少工作四个小时(如果我愿意的话,可以在晚上和周末加班),并且当我离开笔记本电脑并休息时,我感觉更好。时间到了,我知道按照我自己的标准,我已经花费了可以接受的时间。

使进展可衡量

想想你平均每周的日程安排,并尝试在一天中最有机会确保不间断专注的时候留出一些时间。 你们中的一些人将成为照顾者或以其他方式非常忙碌,如果你能得到它,你可能会更好地花时间。

如果它可以帮助您查看示例,我的个人目标如下:

  • 在 2 月底之前完成 Node.js Udemy 课程。
  • 每天上班前做 30 分钟的 Execute Program。

对于您的第一组目标,请尽量谨慎行事。 如果你愿意,你可以随时加大压力,但最好是在几次成功后就这样做; 确保你有足够的精神和身体空间来真正专注于你需要做的事情来保持正轨。

寻找导师,或好友,或两者兼而有之!

大多数开发人员会建议指导以提高技能,但是根据我的个人经验,找到一个有时间指导你的人是一个挑战,尤其是现在。 诸如 Coding Coach 之类的资源可能会对您有所帮助,而且我知道一些开发人员在聚会和社交媒体上找到了他们梦寐以求的导师,但找到完美匹配说起来容易做起来难。

我与 Thinkful 的教学设计师 Falina Lothamer 进行了交谈——一个大规模的在线开放课程(或简称 MOOC)——以了解专业人士如何进行独立学习。 她非常清楚,寻找导师并与导师合作是提高开发人员技能的关键

“如果你需要为你准备一些东西,让导师说:'这是我认为你应该关注的地方',向你展示他们在工作中所做的事情,并分享他们对你所在地区未来的看法技术将会有很大帮助。 我认为业内有很多人愿意担任导师的角色,并为他人做别人为他们做过的事情。”

在表达了我对在 Udemy 的许多课程上碰壁感到沮丧之后,只是发现自己保留了信息,并不一定对我所学的知识将其应用于其他领域或其他项目有信心,Fallina 是很明显,对另一个人负责——最好是导师,但同样是另一个与你有类似专业经验的开发人员——是必不可少的。

“作为开发人员,您需要寻找机会来展示您的知识以及您的学习方式。 让其他人谈论你面临的挑战,并有空间与某人讨论并意识到“我正在尝试做的这件事很复杂,我不是一个糟糕的开发人员”,拥有验证可能是巨大的。”

对于那些无法找到高级开发人员来管理他们的人,我建议采纳 Fallina 的建议,让自己对行业中与您具有相似水平的其他人负责。 开发人员联合起来分享故事将强化这项工作艰巨性,而且有时他们并不是唯一一个在工作中苦苦挣扎的工程师。 这项工作在情感上可能会非常耗费精力,在那些似乎一切都不顺利的日子里,有一个伙伴一起奋斗将是无价的。

根据您的技能水平和专长,我建议您注册 Interview Cake、Execute Program 或相关的 Udemy 课程,并与您的好友大致同时完成相同的练习。 讨论你发现的更容易的地方,以及你跌倒的地方,并在整个过程中保持相互联系。 虽然您当然可以独自完成这些事情,但培养社区意识将帮助您继续完成任务,并更有可能坚持下去。

便签应用案例

如果你有时间和精力在工作的基础上投入到一个大型的业余项目中,那么你就会有更多的权力,但我觉得这样做的压力有点沉重。 相反,我是便签本项目的粉丝,主要是因为我真正受益于一次遵循许多新想法,并且很快对个人项目不感兴趣,没有时间压力来推动我前进。

如果您的副项目进行 API 调用,以半吸引人的方式显示信息,并且您从该过程中学到了一些东西,并且将项目构建成更大的应用程序不适合您的神经病学,您的护理时间表,或者你的口味,那就给自己放个假吧。 你不会因为素描而嘲笑艺术家,如果你的副项目是半成形的突变体,只要你从这个过程中得到一些东西,你当然不应该感到难过。 我的 GitHub 存储库是对逝去的好想法的挽歌,我已经接受了它。

围捕

鉴于目前的世界状况,我最不想成为的另一个声音是要求锁定期间的生产力。 这不是它的目的。 当我需要随着时间的推移学习时,这些只是对我有用的步骤,不会让自己筋疲力尽或给自己施加过大的压力。 如果他们为你工作,那就太好了。 如果没有,不用担心。 我们都有自己的节奏。

脚步

  1. 使用工作规范来确定关键技能。
  2. 在工作学习和你自己的时间学习之间分配这些技能。
  3. 设定清晰、可衡量、切合实际的目标,只有在你找到自己的节奏后才能提高它们。
  4. 找一个导师或伙伴,这样你就可以为这些目标负责。
  5. 放松! 乱学总比不学好。

有用的资源

  • 乌迪米
  • 面试蛋糕
  • CS50
  • 执行程序
  • 编码教练
  • 切换
  • #CodeNewbie
  • Smashing Mag 的在线研讨会
  • 自由代码营
  • 前端大师
  • 确实
  • 监护人工作
  • 领英

祝你好运!