原文: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 这样可以自由安排进度的学习平台。随着我的孩子渐渐长大,我有了更多空闲时间学习编程。
本文的目的是激励那些没有专业背景的人学习编程。任何人都有可能进入到科技行业。我想分享一些我的经验和观点。但我想强调一点,这一路并非一帆风顺,有跌宕起伏,有迷茫,也有黑暗时刻。
首先我将回顾自己的编程之旅,然后我会说一下我用来学习编程的资源。最后,我将分享一些关于如何获得第一份开发者工作的建议。
2019 年 1 月至 3 月:迷茫
我有两个孩子,所以我觉得自由职业是学习期间赚取额外收入的好方法。我有使用 WordPress 帮人制作网站的自由职业经验,同时也使用了其他自由职业平台,像 Fiverr 和 Upwork。
我知道这些平台对于某些自由职业者来说很棒,但对我来说,并非如此。尽管我在那些平台上被标注为“具有潜力的人选”,我还是没找到工作。由于我是新手,所以没有评分和评论,而许多客户在找自由职业者开发某个平台的时候,希望找到有类似经验的人选。但是我找不到工作,也就没有经验——这是一个恶性循环。
对于那些我有“资格”应聘的项目,我会花几个小时来研究和编写方案,但我从未收到反馈。有时候,50 多个人同时应聘一个项目,还有许多自由职业者愿意接受低于普遍标准的薪酬。我在价格上没有竞争优势。
我开始质疑自己的价值,并降低了时薪,希望至少从一个客户那里获得评价。压垮我的最后一根稻草是一家公司邀请我协助他们进行一些“市场研究”,并回答一份调查表。结果发现这是一个骗局——他们让自由职业者在亚马逊上为产品撰写假评论,作为交换,他们可以给我五星好评。
我拒绝了,并且注销了在所有自由职业平台的账号。我对自己没有信心了,严重怀疑自己的能力,开始变得消极。我在论坛上阅读其他有抱负的 Web 开发者无法获得面试和找到工作的帖子,试着通过这些同样悲伤的故事来获得心理平衡,缓解消极情绪。
最糟糕的是,我停止了编程,迷失了自己想要实现的目标。
2019 年 4 月至 7 月:退一步重新评估我的生活
我的丈夫,也是我的导师,问我:“什么事才能让你再开心起来呢?”
我的回答是 “学习编程和 JavaScript”。因此,我继续做自己喜欢的事情,学习 freeCodeCamp 的课程,同时我也继续用 WordPress 帮别人做网站。
5 月,一位老同事想雇佣我做远程工作,为期三个月。虽然这份工作与技术无关,但我需要收入,所以就同意了。这份工作让我暂时转移视线,帮助我找回了信心。
日常的学习和工作使我精神振奋。几个月后,我又开始变得积极向上,动力满满。
2019 年 8 月:#100 天编程挑战
我一直在寻找可以使我保持专注持续编程的东西,所以我到 Twitter 上寻求灵感,然后就发现了 #100天编程挑战——承诺每天编程至少一小时,持续 100 天。
我响应了挑战,并在 Twitter 社区分享自己的进展。我的目标是完成拿到所有六个 freeCodeCamp 证书并成为一名全栈开发工程师。目前为止,我已经拿到了五个!这是我在编程过程中做出的最棒的决定之一。 我开始关注其他有抱负的开发者,看其他人成功了并分享他们的经验,同时支持其他遇到困难的人。这非常鼓舞人心,使我充满了动力。
然后我不再使用在线自由职业平台,而是联系一些本地企业。 我通过之前的 WordPress 项目获得了更多推荐。 这些都帮助我重塑了自信心。
2019 年 9 月至 10 月:找工作
我丈夫说我可以开始找工作了。实际上,几个月前我就准备好了,只是我一直在拖拉。
一边学习一边做 WordPress 网站,对我来说是一个安全、熟悉的状态。我知道找工作会很难,而且可能会一再被拒绝。我也担心这个过程会影响到自己的心理健康。我和社区中的其他人聊天,他们的建议跟我丈夫的一样,“你现在的状态可以开始找工作了”。
9 月,当我的儿子开始上小学时,我知道是时候找工作了。我花了一些时间进行思想上的准备,并更新简历。我申请了前端开发者的职位,用一个电子表格记录应聘过的职位。
我申请了四份工作。一个是直接与公司联系,另外三个是通过第三方平台联系的。我准备申请更多,但是有两家公司都已经给了反馈,我获得了两个面试机会。
我没想到会这么快得到回音,这是一个积极的信号。
我开始准备面试,准备内容包括 HTML、CSS、JavaScript、无障碍、UI 和 UX,非技术问题和通用问题。我还查询了要去面试的公司的相关信息
我的面试经验
没有白板演示,没有现场解决困难的算法,也没有技巧性问题。第一轮面试时面试官只是想要了解我,他们对我的非技术背景很感兴趣。我一直以为这是一个阻碍,但实际上这是一个话题点。
这份工作的第二轮面试是一道带回家做的编程题。
而另一份工作的面试官当场给我发了 offer。我决定接受这个 offer,所以现在我是一名 JavaScript 前端开发者了。
申请和面试的过程这么短,我也感到惊讶。我觉得这是以下因素综合影响的:
- 我之前的职业经历使我获得了许多有用的软技能,例如良好的沟通,时间管理,项目管理,项目展示等
- 我参加了除了学习之外的其他活动,例如开发 WordPress 网站的经历,参加会议,有作品集,写博客文章
- 面试前的充分准备
我用来学习编程的资源
社区中的许多人都问过我学习编程的资源。由于我是全职妈妈,因此我选择使用自定进度的在线平台学习,这样我可以在一天中抽出几小时远程学习。以下是我用来学习编程的一些资源。
在整个编程学习过程中,我一直在使用 freeCodeCamp。它帮助我打牢学习基础,在我深入学习新技能之后,我总是回过头来学习基础。
freeCodeCamp 教会了我保持独立并学习如何找到解决方法。编程并非一蹴而就,你需要做深入的探索才能完成项目——这是一项关键技能,并且随着时间的推移,你会越来越擅长搜索。你会对 Stack Overflow 非常熟悉。
2、YouTube
这是我观看过的一些频道:
- freeCodeCamp:我已经看了很多 Beau Carnes 的 JavaScript 视频。这里有很多视频,几乎涵盖了所有与技术相关的内容,从 Python 到 GraphQL。FCC 官网的课程不包含视频,所以这些视频是很好的补充资源。
- The Coding Train:我用它来理解基本的 JavaScript 概念,例如 Promises、Async/Await、Prototypes 和高阶函数,还有一些关于正则表达式的有用视频。
- Academind 和 LevelUpTuts:涵盖对各种技术、框架和库进行深入研究的视频,从基础过渡到高级。
- Curran Kelleher:我使用这个频道来学习 D3.js。
我可能有点偏爱 freeCodeCamp 了,但这些文章内容确实不错,并且在发布前经过 freeCodeCamp 团队的审核。专栏不仅技术类文章,还有关于求职的文章,非常有用。
整个夏天,我一边找工作,一边在 MongoDB 学院完成了许多免费课程。培训时间为三周,你必须在一定时间内完成作业。如果你通过了考试,你将获得结业证书。
5、技术文档
我经常阅读 API、框架、库和语言的官方文档,例如,MDN 的 JavaScript 文档和 W3C 的 HTML 文档。
这是一个需要订阅的视频教程服务网站,涵盖了各类框架、库、工具和语言。
7、可汗学院
学习 JavaScript 时,你需要了解一些基本的数学知识。我发现可汗学院很好。我在上面学习了基础代数课程。所有课程都是免费的,涵盖了一系列学科。
有许多收费或免费的在线资源,多做一些研究,找到适合你学习风格的资源。
关于找工作的 15 个建议
- 最低要求:我强烈建议你拥有作品集,简历,领英账户,推荐信,GitHub上的项目/仓库,在 CodePen 或者 Glitch 上展示业余项目。
- 他人对你简历反馈:让别人看看你的简历,给你建议,这将帮助你更清晰地评估自己。
- 一页简历:有人建议我将简历从两页改为一页。招聘人员会查看数百份简历,因此你需要立即引起他们的注意。长篇幅的简历是绝对不行的。首先罗列出你的技术技能,展示你的相关经验和业余做的项目。如果招聘人员感兴趣,他们将访问你的领英个人资料以获取更多详细信息。
- 让大家都知道你在找工作:在公共平台上注册,提交简历到招聘代理机构和求职平台上,例如 Reed 和 Glassdoor。修改你的领英资料,注明你正在寻找新的机会。
- 参加招聘会:参加一些专业的技术招聘会,这是一个绕过招聘代理机构并直接与雇主沟通的机会。
- 直接联系公司:我从内部人员那里获得的建议,很多公司不会公布他们初级开发者职位,这些职位通常有潜在的候选人。因此你可以直接与公司联系。这可能不会立即产生效果,但是他们会将你的信息记录在案。偶尔与他们接触,看看他们是否有在招聘的职位。
- 缺乏业务经验:Web 开发者常常被要求需要具有业务经验,尤其是招聘代理机构比较在意这点。我看见一些初级 Web 开发岗位也有这个要求。但是,并不是在企业工作过才能拥有业务经验。我处理这个问题的方法是与招聘人员谈论我的自由职业。我为客户开发 WordPress 网站就是有效的“业务经验”。招聘人员通常会问我是如何找到第一个客户的。我做的第一个网站是一个为家庭成员服务的商业项目。我做了一个“按需付费”的模型。招聘人员看中了这点。所以,你需要利用好相关联的信息。
- 社交网络:多去参加会议和聚会。结交行业内的人是很有用的方式,但是因为我得照顾家庭,所以不能去参加很多聚会。Jackson Bates 有一篇很棒的文章,讲到如何在第一次参加技术大会时展示自己。我也参加过几次会议。在某些会议上,可能会有公司在场,他们经常希望招募开发者——这也是一个绕开招聘代理机构,直接与技术公司交流的机会。我总是一个人去参加会议。参加的时候我会有些紧张,不过这可以帮助我拓展人脉并结识新朋友。
- 拥有积极的在线形象:我从一位雇主那里得到的反馈是他们对我在线上的资料印象深刻。许多潜在的雇主会在面试你之前尝试在网上找到你。他们想对你的情况先有所了解。你可以创建一个博客,写一些你热衷的事情。
- #100 天编程挑战:在 Twitter 上记录你的过程。这是一个查看进度的好方法,同时这也是个拓展网络的好方法。我在 Twitter 上“认识”了许多积极进取的开发者。我可以看到其他人的编程学习进行怎么样,并分享建议。另外,经验丰富的开发者经常也会发表评论并提供建议,从学习的角度来说,这是很棒的。
- 有一位导师:我丈夫是我的主要导师,此外我经常寻求社区中其他人的帮助,以获取不同的观点。不要害怕提问,他们通常会很乐意为你提供建议和反馈。
- 为技术问题作准备:多逛论坛,上面有很多人可以提供这方面的建议。
- 为通用面试问题做准备:不要忘记为这类问题做准备,例如“介绍一下你自己”。
- 模拟面试:我从自己的经历中发现模拟面试至关重要。纸上准备与实际面对人回答问题是完全不同的。需要不断练习。
- 不要看轻/低估自己:这是我能给的最重要的建议。我最大的障碍其实不在于技能,而是缺乏自信。我每天都在克服这一点。请记住,你所了解的比你想象的要多。不要贬低自己,对自己做的事和取得的成绩要保持乐观。
结语
“坚毅是对长远目标的热情和和坚持。坚毅是日复一日、年复一年的努力不懈,不断投入时间和精力,直到实现你的目标。坚毅的生活应该是一场马拉松,而不是短跑。”
Angela Lee Duckworth 的这段话几乎总结了我过去两年的生活。
我的编程之旅不是快速的冲刺,而是两年的马拉松,有跌宕起伏,有悲伤或喜悦的眼泪。我很多次都想放弃了,但是让我继续前进的是热情与坚持。除了抚养孩子,这是我做过最难的事情了。
我不想给人留下“学习就到此为止”的印象。继续学习新技能并不断发展至关重要,尤其是在快速发展的 Web 开发领域。随着我开始了新的职业生涯,新的马拉松开始了。我确定跌宕起伏还会继续,但这是一条值得走的路,因为我将做自己喜欢的事。