Techlent 出品
原创:李果
演讲视频请翻至底部观看
前言
我是在国内读的物理学博士。毕业后,到美国的一个国家实验室做了四年多的博士后。后来转行到湾区的一个中型公司做data scientist。现在是data science team lead,带着一支四个人的队伍。我整个转行过程历时两年。期间走了不少的弯路。我在这里把我的血泪教训写下来,或许对之后想转行的同学会有帮助。
转行初期
在刚开始转行的很长一段时间里,我是非常迷茫和困惑的,因为根本不知道怎么才能转行。听人说转data science需要统计知识,我就跑去问了一个统计学博士。他扔给我门板厚的一本书,说是统计硕士的教材。我努力看了看,但是没有能啃下来。后来,有人跟我说应该学习机器学习,还推荐了吴恩达的课。我学了一遍,却很难想象这些知识跟工作有什么联系。再后来,又听说了kaggle competition,我于是又花了好几个月的时间没日没夜地做比赛。。。
这样没头没脑地学了一通,觉得不是个办法。只好硬着头皮开始投简历。我当时是直接海投,回复率非常低。平均一个月只有一个面试,而且一面就挂。我记得很清楚,第一个面试的时候,我说我会编程、会机器学习、还参加过kaggle。面试官问:“你会sql吗?”我就挂了。我只好回头去学sql。后来再面试,面试官问:你会ab testing吗?我就又挂了。等我学好了ab testing。第三次面试的时候,面试官说:你知道哪些optimization的算法?我就又一次挂了。。。
越面越迷茫,只好再另外想办法。又有人告诉我说参加data science的Boot Camp会对找工作有帮助。于是开始申请insight data science。因为这家是免费的。但是申请了两三次都没申请上。实在没办法,就申请了一家收费的Boot Camp。学费一万六美元,而且需要全日制学习三个月。这个资金和时间的支出,对于一个有家有口的博士后来说还是很多的。但是我想,如果我转行后一年有十万的话,我每多做一个月的博士后,就损失好几千美元。于是我一咬牙,贷款了一万五,辞了博士后的工作,一心一意地去上了Boot Camp。
Boot Camp跟我想象的很不一样。一个班的同学,背景千差万别。有各种学位(本科,硕士,博士)和各种专业(理工科,商科,社会学)的组合。于是,有不少内容对于一部分同学来说太难,但是对另一部分同学来说又太简单。
其实从我自身的感觉来说,我在Boot Camp最大的收获是认识了一位人特别好的同胞姐姐。她是MBA出身,在进Boot Camp学习之前就已经在一个大公司做了好几年的senior manager。她给我讲了很多business cases的东西。我把我自己之前经历过的面试一个个地摆出来跟她说。她也非常耐心地给我一个个地分析。我那时候才恍然大悟:原来面试是有很多套路的。而且意识到自己之前的很多猜测也都是错的。比如之前面一个大公司,面试官问我一个case study的问题。问的时候提供了ABC三个选项。我选了一个,然后就挂了。我后来就一直想,那应该选哪个呢?直到这位姐姐帮我做了分析,我才知道这个根本就不是一个选择题。我应该先跟面试官确认目标,定义metrics。然后分别说这三个选项的优缺点以及他们能产生的效果。那之后,她还给我改了简历。非常仔细地问了我每一个项目的各种细节,然后把这些细节拼成一个故事。她跟我逐字逐句地把我的简历足足改了三次。在那之后,我才对找工作有一个比较清楚的概念。
前三次onsite
早在我在参加Boot Camp之前,我就拿到过一个onsite。那是一个游戏公司。岗位是marketing data scientist。onsite之前只做了一个take home challenge,并没有电面。onsite的时候,hiring manager 现场给我一些数据,让我花几个小时做一下,看看有什么有意思的东西。我当时对marketing一窍不通。根本不知道他们想让我干嘛。想着,既然是data science,那就应该上machine learning。于是,我那里憋了半天,套了一个random forest的模型。后来讲的时候,marketing部门来了两个人,听得一脸茫然。我就知道我挂了。现在回头想想,那其实是一个analytic data scientist的岗位。技术上要做的应该只是一些aggregation和visualization,更重要的是做business analysis,从数据里头找出insights并且提供一些actionable的suggestions。
Boot Camp刚开始的时候,我又拿到了一个科技公司的onsite。岗位是data science engineer。那个位置很偏码。面试的时候,面试官虽然也问了些machine learning的问题,但是主要考的还是coding。那是我第一次白板面coding,发现面试和自己刷题是两回事。第一,面试官其实也很想candidate写出来,会给各种提示。第二,面试官会就问题本身聊很多的东西,所以candidate要认真听,进行有效交流。当时四轮coding,我都在面试官的提示下磕磕绊绊地做出来了。HR的反馈是positive,但是让我去要reference letter。然后,等了一周却收了到拒信。那个姐姐帮我分析说,湾区科技公司一般都不要reference。我应该当时是weak positive,于是他们通过要reference来拖时间,看看排我前面的candidate是否接offer。
在Boot Camp快结束的时候,我又拿到了startup的onsite。面试官问的问题非常杂。SQL,coding,machine learning全都考了。然后给了一个口头offer。工资十万都不到。那个同胞姐姐强烈建议我不要去,说不利于我的职业发展。还教我去问了那家公司funding round是多少,burning rate是多少之类我从没听过的问题。公司那边也是很着急,不断催我,告诉我去不去都快点给答复,说后头还有六七个人等消息呢。这对我触动也很大。原来是否能拿到offer很大程度取决于别的candidates面的怎样,还有比自己面得好的candidates是否接offer。最后,我还是听从了那个姐姐的建议,没有接这个offer。
混沌初开
现在回头来看,我之前的三个面试其实是三个不同的方向。一个偏分析,一个偏码,还有一个比较general。一般大公司的ds部门分工比较明确。而小公司或者一些还不明确ds职能的中型公司往往就会考的杂一些。Boot Camp正式结束之后,我又足足全职面试了四个月,面了各种各样的公司。上面说的三个方向的岗位,都又分别拿到了些onsite。
偏分析类的岗位,我面试了几个大公司的product和marketing的ds岗位。他们都只考SQL,统计,还有business case study。比如某FLAG公司,我和几个朋友的总结了一下,觉得如果一个candidate聊了五分钟没有绕到SQL,八成是要挂的。我onsite的时候,五轮面试,其中都四轮都挺好的。但是,有一轮,面试问了一个似乎跟NLP有关的问题。我一激动就说了好些NLP的解决方案。说了差不多十分钟,我问:“Does that make sense to you?”他说:“I’am not sure.”我就知道我挂了。在开车回家的路上,我仔细回想了下,才反应过来,那题其实也是一个sql问题,根本用不着什么machine learning的技术。不过话说回来,这类岗位只面sql并不意味着面试会容易。sql是可以考的很难的。而且business case study也有很深的套路。半个小时的一轮面试需要一气呵成。没有专门准备过,是几乎不可能过的。
而偏码的岗位会考coding,对machine learning也会问的很深入。比如某大公司,前后三轮的coding,中间聊了很多machine learning的细节问题。面我的那位senior manager是个同胞。技术非常好。我跟他电面一轮,onsite吃饭的时候又聊了一个小时。他问了我很多问题,有不少我自己之前都没仔细想过。虽然我后来没拿到offer,但是就跟他聊这么两个小时,我都觉得收获巨大,非常值得。
General DS岗位的onsite来自一个有一定规模的startup。他们想招第一个marketing data scientist。面试的时候,他们把coding,sql,statistics,marketing全都问了一遍。sql考的比较细,但是都不难。coding六道题,特别简单,居然有一道fizzbuzz。很显然,他们当时其实并不是很清楚data scientist具体要什么样的技术。所以把能想到的东西都拿来考了一遍。不过他们的marketing部门的面试官问了我很多跟marketing domain相关的东西,比如funnel analysis还有multi-touch model。我自然是不熟悉。我讲了一些time series的模型,他们也不太买账。所以onsite过后,他们纠结了一阵子,给我加了一轮面试。还是考我case study,还问怎么跟marketing部门里不同的队伍交流。虽然我在加面之前找了一个marketing出身的朋友帮我补了补知识,但是我的domain knowledge还是没法应付这些问题。其实回头想想,这就是一个偏分析的位置。他们应该侧重于有marketing背景的candidates,而且没必要考coding。
调整策略
磕磕碰碰面了这么些公司后,我逐渐对data science的市场有了比较清楚的认识。第一,data science是一个很宽泛的概念。不同公司的data scientist需要的技能完全不同。而且,这些知识非常的庞杂,没有人能全部学下来。第二,不论哪条track,面试都是很全面和深入的,candidates需要相应地做很充分和细致的准备。最怕的就是那种每一个方向都学一点,又都没有学透的情况。
基于这些认识,我重新整理了一下思路。首先,大方向上,我根据自己的兴趣和之前项目经历,放弃了偏分析的track。然后,在偏码的track上,我把重心放在NLP,因为我之前做的比较透彻的两个项目都是NLP的。定好方向后,一切就比较容易了。我把主要的学习时间都用来加强自己的coding和NLP的知识。并且调整简历,专门投相关的岗位。而且,我对面试也比较有心得了。每投三五个岗位就会有一个回复。而且只要开始面试流程,超过一半的几率我都能走到onsite。
不过那个时候我的压力非常大。最后那一个来月,我一口气挂了五个onsite,挂的我怀疑人生。特别是其中几个面试,我感觉面都不错。比如说一个公司,我一路技术面试过关斩将,做出了很多很难的问题。但是,最后hiring manager跟我聊了一阵子,气场没对上,就挂了。内推我的朋友跟我说:“hm想招有工业界经验的人。如果没有经验,就需要‘特别出类拔萃’。但是怎么算是‘特别出类拔萃’是一个很主观的概念。”
还有另外一个公司,挂我的原因是“没有大数据的经验”。我仔细回想了下,问我所谓大数据经验的是其中一个很junior的成员。他考了我一道极其简单的coding题,然后就只问了我处理过最大数据有多大。更有意思的是,另一个面试官知道我挂了后比我还惊讶。写信鼓励了我,并且把我推给一些recruiter。
所以说,面试有许多随机的因素。我们能做的就是尽量做好准备,然后不断地去试。
拿到offer
拒掉第一个口头offer后,过三个多月我才拿到新的offer。给offer的是一个初具规模的startup。面试也就是考一些coding还有machine learning,都不难。Hiring mananger对我很不错,在电面和onsite的时候都跟我聊了很久。所以面试还是看缘分,互相看着顺眼就会聊的比较好。
那之后,第二个offer也紧接着来了,那是一个中型公司。他们的recruiter刚开始跟我聊的时候,我还没有拿到offer,但是他了解到我跟几个公司约了onsite,就开始催着我约面试。还叮嘱我说:如果拿到offer先别签,一定要跟他先说一下。我做了一个online的coding challenge之后,很快就电面了。那天是周四。我上午跟他们一个senior director聊完后,recruiter跟我约了下一周onsite。但是,我那天下午收到了第一个公司的offer,并被告知在下周一之前给回信。我打电话告诉了第二个公司的recruiter。他马上把onsite挪到了第二天,也就是周五。
那次onsite,技术上考了coding,统计,还有machine learning,此外就是跟一个product mananger吃了个午饭。到最后一轮的时候,那个电面我的senior director来了,跟我说:“大家都很喜欢你。换我们以前还是startup的时候,我们就可以把offer letter放桌子上了。但是,我们现在是一个上市公司,需要走一个流程。应该明天会把offer letter email给你。你另一个offer给多少钱?你看,我们得报一个你能接受的offer吧。”我现在回想起来,一直觉得他最后这两句话是挖了一个坑。我当时很老实地说了,后来谈offer的时候,这个底薪就说死也谈不上去了。
拿了这两个offer后,我就把别的面试都停了。第一,这两个offer都还不错,比最早的那个口头offer多了不少。第二,别的面试要么还在比较早期,要么就不在湾区,而我自己经济压力也已经巨大无比。然后,我就开始非常认真地跟他们谈offer。为了保证谈判效果,我每次电话前都把要说的话写下来,甚至标注上该用什么样都语速和语气。最后,两边都加了些钱。综合考虑后,我就从了第二家。结束了我长达两年的转行历程。
李博士6月29号活动时的演讲视频
(腾讯视频)
视频地址: 
https://v.qq.com/x/page/m0892xjaki9.html
YouTube视频地址请戳
https://youtu.be/eURcJEUyCsY
结尾
长按关注公众号
Techlent 官方网址
长按进入

了解更多
继续阅读
阅读原文