原文:How I went from stay-at-home-mum to landing my first web developer job,作者:Phoebe Voong-Fadel

两年前,我在  freeCodeCamp 完成第一道练习题“向 HTML 元素问好”。经过两年的自学, 我在 36 岁这一年成功转行,获得了第一份 JavaScript 前端开发者的工作。我想分享一些建议和技巧,也说说我是如何找到这份工作的。

这是我的第一篇文章的续篇。我是在 2018 年年底写第一篇文章的,也是从那时候开始成为一个自由职业的前端开发者,业余时间继续学习。

简单说一下背景:我没有计算机科学/STEM 的专业背景,也没有参加任何编程训练营,而是完全靠自学的。我是一名全职妈妈,抓住一切空闲时间学习编程。我使用了像 freeCodeCamp 这样可以自由安排进度的学习平台。随着我的孩子渐渐长大,我有了更多空闲时间学习编程。

本文的目的是激励那些没有专业背景的人学习编程。任何人都有可能进入到科技行业。我想分享一些我的经验和观点。但我想强调一点,这一路并非一帆风顺,有跌宕起伏,有迷茫,也有黑暗时刻。

首先我将回顾自己的编程之旅,然后我会说一下我用来学习编程的资源。最后,我将分享一些关于如何获得第一份开发者工作的建议。

68747470733a2f2f7777772e66726565636f646563616d702e6f72672f6e6577732f636f6e74656e742f696d616765732f323031392f31302f756e647261775f6665656c696e675f626c75655f346237712e706e67

2019 年 1 月至 3 月:迷茫

我有两个孩子,所以我觉得自由职业是学习期间赚取额外收入的好方法。我有使用 WordPress 帮人制作网站的自由职业经验,同时也使用了其他自由职业平台,像 Fiverr 和 Upwork。

我知道这些平台对于某些自由职业者来说很棒,但对我来说,并非如此。尽管我在那些平台上被标注为“具有潜力的人选”,我还是没找到工作。由于我是新手,所以没有评分和评论,而许多客户在找自由职业者开发某个平台的时候,希望找到有类似经验的人选。但是我找不到工作,也就没有经验——这是一个恶性循环。

对于那些我有“资格”应聘的项目,我会花几个小时来研究和编写方案,但我从未收到反馈。有时候,50 多个人同时应聘一个项目,还有许多自由职业者愿意接受低于普遍标准的薪酬。我在价格上没有竞争优势。

我开始质疑自己的价值,并降低了时薪,希望至少从一个客户那里获得评价。压垮我的最后一根稻草是一家公司邀请我协助他们进行一些“市场研究”,并回答一份调查表。结果发现这是一个骗局——他们让自由职业者在亚马逊上为产品撰写假评论,作为交换,他们可以给我五星好评。

我拒绝了,并且注销了在所有自由职业平台的账号。我对自己没有信心了,严重怀疑自己的能力,开始变得消极。我在论坛上阅读其他有抱负的 Web 开发者无法获得面试和找到工作的帖子,试着通过这些同样悲伤的故事来获得心理平衡,缓解消极情绪。

最糟糕的是,我停止了编程,迷失了自己想要实现的目标。

2019 年 4 月至 7 月:退一步重新评估我的生活

我的丈夫,也是我的导师,问我:“什么事才能让你再开心起来呢?”

我的回答是 “学习编程和 JavaScript”。因此,我继续做自己喜欢的事情,学习 freeCodeCamp 的课程,同时我也继续用 WordPress 帮别人做网站。

5 月,一位老同事想雇佣我做远程工作,为期三个月。虽然这份工作与技术无关,但我需要收入,所以就同意了。这份工作让我暂时转移视线,帮助我找回了信心。

日常的学习和工作使我精神振奋。几个月后,我又开始变得积极向上,动力满满。

2019 年 8 月:#100 天编程挑战

我一直在寻找可以使我保持专注持续编程的东西,所以我到 Twitter 上寻求灵感,然后就发现了  #100天编程挑战——承诺每天编程至少一小时,持续 100 天。

我响应了挑战,并在 Twitter 社区分享自己的进展。我的目标是完成拿到所有六个 freeCodeCamp 证书并成为一名全栈开发工程师。目前为止,我已经拿到了五个!这是我在编程过程中做出的最棒的决定之一。 我开始关注其他有抱负的开发者,看其他人成功了并分享他们的经验,同时支持其他遇到困难的人。这非常鼓舞人心,使我充满了动力。

然后我不再使用在线自由职业平台,而是联系一些本地企业。 我通过之前的 WordPress 项目获得了更多推荐。 这些都帮助我重塑了自信心。

68747470733a2f2f7777772e66726565636f646563616d702e6f72672f6e6577732f636f6e74656e742f696d616765732f323031392f31302f756e647261775f726573756d655f316871702e706e67

