机械系PhD如何转行成为程序员

前言

“大猩猩”给大家带来的非CS专业PHD毕业转行做码农的总结。算不上⼀次非常成功的经历,但其中的经验教训希望能给有相似背景的同学带来⼀点帮助。主要针对在北美非CS专业的PhD学⽣,想在美国转行做软件工程相关行业的的同学。

概述

背景介绍

大猩猩本人

北京大学 力学专业本科

Rutgers University 机械工程 PhD

MathWorks simulink组 软件工程师

简单介绍一下自己的背景。目前Rutgers PhD机械工程(ME)毕业,同时攻读了统计专业master。即将入职MathWorks做SDE(软件工程师),说Mathworks大家可能不熟悉,其实他们的核心产品就是Matlab,相信很多同学都用到过。

12年秋季我从北大力学专业本科毕业进入Rutgers ME攻读博士学位。博士研究的主要方向是连续介质力学、材料理论建模和相关的数值模拟。简单来说非常偏向理论,与industry的联系很少。16年年初对未来从事本专业工作有了很大犹豫,决定转专业求职。其中过程会在下文继续详谈。

读博的决定对很多同学来说并没有在最开始就考虑清楚利弊。读博的时间很长,一般至少5年。毕业后从事什么行业,这个行业的就业前景、发展如何往往会是我们需要关心的问题。但是相信很多有过博士经历的同学会发现,除去北美的热门专业(例如CS,ECE之类),有时候真的很难在市场中找准自己的位置。原因或者有些专业确实市场的需求不大,又或者对国际学生就业的难度会很大(因为身份因素,很多工作虽然很合适,但无法申请)。对名校的PhD,更好的network和reputation会让他们在自己专业的求职中更有优势。但是对大部分同学来说,可能求职的另外一个选择就是转行了。这是个⾮常现实的现象。

就我个人情况而言,由于我的PhD research方向非常偏向理论,又没有实验室技能,当我念了几年PhD,发现自己专业方向的求职前景并不理想。由于个人的情况,还是希望能把PhD学位拿到,因此考虑到之后求职,自然想到了往别的专业转行。当时考虑的有以下几个⽅方向:data、金融、CS或者咨询。都算是比较热门和大家熟知的。结合自己的情况后,决定在学校修一个统计master的二专业,将来往data scientist方向靠。当然之后为什么会找SDE,我会继续说明。

PhD转行的原因有很多种,但总体来说要么自己不喜欢自己专业,要么⾃己专业求职困难,迫于实际情况不得已。我知道很多同学一开始并没有想明白为什么自己要读PhD,也有很多同学在念PhD的过程中因为文章等原因非常痛苦。各种现实的压力会随着年岁的增长在PhD攻读的过程中越来越大,尤其对冷门专业的同学,更是如此。所以,一旦自己有了想改变的念头,希望大家能仔细的咨询周围的朋友老师,对行业情况尽可能的了解再做出决定。而一旦下定决心要去做改变,就越快越好。当然,任何时候你都应该勇敢的去做出你认为对的决定,哪怕你PhD已经念了5、6年还远远未达到毕业标准。改变并不会因为你选择的晚变得无效,可怕的是明知道不变不行而不去做改变。

第二专业

很多转行的PhD并没有选择念二专业。这当然是可以的。通过自己的⾃学,很多同学也成功转行进入了自己理想的行业。当然,我之所以选择修二专业是基于以下几点:

  1. 我认为二专业能让自己的简历变得能更match一些职位。这点对freshman还是挺重要的。同时通过课堂上的学习和project练习,确实能学到很多东西,也能丰富自己的简历。
  2. 自己还学有余力,自己PhD research的压力并没有太大。我的老板的指导方式也比较“散养”,不是非常push的那种。
  3. 我和自⼰老板沟通过,也得到了我老板的支持。有些PhD的老板并不会支持自己学生做这些,遇到这样的情况,就得自⼰衡量了。是瞒着自己的老板去学,还是继续和老板做好沟通。不同的选择各有利弊,每个人的情况都不同,这里我就不好给出更多建议。

我们学校master需要修10门课,我花了大概2年多总共5个学期修完。不算是很快,主要是同时还有PhD的工作需要完成。期间除了一些基础课之外,重点修了算法,AI 和机器学习之类的课。因为想往data scientist方向靠拢,所以还学习了与数据分析相关的一些课。

关于实习

对于转行的同学,找full time position一大困难应该就是没有相关背景,这点会让简历关都很难通过。所以如果能有一两个实习会有很大帮助。我的第一个实习是在HPE公司下面的一个数据库子公司的machine learning组,project是在数据库里实现一个算法服务。这和我原先预想的data scientist方向区别很大,完全是software engineer的工作。我当时对职业并没有太清晰的理解,因为是朋友⼀个很强力的内推,当时也没有别的更好的机会,刷了几个星期的题,通过了面试就去了。这个实习对我的帮助还是很大的,同时也起到了敲门砖的作用。自⼰不是cs专业,所以从中也学到了很多实用的东西。

