cda

您的位置:首页 > 精彩阅读 > 我如何在1年内转行成了一名软件工程师

我如何在1年内转行成了一名软件工程师

2018-12-05

作者 | Amanda Bullington
翻译 | Mika
本文为 CDA 数据分析师原创作品,转载需授权

 

在决定转行前,我是科技公司的一名营销人员。我尝试过很多类型的营销工作,具备活动、公关、搜索引擎优化、内容创作、数字广告、邮件营销,但从未找到最适合自己的。

我的上家公司是个人理财的创业公司,品牌知名度很高。公司的座右铭是“内容为王”。与大多数科技公司不同,这家公司里有大量的编辑和记者,只有少数软件工程师。

在我入职一年后,公司决定改变策略。单纯靠内容已经不够了,许多个人理财初创公司在当年都推出了app,为了不被落在后面,我所在的公司开始减少内容方面的业务,同时迅速招聘产品人员、工程师和设计师。

在这一刻我意识到,是时候转行了。在本文中,我将介绍我是如何转行为一名软件工程师的。下面让我们开始吧。


第1步:沉浸式课程

我开始找软件工程方面的沉浸式课程。App Academy和Hack Reactor都提供了一些免费的入门课程,帮助感兴趣的人群入门。Hackbright也有针对女性开展一些编程课程。

最终,我选择了Hack Reactor,它提供了为期一个月的结构化学习计划(SSP)课程。课程设置很实用,我认识的三名学员在完成课程后都获得了软件工程方面的工作。


第2步:沉浸式编程

决定选择Hack Reactor,之后我需要为SSP做准备。为此,我完成了Udacity上JavaScript的入门课程以及其他一些JavaScript在线课程。

针对SSP和Hack Reactor的沉浸式项目,我共花了四个月的时间学习编程,每周学习6天,每天12小时以上。这段时间,我不仅提高了解决问题的能力,还提高了对JavaScript的理解,而且还学习了前端和后端框架。



第3步:提高求职技能

在学习在线课程的过程中,我学习了很多概念,其中最主要的是算法和数据结构。

沉浸式课程中涵盖了工程师在工作中所需的技能。针对面试的练习时,掌握算法和数据结构是关键。

在提高面试技能时,我用到了以下资源:

* CodePath :为期8周的课程,涵盖从数据结构到系统设计的所有最常见的面试问题。

* InterviewCake:针对算法思维中最常见模式的指南

* LeetCode :海量练习题

* Grokking the System Design Interview: 解释如何权衡常见的系统设计问题,例如如何设计Instagram


第4步:咨询经验丰富的工程师

我向许多资深工程师询问了求职建议。以下是一些最有用的建议:

* 迈出第一步:每个工程师都是一步步成长起来的。许多工程师在找到心仪的工作之前,都经过了不断的尝试和努力。如果你没有马上找到合适的工作,也不要泄气。

* 重写简历:如果你是刚入行的工程师,你的简历可能有些稚嫩。关注你所做的内容和技术决策,而不是实现了什么。

* 寻找指导机会:关注拥有30多名工程师的团队,因为这将让你很快提升编程技能,并获得指导机会。

* 进行个人项目:这将展示你在求职过程中对软件工程的热情,让你在面试中脱颖而出。


第5步:忽略无益的建议

我找工作的时间是2018年的夏天,当时我收到了很多善意但无益的建议。有些来自招聘人员,工程师同事和一些朋友。以下是其中一些:

* 过去几年,初级工程师的市场需求已经放缓。中型公司只招高级职位,并暂缓招聘初级职位。

* 过去几年,不仅市场过度饱和,而且培训机构学员的质量也有所下降,很难找工作。

* 你是很有能力的求职者,但我们公司没有足够的资源来培养你。请保持联系,我们很乐意等你有更多经验时再面试你。

* 在暑假期间找工作很难,你还需要与计算机科学专业的学生竞争实习机会。请在秋季有更多职位空缺时再试试。