2019 年 9 月至 10 月:找工作

我丈夫说我可以开始找工作了。实际上,几个月前我就准备好了,只是我一直在拖拉。

一边学习一边做 WordPress 网站,对我来说是一个安全、熟悉的状态。我知道找工作会很难,而且可能会一再被拒绝。我也担心这个过程会影响到自己的心理健康。我和社区中的其他人聊天,他们的建议跟我丈夫的一样,“你现在的状态可以开始找工作了”。

9 月,当我的儿子开始上小学时,我知道是时候找工作了。我花了一些时间进行思想上的准备,并更新简历。我申请了前端开发者的职位,用一个电子表格记录应聘过的职位。

我申请了四份工作。一个是直接与公司联系,另外三个是通过第三方平台联系的。我准备申请更多,但是有两家公司都已经给了反馈,我获得了两个面试机会。

我没想到会这么快得到回音,这是一个积极的信号。

我开始准备面试,准备内容包括 HTML、CSS、JavaScript、无障碍、UI 和 UX,非技术问题和通用问题。我还查询了要去面试的公司的相关信息

我的面试经验

没有白板演示,没有现场解决困难的算法,也没有技巧性问题。第一轮面试时面试官只是想要了解我,他们对我的非技术背景很感兴趣。我一直以为这是一个阻碍,但实际上这是一个话题点。

这份工作的第二轮面试是一道带回家做的编程题。

而另一份工作的面试官当场给我发了 offer。我决定接受这个 offer,所以现在我是一名 JavaScript 前端开发者了。

申请和面试的过程这么短,我也感到惊讶。我觉得这是以下因素综合影响的:

  • 我之前的职业经历使我获得了许多有用的软技能,例如良好的沟通,时间管理,项目管理,项目展示等
  • 我参加了除了学习之外的其他活动,例如开发 WordPress 网站的经历,参加会议,有作品集,写博客文章
  • 面试前的充分准备

我用来学习编程的资源

社区中的许多人都问过我学习编程的资源。由于我是全职妈妈,因此我选择使用自定进度的在线平台学习,这样我可以在一天中抽出几小时远程学习。以下是我用来学习编程的一些资源。

1、freeCodeCamp

在整个编程学习过程中,我一直在使用 freeCodeCamp。它帮助我打牢学习基础,在我深入学习新技能之后,我总是回过头来学习基础。

freeCodeCamp 教会了我保持独立并学习如何找到解决方法。编程并非一蹴而就,你需要做深入的探索才能完成项目——这是一项关键技能,并且随着时间的推移,你会越来越擅长搜索。你会对  Stack Overflow 非常熟悉。

2、YouTube

这是我观看过的一些频道:

  • freeCodeCamp:我已经看了很多 Beau Carnes 的 JavaScript 视频。这里有很多视频,几乎涵盖了所有与技术相关的内容,从 Python 到 GraphQL。FCC 官网的课程不包含视频,所以这些视频是很好的补充资源。
  • The Coding Train:我用它来理解基本的 JavaScript 概念,例如 Promises、Async/Await、Prototypes 和高阶函数,还有一些关于正则表达式的有用视频。
  • AcademindLevelUpTuts:涵盖对各种技术、框架和库进行深入研究的视频,从基础过渡到高级。
  • Curran Kelleher:我使用这个频道来学习 D3.js。

3、freeCodeCamp 技术专栏

我可能有点偏爱 freeCodeCamp 了,但这些文章内容确实不错,并且在发布前经过 freeCodeCamp 团队的审核。专栏不仅技术类文章,还有关于求职的文章,非常有用。

4、MongoDB University

整个夏天,我一边找工作,一边在 MongoDB 学院完成了许多免费课程。培训时间为三周,你必须在一定时间内完成作业。如果你通过了考试,你将获得结业证书。

5、技术文档

我经常阅读 API、框架、库和语言的官方文档,例如,MDN  的 JavaScript 文档和 W3C 的 HTML 文档。

6、egghead.io

这是一个需要订阅的视频教程服务网站,涵盖了各类框架、库、工具和语言。

7、可汗学院

学习 JavaScript 时,你需要了解一些基本的数学知识。我发现可汗学院很好。我在上面学习了基础代数课程。所有课程都是免费的,涵盖了一系列学科。

有许多收费或免费的在线资源,多做一些研究,找到适合你学习风格的资源。

