小哥裸辞AMD,学习一年,拿到宝马自动驾驶ML工程师offer!

AsiaLee 2018-04-06

过去的一年对我来说是一段相当“惊艳”旅程。一年前,我离开了计算机芯片设计的全职工作,去“回到学校”,将专业转变为机器学习。但是,我没有以传统的方式回到学校,而是选择了Udacity在线教育。经过一年的在线学习和两个月的求职,我在宝马的硅谷技术办公室找到了一份工作,在自动驾驶汽车方面开展机器学习。

对于那些考虑职业变化的人,可能会离开他们的全职工作,也许我的故事可以为你带来灵感和参考,并提供一些有用的惊艳。对于那些感到好奇的人,我的故事至少会成为一个有趣的话题!

小哥裸辞AMD,学习一年,拿到宝马自动驾驶ML工程师offer!

我的背景

在我职业生涯改变之前,我的专业背景是计算机芯片设计。在密歇根大学完成了传统教育,并于2009年毕业于计算机工程学士和电机工程硕士学位。毕业后,在AMD的波士顿办事处找到了一份工作,从事计算机芯片设计和验证的工作。前几年让我学到很多,而且收获满满:学习行业最佳实践,为数百万人使用的产品做出贡献,并且感觉我正在以专业的方式发展。

为何要改变?

但是,大约在2014年末,我开始感觉到半导体行业停滞不前,我不断收到行业内整合的消息。所以如果想成为一个具有高增长潜力的行业,所以我不能保持原状。幸运的是,在那段时间,MOOC教育越来越受欢迎,所以我利用在线MOOC学习了网络开发,Android开发,机器学习和人工智能。我觉得ML/AI是这些中最有趣的,而且增长潜力和前景广阔,所以我决定把学习重点放在这个领域。

所以,在2015年的目标是获得机器学习的专业知识。下班后和周末,我会在Coursera学习吴恩达(Andrew Ng)的机器学习课程,阅读Reddit网站上的机器学习内容,并在线阅读ML教程(比如Andrej Karpathy的博客文章)。2015年11月,Udacity宣布了机器学习Nanodegree(MLND),我很高兴地注册。不幸的是,我觉得自己在全职工作中进度太慢,很可能是因为我的自律能力差。在工作之后的晚上,常常觉得自己的大脑太累了,我无法自己去做任何诸如学习之类的脑力劳动。我大多在周末取得进展。

我真的很想成为AI革命的一部分,机会停留的成本太高。在经济上,有了2〜3年的生活开支储蓄,所以放弃工作和全职学习是可行的。我曾简单考虑申请传统大学获得计算机科学硕士学位,但我认为在线教育对我很合适。2015年,我听说了乔治亚理工学院的一个新项目,名为OMSCS。考虑了学费的问题后,这似乎是一个很好的选择。然而,Udacity宣布了他们的MLND,这是一个以行业为重点的教育,完成时间明显短于OMSCS。由于MLND的时间成本和学费相对更具优势,而且以行业为重点,所以是绝佳选择。我计划在5到6个月内完成MLND,开展个人补充项目,并在2016年第四季度进入ML/AI的行业。

我的总体计划在2015年末确定了,并且通过朋友和家人的支持,我准备好了执行计划。2016年1月,我结束了在AMD工作6年的时间。

回到学校

当然,事情并不总是按计划进行。这是2016年发生的一系列事件:

  • 1月:离开工作,放松几周

  • 2月:在MLND上学习,包括Nandodegree的前端Web开发FEND,因为我对web开发感兴趣

  • 3月:在泰国度假一个月,陪伴父母

  • 4月:在日本度假一周,为了更方便搭乘波士顿的航班,完成FEND

  • 5月:完成MLND最后一个项目,开始观看斯坦福CS231n讲座

  • 6-7月:继续观看CS231n讲座

  • 8月:完成对CS231n的审计,深入强化学习

  • 在2016年9月,Udacity宣布了自动驾驶汽车的新的9个月Nanodegree学位。对我而言,人工智能最有趣的应用是机器人技术,而自动驾驶汽车是一个及时且非常有用的应用。在我的总体规划中,我的计划已经落后了,但我认为自动驾驶汽车Nanodegree(SDCND)值得投入额外的时间。由于Nanodegree的头三个月将专注于深度学习和计算机视觉,我觉得我以很快开始在该领域申请工作。因此,我的2016年时间表如下:

  • 9月:完成我的MLND项目。申请SDCND

  • 10月:在SDCND的报名成功,开始SCDND

  • 11-12月:在SDCND上学习

准备求职