* 秋招形势也很严峻,随着公司接近第四季度,招聘将放缓。如果你今年夏天找不到工作,你就得等到明年了。

* 你可以试着找找产品经理的实习机会。等你有一定经验了,也许可以转行到软件工程。

我确信很多工程师都听过类似的建议,关键是要学会忽视它们并保持专注,否则很容易分心。


第6步:制定学习计划

在学习Hack Reactor之后,我花了很多时间复习技术概念,为面试做准备。以下是我大致的学习计划:

* 学习算法和数据结构
* 学习系统设计
* 完成一次黑客马拉松
* 建立个人作品集
* 记录下电话面试和现场面试的问题
* 与他人一起练习


第7步:充分利用社交网络

让招聘人员更容易找到你。以下几个平台都是不错的选择:

* LinkedIn
* Hired
* AngelList
* GitHub

向未来的雇主展示你的工作能力非常重要。项目链接,文档和清晰的代码更容易吸引招聘人员。


第8步:记住,这是数字游戏

我经常听到工程师说“这只是数字游戏”,以下是我的一些数字:


投简历:156次 共26小时
电话面试:41次 共20.5小时
技术面试:11次 共11小时
编程挑战:10个 共80小时
现场面试:6次 共28小时
总计:165.6小时 约6.9天


了解数字能帮助你进行分析,例如:

* 所投简历的26%转化为电话面试

* 51%的电话面试将转化为技术面试或任务

* 28%的技术面试将转化为现场面试

根据这些数据我发现,我的简历能够引起招聘人员的兴趣,在最初的电话面试中取得了成功,但在展示技术方面我有些薄弱。

因此我花更多的时间去提高技术能力,目标是提高从技术面试到现场面试的转换率。


第9步:搞定现场面试

现场面试涵盖的内容很广,持续2到6个小时不等。我参加的现场面试中主要涵盖了以下内容:

* 算法
* 系统设计
* 使用公司的API开发应用程序
* 关于我的编程语言(JavaScript)的问题
* 关于HTML / CSS的问题
* 关于前端框架的问题
* 关于各种数据库的问题(SQL / noSQL)
* 解释你创建的GitHub项目,你做了哪些权衡,以及将来会采取哪些不同的做法

在每次技术面试和现场面试后,我会记下当中的问题,这构成了我之后面试的学习指南。


第10步:进行职业规划

你认为5年后你的职业发展会是怎样的?

在面试中我常常会被问到上面这个问题。

关于职业发展我有好几种选择,比如web端、移动端、网站可靠性和DevOps等等。

同时还有后端、前端和全栈的选择。有时这些角色之间的界限很明显,有时却模糊不清。在学习和搜索的过程,虽然我不知道只会会选哪条路,但有些工作我更喜欢做,而有些却不喜欢做。

比如,我不喜欢涉及到网站像素的问题,但我对移动端设计很感兴趣;设计架构和建立数据库有点乏味,但我喜欢获取大量数据并对其进行操作或可视化。



一些建议

* 编程挑战是学习机会

我进行过很多编程挑战,但最终因为效果不好而没有提交。也有一些未完成但提交了的。不过在进行这些挑战中,我学习到了很多,也意识到自己的不足。

* 坦然接受拒绝

每次技术面试和现场面试都是如此。被拒绝是很正常的,起初我会感到自我怀疑,但慢慢地我开始摆正心态,并从中学到了很多东西。

* 寻找导师

我很幸运,在我参加面试过程中有导师的帮助。在求职的三个月中,导师每周会跟我交楼,询问我求职情况以及面临的困难。


结语

转行比我想象的要困难得多。

成为一名工程师需要花费很多时间。这意味着我要扩大专业人们,坦然面对学习中的困难,忽视所有的反对者。

在学习中,我需要找到适合自己的学习资源。不断参与新的项目,研究新算法。

这些努力值得吗?绝对的。

我很高兴地说我找到了自己心仪的工作,并可以继续学习和成长。最重要的是,我在工作中获得了信心,不断充实和提升自己。

完 谢谢观看

分享
收藏

OK