一年前,我在田纳西州的一个健身房做兼职工作.今天我在一个网络安全相关的初创公司担任软件工程师.
这段难忘的经历给我的生活带来了很大的改变.尽管这极具挑战,但我认为任何人只要有足够的动力都是可以做到的.
现在知识已经变得容易获取了.若想在某一领域有竞争力你需要的仅仅是投入足够的时间.在软件行业尤其如此.
当我在2016年开始学习编程,我想我的生活正在发生重要转变.
我去大学读了医学专业,取得了生物化学和人类学学位.但是我很快发现我对科学和医学没有多少兴趣,并在还没想好接下来该怎么走的情况下离开了大学.
我在一家攀岩俱乐部中工作了两年,但是情况并不太好.我知道是时候来一次大的改变了.
我已经有很长一段时间没有学习编程了,但我知道这就是我真正想做的.终于,在我2016年的生日那天,准备去学习编程,并决定义无反顾的学下去.
刚开始时,对于近些年出现的各式各样的编程培训机构我还不是太熟悉.幸运的是,我很快发现了freeCodeCamp.当得知完成课程需要为非营利组织编写代码后我立刻加入了他们,而且若要参加一个bootcamp你也需要完成一个freecodecamp的开源课程.
freeCodeCamp很快成为我主要的学习方法.当然还有其他一些辅助方式,例如播客,教程,开源课件,还有文档.当有疑惑时还有Stack Overflow.
通常情况下,我通过完成freeCodeCamp上的挑战和项目来逐步提高技能.
当写代码没有什么效果时,我会通过其他方式吸取知识:比如音频或视频.我经常在不同的学习方式间变换,这样利于我保持注意力的集中.这就是我基本的学习方式,它使得我可以长时间投入到学习中.
这里展示了我初略估算的相关数据:
总计学习时间: 少于12个月
总计小时数: ~2500
总计完成项目: 70+
总计看过的CS课程: ~10
总计GitHub提交: 1500+
总计JavaScript代码: 2000+行
大多数时候我都是在诺克斯维尔和田纳西州学习,那时我住在那里.但我一直很想搬去一个科技城市,因此某一天醒来后我决定开车搬去旧金山.事实就是这样.
那天晚上我离开了,3周后我抵达旧金山湾区.在路上我花了大量时间来听播客内容.
美国中西部地区
在到达了旧金山并完成了freeCodeCamp的核心课程(前端,数据可视化,后端认证)后我写了份简单的求职简历.投了65家左右.没有收到书面回复.
记住,我刚刚进入旧金山湾区.我不知道这块会有怎样的竞争,也不知道作为雇主站在他们的水平上看我的技能有多少价值.完成freeCodeCamp的课程是否真的可以使一个人达到独立编码的水平?
这些情况让我有了更清晰的认识:我还需要做更多.市场竞争是非常激烈的.所以我迅速修改了我的计划,延长了学习时间,着手开始准备进行一个freeCodeCamp上的非盈利项目,因为我现在有了启动他的资格.
同时,我开始上网在尽可能多的城市中寻找这样的项目.由于freeCodeCamp在世界许多城市多有自发组织的社团,所以进行的比较顺利.
我很快得到来自freeCodeCamp团队关于一个非盈利项目的回复.我的一些React项目引起了Michael D. Johnson和Quincy Larson的关注,他们问我是否有兴趣帮助撰写他们的React课程.(freeCodeCamp本身就是一个非盈利项目).我还帮助开发了一个的会议管理工具,该会议主要是探讨对妇女犯罪的相关问题.
我非常高兴有机会回馈这个优秀的社区,所以我很快接受了这个挑战.我制作的React和Redux的相关挑战题目已经被纳入到最新的扩展课程中,已经作为beta版本上线了.
此外,我决定将计划延长至2017年.我将在2016年剩下的时间里继续学习,然后再去找工作.我离开了旧金山,向北穿过波特兰和西雅图到华盛顿的贝林汉姆.
在太平洋西北地区的这几个星期,我一直不间断的在完成React和Redux的挑战.我与纽约的另一个FreeCodeCamp贡献者Peter Weinberg合作,总共构建了大约80个编码挑战.
这可能是让我的简历脱颖而出的关键点,因为它代表我完成了一个真实的线上项目.
在12月下旬,我们完成了挑战题目的初步草案,并将其转换为正式alpha版本,并且现在仍然在得到社区反馈.
到达加州.
回到旧金山,我立刻开始准备再次找工作.我决定加入Outco,这是一个帮助软件工程师准备面试的课程.我一直非常反对在学习编程时花钱(部分原因是我没有钱),但是我还是选择加入Outco因为我觉得他们是为特定用户提供的服务.Outco专门针对软件工程师的面试过程,因为这个过程经常给许多甚至有经验和熟练的工程师造成困扰.
虽然我现在可以很好地写JavaScript代码,但我绝对不会在白板上解决任何算法问题.这正是Outco为学生做的一个特别的准备,因为不论好坏,白板仍然是科技公司最受欢迎的面试工具.此外,我还可以将Outco的账单延期到找到工作之后.
同时,事实是: 我已经坚持了很多个月保持每周花超过50小时的时间来学习编程,但仍不能确保完全凭自己本事在美国最富裕,最有竞争力的城市之一找到工作.
我已经非常认真努力地去面试了,但失败了!我感到了非常大的压力.
我知道是否成功将取决于未来几个月的表现.所以我加入Outco因为我认为他们的课程结构和支持将会是我最后这段时间必不可少的,事实也确实如此.
在纸上写代码准备经典面试题
到了2017年我开始了Outco的课程.我比以前更加努力.一系列算法和数据结构实践,在白板上解决问题,技术问题,配对编程,模拟手机屏幕,系统设计问题 - 以及很多.更不用说再次找工作,还有很多方面比我第一次做的更多.
当然,一旦你开始得到公司的回应,要处理完这些面试也会非常花时间(更别提还有很大的压力).
每天要为面试做准备是很艰难的.若在一个真实面试中当你站在白板前被问到二叉树问题时将更加艰难(是的,面试官问过我二叉树相关问题).
数字更有说服力:
求职申请: 192(包括2016年的65次)
电话面试: 17次
家庭作业: 6次
视频面试: 5次
现场面试: 3次
拿到offer: 1次
拿到offer花的时间: 6周
成功率: 0.52%
拿到的offer来自于TruSTAR Technology,我很高兴加入他们的团队!TruSTAR正在建立一个平台,将允许其他公司分享网络智能数据用来防止和减少网络威胁.
我在他们项目组中担任前端开发工作并且使用上了我在freeCodeCamp上学到的JavaScript的知识.这段经历是难以置信的,我已经有能力对他们的代码库做出有意义的贡献了,对此我真的觉得惊讶.
最后,对于任何打算和我做同样事情的人这里有一些建议:
你需要的是实际工作中的技能必须学习很多.没有捷径,你必须花许多时间.足够的热情将会对你有帮助.
参与一个实际项目是一个很好的学习方式,一旦你有了足够的了解,你将会很容易找到一些开源项目或其他有影响力的的项目.
JavaScript和React的学习将对你有较高要求!但同时学习它将激发你的编码兴趣.
参加一个有其他正在学习或已经工作的工程师组建的交流社区是很有帮助的.不管是在你的城市,还是在线上的网络中.寻找一些合作项目.或者寻求帮助.
如果你能做到,试着尽可能更有耐心些.这对于我相当困难.
这段旅程是有意义的--这段跨越美国的行程让我开始了软件工程师的职业生涯!我确信每个人的路都会有所不同,这也是乐趣的一部分.
坚信自己选择的道路,如果你相信自己足够强大,完全可以考虑忽视别人的观点.当然也包括我的.
确实在计算机行业有很多机会,只要你有能力,你就可以找到一条出路.
作为一个工程师,你的工作是解决问题,如果你是自学的,你遇到的第一个问题将是如何教你自己?
祝大家编码愉快!
P.S. 由衷的感谢freeCodeCamp社区和文中提及的每个人(还有其他一些: Archie, Christian, Beemer Girl 和所有我家里朋友).你们给予我的帮助是无价的
联系客服