到2016年12月中旬,我完成了SDCND的前3个项目:基本车道检测,交通标志分类和行为克隆。Udacity为我提供了一个很好的投资组合的起点,但在我开始申请工作之前,我想补充一些额外的东西。我发现物体检测演示视觉上很酷,所以决定做一个基于深度学习的物体检测项目(SDCND的第5个项目实际上是车辆检测,但它不使用深度学习技术)。最终,我花了4周的时间创建了一个交通标志检测项目,在TensorFlow中从头开始实施流行的“SSD”算法。

同时,我还在做Udacity的职业提升项目,主要是更新我的简历,LinkedIn简介和GitHub简介等。Udacity在整个过程中提供了宝贵的建议和鼓励。对于我的简历和LinkedIn个人资料,我的主要努力是制定一份简明而有说服力的简要声明,因为我当时是一名非标准申请人。经过反思以及来自Udacity职业服务的反馈,以下是我使用的总结性陈述:

将职业转变为专注于深度学习的人工智能,并具有AMD在微处理器设计和验证方面的先前行业经验。已证明有能力成功执行影响全球数百万用户的大型计算机工程项目。

目前就读于Udacity的自驾车工程师Nanodegree,2016年10月开始,同时还担任Nanodegree其他学生的导师。

另一个很好的机会是当SDCND的学生Patrick Poon创建Boston Self Driving Cars Meetup小组时。聚会最初集中在Udacity的SDCND上,由于我是第一个SDCND的成员,所以与他分享了我的经验。Patrick建议将记录谈话内容上传到Youtube,这是一个好主意,因为它有助于加强我的在线业务以及聚会小组的工作。在接下来的几个月里,通过这次聚会为我开启了一些专业机会。

工作搜索

到2017年1月底,我准备申请工作。主要关注深度学习和计算机视觉工作,并偏好与自动驾驶汽车相关的工作。也申请了AI芯片设计的工作和一般的机器学习。使用的渠道是LinkedIn Jobs,AngelList,直接在公司网站上申请,在波士顿当地的第三方招聘,以及Udacity的职业服务。总共积极申请了大约90份工作。

面试问题

一般来说,我面试两种角色:(1)机器学习和计算机视觉工程师;(2)软件工程师实现机器学习算法的研究人员。

对于(1),面试问题侧重于机器学习(尤其是深度学习)概念,ML/DL如何应用于计算机视觉以及“传统”计算机视觉概念(视角变换,边缘检测,线条检测等)。此外,还有很多关于查找车道线的问题,以及如何改进车道检测算法。大部分面试都花在讨论我过去的深度学习和计算机视觉项目上。如为什么,经历的过程,如何改进项目。反复面对的一个特殊问题是“你是如何超越课程要求的?”

对于(2),面试官会衡量我对机器学习的总体兴趣,然后提出编程问题,如关于LeeCode的问题。从统计数据来看,我在这些面试中表现不佳,因为我几周前才开始研究CTCI/ LeetCode。

面试和薪酬的数据

最后,我从90份工作申请中进行了9次面试,约10%的申请获得了面试机会。在我看来,这是一个相当不错的转换率。在这9次面试中,其中4次进行了最后一轮面试:2次全职面试,2次实习最后一轮面试。我在这4次面试表现出色,因为他们都提供了薪酬。在为期两个月的求职结束后,我有2项全职和1项自动驾驶角色的实习机会,另有1项实习机会提供自然语言的角色(应用NLU / AI来理解医疗记录)。最终,我决定接受宝马的全职工作。

宝马的面试经历

让我回顾一下并描述与宝马的申请和面试流程。在2月初,Udacity宣布宝马公司招聘各种职位,他们对SDCND计划的候选人感兴趣。我浏览了开放职位,并对他们的软件开发人员,机器学习职位特别感兴趣。该职位专注于机器学习,应用于宝马的自动驾驶工作,涉及技术洞察与评估,原型设计以及将技术迁移到生产中。这听起来像是研究和工程的完美结合。我兴奋地申请这份工作。

一两周后,我从宝马得到了面试通知。总的来说,我的面试过程是首次电话面试,然后是现场面试。这两次都涉及机器学习和计算机视觉方面的技术问题,以及它对无人驾驶汽车的应用。对于我的现场面试,我被要求提供关于数据和机器学习的演讲和问答,其中的具体主题事先已经发送给我。我认为这个话题非常有趣,我很乐意准备并发表演讲和问答。当然,这两次面试都让我有机会提问并更好地理解角色和团队。

我在宝马的现场面试是一个积极的经历。我与之合作的团队看起来很棒,而且这个角色非常有趣,而且潜力巨大。在每隔几分钟不断检查我的电子邮件/电话一周后,我收到一封来自宝马HR的电子邮件,并安排了一个电话进一步讨论,并就细节达成一致。

自从我在宝马开始工作以来,已经过了三个多星期了,事情看起来不错。我被令人难以置信的同时和惊人的技术所包围。有这么多的东西需要学习,还有很多创新的空间。对未来我充满期待!

相关推荐