关于找工作的 15 个建议

  1. 最低要求:我强烈建议你拥有作品集,简历,领英账户,推荐信,GitHub上的项目/仓库,在 CodePen 或者 Glitch 上展示业余项目。
  2. 他人对你简历反馈:让别人看看你的简历,给你建议,这将帮助你更清晰地评估自己。
  3. 一页简历:有人建议我将简历从两页改为一页。招聘人员会查看数百份简历,因此你需要立即引起他们的注意。长篇幅的简历是绝对不行的。首先罗列出你的技术技能,展示你的相关经验和业余做的项目。如果招聘人员感兴趣,他们将访问你的领英个人资料以获取更多详细信息。
  4. 让大家都知道你在找工作:在公共平台上注册,提交简历到招聘代理机构和求职平台上,例如 Reed  和  Glassdoor。修改你的领英资料,注明你正在寻找新的机会。
  5. 参加招聘会:参加一些专业的技术招聘会,这是一个绕过招聘代理机构并直接与雇主沟通的机会。
  6. 直接联系公司:我从内部人员那里获得的建议,很多公司不会公布他们初级开发者职位,这些职位通常有潜在的候选人。因此你可以直接与公司联系。这可能不会立即产生效果,但是他们会将你的信息记录在案。偶尔与他们接触,看看他们是否有在招聘的职位。
  7. 缺乏业务经验:Web 开发者常常被要求需要具有业务经验尤其是招聘代理机构比较在意这点。我看见一些初级 Web 开发岗位也有这个要求。但是,并不是在企业工作过才能拥有业务经验。我处理这个问题的方法是与招聘人员谈论我的自由职业。我为客户开发 WordPress 网站就是有效的“业务经验”。招聘人员通常会问我是如何找到第一个客户的。我做的第一个网站是一个为家庭成员服务的商业项目。我做了一个“按需付费”的模型。招聘人员看中了这点。所以,你需要利用好相关联的信息。
  8. 社交网络:多去参加会议和聚会。结交行业内的人是很有用的方式,但是因为我得照顾家庭,所以不能去参加很多聚会。Jackson Bates 有一篇很棒的文章,讲到如何在第一次参加技术大会时展示自己。我也参加过几次会议。在某些会议上,可能会有公司在场,他们经常希望招募开发者——这也是一个绕开招聘代理机构,直接与技术公司交流的机会。我总是一个人去参加会议。参加的时候我会有些紧张,不过这可以帮助我拓展人脉并结识新朋友。
  9. 拥有积极的在线形象:我从一位雇主那里得到的反馈是他们对我在线上的资料印象深刻。许多潜在的雇主会在面试你之前尝试在网上找到你。他们想对你的情况先有所了解。你可以创建一个博客,写一些你热衷的事情。
  10. #100 天编程挑战:在 Twitter 上记录你的过程。这是一个查看进度的好方法,同时这也是个拓展网络的好方法。我在 Twitter 上“认识”了许多积极进取的开发者。我可以看到其他人的编程学习进行怎么样,并分享建议。另外,经验丰富的开发者经常也会发表评论并提供建议,从学习的角度来说,这是很棒的。
  11. 有一位导师:我丈夫是我的主要导师,此外我经常寻求社区中其他人的帮助,以获取不同的观点。不要害怕提问,他们通常会很乐意为你提供建议和反馈。
  12. 为技术问题作准备:多逛论坛,上面有很多人可以提供这方面的建议。
  13. 为通用面试问题做准备:不要忘记为这类问题做准备,例如“介绍一下你自己”。
  14. 模拟面试:我从自己的经历中发现模拟面试至关重要。纸上准备与实际面对人回答问题是完全不同的。需要不断练习。
  15. 不要看轻/低估自己:这是我能给的最重要的建议。我最大的障碍其实不在于技能,而是缺乏自信。我每天都在克服这一点。请记住,你所了解的比你想象的要多。不要贬低自己,对自己做的事和取得的成绩要保持乐观。
68747470733a2f2f7777772e66726565636f646563616d702e6f72672f6e6577732f636f6e74656e742f696d616765732f323031392f31302f69616e2d7363686e65696465722d54616d4d6272346f6b76342d756e73706c6173682e6a7067
Photo by Ian Schneider on Unsplash

结语

“坚毅是对长远目标的热情和和坚持。坚毅是日复一日、年复一年的努力不懈,不断投入时间和精力,直到实现你的目标。坚毅的生活应该是一场马拉松,而不是短跑。”

Angela Lee Duckworth 的这段话几乎总结了我过去两年的生活。

我的编程之旅不是快速的冲刺,而是两年的马拉松,有跌宕起伏,有悲伤或喜悦的眼泪。我很多次都想放弃了,但是让我继续前进的是热情与坚持。除了抚养孩子,这是我做过最难的事情了。

我不想给人留下“学习就到此为止”的印象。继续学习新技能并不断发展至关重要,尤其是在快速发展的 Web 开发领域。随着我开始了新的职业生涯,新的马拉松开始了。我确定跌宕起伏还会继续,但这是一条值得走的路,因为我将做自己喜欢的事。