其实第一个实习结束已经是我PhD第五年了。秋季开学是第六年。按理我开学就应该开始找工作了。但是当时一方⾯thesis还有部分内容没有完成,一方面自己有些拖拉,直接导致了当时自己错过了很多求职的机会。等觉得应该抓紧找工作的时候已经快11月了。现在想来,这是非常不应该的。同学们⼀定要从我这里吸取教训。

之后还是通过同学和朋友的内推,分别获得了一家大公司和一家小公司的onsite机会。但是都没有通过。大公司的职位是一个类似带consult性质的data analyst,自己去面试时发现并不是很喜欢这个工作,当然面试也被拒了。小公司是国内在美国这里开的一个AI实验室,面试不是很理想,但对方提出了可以提供给我一个暑期实习的机会。当时时间已经到了2⽉,针对new grad的职位基本没了,而对社招的职位,自⼰的竞争力明显不够。考虑再三,决定去接了这个实习,延期自⼰毕业的时间,等第二个实习结束全力再找full time job,也明确把自己定位在找sde的工作。

这两个实习,对我最后找到工作有很大的帮助。个人体会,主要是让自⼰的简历变得能”看“了,可以通过简历关获得面试。而获得面试,是很重要的第一步。

关于full-time求职

我想很多人很多文章(当然包括我们自己的公众号)有提到找工作的各种细节。因此,介于我最终也没有找到最top的公司,算不上什么大牛,我就不多做讨论,只谈一些我在这过程中个人的理解。

首先想说,对SDE,对转专业的同学,最重要的准备工作就是刷题,好好刷题,认真刷题。因为美国SDE的tech面试,一般最直接的就是做题。确实实际的工作,和刷题并没有太多关系。但这就是在面试过程中最硬的指标,尤其对entry level的position。其实这一步对于转专业的同学有好处,因为只要通过练习,刷题,完全可以做到与cs专业的同学一样的水平。相较而言,对于cs的基础知识,project、实习甚至面试官对非科班出身的人的刻板印象,往往很多不是我们自己能一时之间可以改变。

其次是内推。内推是最好能拿到面试机会的方法。大家应该尽可能发动自己的network,联系自己的好友、同学、朋友和老师,和对方说明清楚自己的情况或者让对方拥有一份自己的简历。哪怕当时并没有机会,未来也可能会有opening。同时,linkedin、一亩三分地等求职社交论坛上也会有很多人愿意提供内推的机会,应该积极去联系。这些人可能是你的校友,可能是你朋友的朋友,也可能根本不不认识你,但你都应该去尝试建立network。就算别⼈没给你feedback,你也不会有所损失。比起海投,内推往往能保证通过简历筛选的第一关,甚至可能直接让你的hire manager看到,会大大增加你拿到面试的机会。

接着是对于公司的选择。个人感觉对于简历单薄的同学,大公司(比如FLAG之类)往往对于我们会有更友好的态度,更愿意提供机会和培养新人。而小公司更侧重于你的实际技能能不能马上投入工作中,反而会更难拿到面试。所以不用觉得⾃自己这里或者那里不够,就对大公司有些失去信心,相反你反而更可能在那里获得机会。

最后是onsite这点。自我总结一下,我一共只去过5家onsite,分别是IBM,Google,Bloomberg,MathWorks 和实习去的那家小公司。最终只有MathWorks拿到offer,成绩不算是很好。IBM不是SDE的工作,不做评价;BB自我感觉被老印黑了;GG可能是和面试官的沟通不够好,虽然面完感觉不错,但结局还是挂了。那家小公司面试完对我评价不高,但事后了解也有部分人事关系,实习之后,公司对我的表现还是比较满意的,我个人也很感谢他们能提供给我这个实习的机会,公司也有return offer的意向,但我基于综合的考量并没有move on。但总体来说,面试次数多了后,还是有不少提升,自信也有提高。所以如果一开始onsite发挥的不好,一定不要灰⼼。通过不断的练习,一定可以发挥的越来越好。

总结

这次求职,拿到了offer,也不算太坏。对这个结果,我给自⼰打个及格分吧。自身的实力还是不够,所以像Google、Bloomberg这样的公司,最终还是失败了了。有些遗憾,但也只能move on。未来的路还很长,不论是技术上还是别的方面,自己还有很多可以继续努力的空间。希望我分享的这些经验教训能给朋友们带来些许帮助,有想沟通交流的朋友欢迎留言。大家共勉~

------ 关注公众号:猩猩的乐园 ------