第一次跳槽经验小结

第一次在职跳槽总算完成了!在面试准备的过程中,我学到了不少工作之外的知识和技能,这里分享一下我的跳槽经验。下周入职新公司Spotify的Machine Learning Engineer职位。

PhD转行之路这篇文章发表已经过去2年,这里总结一下第一次跳槽的感受。

工作一年多,本来还没打算跳槽,Linkedin上几个猎头联系,电话聊了之后发现有些机会还不错,就接着面下去了。因为是计划外的跳槽,加上个人原因比较忙,所以并没有一次面很多公司,也没有自己去投大厂。面了几家风格迥异职能不同的公司,基本都给了口头offer,但由于各种原因,比如公司突然停止招人,或者人事不批准工作签证等,最后只拿到一家的正式offer。技术面经可以自行搜索一亩三分地的面经贴

我并没有提前几个月就系统地准备跳槽,很多时候面试都是提前几天突击。当然,还有自己平日工作中的积累。跟两年前作为应届毕业生(new grad)申请相比,能明显感到自己现在面试时心态的变化。

1. 工作中的日常积累

1)总结知识点

上班跟上学不一样,不太有机会能够系统地学习新知识,很多时候都是一些零星的知识碎片和概念技巧,学了不记下来马上就忘了。我之前实习时的mentor教我用Google Doc分门别类地及时记录新知识点,不定期地整理总结。比如关于evaluation metrics,书本上写的跟自己工作中实际用到的,会有不同的理解。这样长时间积累下来就会有很多自己独创的“使用手册”。

可以利用上班时间查漏补缺地学习相关的知识,也不算是干私活。如果公司里有其他组用到某些tooling,自己就可以在工作之余学习。

Learning on the job,在工作中学到的东西确实很多。

2)精读基础书

为了更好地深入了解巩固某些概念,精读一些经典的基础书总是好的,特别是像我这种从STEM转行的同学,在学校没有读过统计名著。现在重新读ESL(The Elements of Statistical Learning),虽然真的很吃力,但很多时候有豁然开朗的满足感。读Numerical optimization也对优化有了更加深入的认识。

精读的时候可以自己推导公式,思考算法逻辑,自己写代码implement,读一些博客文章,看看YouTube上一些讲得很好的视频加深理解。

至于时间安排,我自己是利用每天通勤的2小时看书看视频,然后周末用几个小时推导公式进行总结。

3)了解行业发展和前沿

关注科技博客medium, 知乎的技术专栏,微信的IT类公众号,提高自己的姿势水平。

2. 了解面试官

基本在面试前都会知道面试官的名字,这是非常有用的信息。我一般都会LinkedIn + Google去搜面试官的背景、经历、之前的工作方向,在面试的时候可以作为谈资,特别是在面试最后问问题的时候,如果能够针对面试官的背景提问,就显得你做足了功课。

举几个例子
1)面试官A之前在大公司担任要职,现在在一个startup,问问他之前经验那么丰富,为什么现在选择了小公司?想要实现什么?
2)面试官B跟你一个学校,就可以聊聊他在学校时上过的课,哪个最有帮助?
3)面试官C跟你一样是博士转行,问问他转行的感受,5年之后有什么计划?
4)面试官D之前发了不少paper(你Google发现的),可以问他paper细节(如果你读了),问他工作中是否也要求发paper呢?发paper的idea是谁的呢?
5)面试官E之前一直在小公司工作,现在在大公司,问问他工作环境有什么不同

人啊,都喜欢聊自己,如果能够让面试官感受到你对他很关注很感兴趣,让他对自己的经历侃侃而谈,会留下不错的印象。

3. 了解公司和产品

除了公司官网介绍和技术博客,我也是准备面试的时候才发现YouTube是一个很好的了解公司产品的平台。很多公司会把自己的meet up,tech talk,conference talk放在youtube上,这些视频对了解面试公司非常有帮助。

这里分享一个我准备面试时看的Spotify相关视频https://www.youtube.com/playlist?list=PLT-lveGqOjgGBCZLir8KNyrVQCWwkbL5i

举几个例子
1)我在网上读到说你们现在用这个技术X,你能给我介绍一下么?
2)我看了一个你们的tech talk,里面提到你们的平台Y,能告诉我一些细节么?
3)你觉得工作中最大的技术挑战是什么?
4)你觉得你们最大的竞争对手是什么?是A,B,C么?你觉得你们的优势是什么?
最后一个问题一般可以问pm或者manager。问的时候可以加入自己的理解,表示自己确实在思考这个问题,而不是为了问而问。

4. 突击ML系统设计

这里的突击是指像我这样的非计划面试。如果你定了计划打算准备几个月再面试,那就可以把【突击】改成【持久战】。

我这里主要就是对那些下周就面试了,还没系统学过系统设计的同学。

1) 工作中保持全局观,始终思考着system和pipeline。即使自己只是做一个环节一个model,也可以跟engineer跟其他组员聊,从大局上了解整个流程。比如你做了一个新feature,怎么scale,怎么evaluate,怎么productionalize,怎么上线,怎么monitor。就算自己不做,也可以问问多了解别的同事怎么做的。
2)看视频学习。速成是不可能速成的,但一些概念性和框架性的东西,其实也不难理解。
3)看经典系统设计书Design Data-Intensive Applications。当然如果有时间还是要精读,但突击的时候可以花1、2天时间浏览一下,同样是熟悉概念和词汇。

5. 突击刷题

首先,你得系统上过至少一节算法/数据结构的课(网课或者学校),不然连概念都不熟悉。上过课做过作业应该就熟悉常用算法,那么刷题就是时间和熟练度的问题,所以突击的效果肯定远远比不上几个月的刷题。

但是如果平时你的工作偏建模或者分析,基本没刷过题,面试的大多数公司也不考蠡口,但下周的一个面试要考蠡口,与其坐以待毙,不如有技巧地突击刷个题,尽人事。

这里我推荐下YouTube上Cracking the Coding Interview作者的系列视频,她非常系统条理清楚地讲了常见的问题和解题思路。这些视频不只是突击的时候可以看看,大家长时间刷题之余也可以看看巩固自己的知识点。

当然还要看看论坛里和glassdoor的面经,如果能刷到高频题就luckyyyy

6. 好好准备自我介绍

一般面试的第一步都是自我介绍,大概1-2分钟。这算是第一印象,也决定了面试官之后技术提问的内容。如果你不想让面试官问你NLP,就不要在介绍中说自己做过NLP的项目。如果你觉得自己pipeline做得很好,那就可以强调自己做过end to end。

这个介绍不宜太长,可以说完之后跟面试官说, 如果你有兴趣我们可以接着说。

7. 短处、处理人际冲突的2个故事

长处不说了,单说这两个负面的行为问题。

New grad面试的时候我还在用常见的模板,比如完美主义,同组同学不干活……工作之后发现这些问题其实很常见QAQ

短处基本工作中跟manager聊天的时候都会提到,自己刚开始工作肯定也有遇到各种不适和问题,意识到自己图样图森破。短处不一定是你已经改好了的,比如我的短处就是有时候太偏research而没有考虑到production的可行性,可以举例说明因为自己的短处导致项目不成功之类的,现在自己意识到并且在努力改善。

至于人际冲突,当然还是有套路的,出现矛盾然后约咖啡单独聊天。主要是体现你这个人能够接受别人的意见,并且能够妥协达成一致。

8. 态度和沟通

常言道,说啥固然重要,但话怎么说更重要。面试从开始都最后,我们的态度都要是自信正面积极乐观的,最好还能带点幽默和适当的自嘲。从基本的礼仪来说,见到面试官主动打招呼握手,讲话的时候尽量直视面试官的眼睛,在别人讲话时不打断别人说话,但也要engaged适时给些诸如“厉害了,牛逼,怎么做到的“之类的正面反馈,自己讲话的时候注意别人的反应,不要独白太长时间。

想象面试官是每天坐在你旁边的同事,他的问题可能就是他工作中遇到的问题,来找你讨论。所以回答问题的时候,我觉得可以就用跟同事聊天的语气,而不是学生回答老师提问的语气。当然这个可能也因公司而异,tech公司一般比较随意,传统行业以及咨询公司可能就得稍微端着。总之,入乡随俗。

Non-verbal的态度(肢体语言)也很重要,挺胸不驼背,肩膀挺直,不要坐立不安,也不要总是盯着天花板。

遇到不会的问题,及时说明自己的思路和想法,如果面试官知道你在哪里卡住了,就可以给你hint。

用我一个朋友的话,面试的时候就乐呵呵的,谁也不想找一个苦大仇深或者动辄就崩溃的同事。工作中肯定会有困难、不会、卡壳的时候,这个时候最好能够保持冷静和学习的态度,遇到问题,解决问题,寻求帮助,共同进步。

举几个例子:
1) 面试官问了个SQL 的问题,你在他问完之后马上就知道用个join groupby count就解决了。但设想一下这是日常工作,那么最好就先重复一下他的问题,确定需求没有搞错,然后一步步地先说明自己的思考方向和理由,要实现‍‌‌‌‌‌‍‍‍‌‍‍‍‍‍‌‌‌‍X,我们得先join这两个表,用这个column X,然后我们根据column Y看每个不同的Y的情况,这里我们可以用groupby,最后我们数一下每个Y的数目。解释完思路问,sounds good? 然后你就可以开始写SQL了。如果在任何时候,面试官提问说这个不清楚,或者那个不对,你就可以及时停笔跟他交流,解释自己的思路和想法。
2) 面试官问怎么设计用户流失模型,你脑中立马搜索到相关的pipeline和专业知识。但设想一下如果这是日常工作,那第一步还是先确定需求和目标,然后大方向地讨论一下,解释自己的思路框架,然后再说细节和优化。
3)面试官问你如何监测一个模型,你在brainstorm地说了几个思路之后,他都说不太对,你确实没有思路了,这个时候可以问,能给我一点hint 么?我有点stuck。一般这时候面试官都会给你指点,对这个hint可一定要听明白了,然后举一反三,并且对面试官表示感谢。

9. 关于薪资期待和讨价还价

猎头联系的时候,一开始就会问薪资期待。我看有些帖子说不要告诉猎头自己的期待,有些则说要往高了说。我个人的经验是,自己先做好调查,比如市场均价,h1b info上类似公司类似职位的底薪,论坛里大家分享的包裹,当然还有自己现在的薪水。一般来说,跳槽的薪资涨幅至少20%。跳槽的时间可能会影响现公司的年终奖,改变通勤时间,交通费用,这些影响都要考虑在内。在说薪资期待的时候,可以给一个区间,表示有缓和的余地,区间的最低值表示是自己的底线,就可以按照20%的涨幅,区间的最高值可以是你调查出来跟你的资历相仿最高的那个数,而不是你异想天开随便给的一个数。当然,如果你觉得自己值得更高的价,也可以给一个更高的数。我当时给所有的猎头说得都是同一个区间,有些猎头听了之后,会直接帮你筛选一些职位,说某某公司付不起,你也就不用费时间去面试了。当然凡事都有例外,如果你特别喜欢某一个公司或者某一个领域,薪资并不是你唯一的选择标准,那区间就可以给得宽泛一些。

在发offer之前,不少猎头也会再次确认薪资期待,特别会问是否有其他offer在手。如果有其他offer,一些公司可能会match包裹;如果没有,那就只能空手套白狼地讨价还价,问能不能给sign on,能不能有更多年终奖,能不能加薪,虽然问了也不一定有用,但是不问的话,肯定什么都不会发生。如果对方直接给出自己薪资期待的最高值,就很难进一步提高了,这时候,我觉得可以见好就收。

讨价还价的环节,我倾向于在电话里进行,但对方给出数目的时候,先不要接受,先提出需求,然后不管对方接不接受,都说自己要再想想,问问家人朋友,等等。之后再邮件约对方电话谈。讨价还价是一门大学问,我也还在学习中,这里推荐这篇offer讨价神贴 https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/

有时候也不用太执着于包裹大小,特别是工作不满3年的新手,更重要的是积累经验,学习技术,或者体验大厂平台。也不用非得得到最优的包裹,自己觉得可以接受,就可以尽快接受。做人嘛,真诚很重要。

10. 辞职

从拿到offer到最终辞职,经过了足足3个月,主要是因为需要律师办理工作签证转移H1B transfer。有的美国同事比我拿到offer晚,却能马上入职,我还是有些羡慕的。幸运的是H1B transfer顺利批准。批准之后,跟新公司确认了入职时间,然后跟老板面谈了辞职,确定了离职时间,发了辞职信。一般公司要求一到两周的提前通知,方便工作的交接和手续的办理。

两份工作之间,如果有空,最好稍作休息,给自己放个假!

最后,祝大家工作开心,跳槽顺利!

31 comments:

  1. 大神投简历是一页好还是两页? 想跳槽,现在建立一页有点太紧,两页又有点空泛。求指导

  2. 写的一如既往的好. 干货满满.
    Btw, 有一条也许是错字? 1, 3) “提高自己的姿势水平” 是想说知识水平?
    不过, 完全是可以看懂的. Thanks for sharing.

  3. 看了你的文章,很感动,谢谢你!
    我是国内化学PhD毕业, 然后到美国来做博后。现在想转行的话,是不是必须通过再读一个硕士才可以呢?谢谢。

    1. 也很难说需要不要再读一个硕士,因为我自己也没读过。现在的转行形势跟我转行的3年前又不太一样,很多ds和ml的硕士毕业。我也很难给出有参考性的看法。

  4. 从您的《PhD转行之路》开始关注您,一直到看到这篇文章。谢谢您干货满满的文章。我本人是经济学博士在读,但后来上了一些data mining的课,萌发了转行data science的想法。后来看了您那篇《PhD转行之路》,更坚定了我的想法。我现在上了3~4门data science课,课上学习了R和Python,另外自己有接触一些SQL,不知这样够找一个data science(比如data scientist或者data analyst)的intern吗?另外,您提到了最好上过一些data structure/algorithm的课程或网课。这些是指学一门以Java或C为基础的相关课程吗?因为我现在时间紧迫,想知道这样的课程含金量有多大?谢谢!我会持续关注您,希望看到您更多的分享。

    1. 谢谢。经济学应该算是ds很对口的专业,申请intern之前做一些相关的项目吧。至于data structure/algo,取决于具体的职位。现在整个ds分得很细,偏商业的ds不需要algo,但更看重business、communication,ab test, sql, analytics,偏工程的ds需要engineering的能力,就需要algo。所以看你对哪个方向感兴趣了。

      1. 谢谢您的回复!说实话,我还不了解这两种ds的差别,所以想找一个实习试一下。不过,我对需要communication的不是太有信心。另外,我看一些做ds engineering的似乎要会hadoop等一些比较fancy的技术。是不是做engineering的会技术门槛高一点呢?

        1. 我觉得这算是两个不同的方向,需要的技术和能力不一样,无所谓门槛高低,只看你自己的优势和兴趣。

  5. 您的总结写得真好,全是实用的信息。我跟您一样是生物背景,也同是哥大校友,不得不说大神您真是生物转行的标杆啊。崇拜~
    有一个小问题,您觉得ds是不是一定要刷题走码农路线呢?走统计方向偏analyst会不会让路越走越窄?总觉得刷题怎么也刷不过本身计算机背景的人。谢谢。
    另外,对Spotify的职位很感兴趣,找您refer会不会太唐突?

    1. analyst道路并不会窄,你可以跟一些做这个方向的人聊一下。
      至于刷题,无所谓刷得过谁才行,数据算法也就那些个题型和题库,用心努力地刷,还得加上运气和机遇。

      至于refer,我是觉得跟自己投没什么区别,就不提供refer了。

  6. 同刚刚跳槽。也是PHD中间自学的,也是第一个公司一年之后跳槽的。写的很多内容都很想相似,手上正好刚拿到一本 “how to win friends and influence people in the digital age” 。 太有缘分。 但是明显感觉你的信息整理能力更胜一筹! 希望能看到更多的日常分享。感谢分享

  7. Hi, 准备MLE面试时刷到你这篇,收益匪浅。顺便请问你能帮忙内推spotify的MLE吗?我也是纽约地区的MLE,最近疫情被雷,不知道你们组还招人吗?

  8. 感谢大神分享!想问一下h1b身份允许在两份工作之间有空白时间吗?可以有多久呢?

  9. 你好!无意中看到你的博客,受益良多!我想问一下你,这样转专业申请h1b transfer会有问题吗?我现在是土木专业,想去读一个nanodegree,但不知道可不可以用这个转到data science。

    1. 关于签证和身份问题,请咨询律师和学校的国际生办公室,我无法给出专业答案。我自己在phd期间修过cs和统计课程,而且phd的项目也比较偏计算,所以没什么问题。

  10. Hi, 我最近想跳槽,但是我比较担心的是与离职公司的关系处理和跳槽过程中的保密工作,我很少见到有攻略提及这部分,
    1. 比如如果我在Indeed上更新了简历,我们公司HR有没有可能trace到这个变动。
    2. 又比如在简历或者application form一般不是会要求留工作经历或者现在的manager吗?猎头或者要跳的公司recruiter不会突然哪根筋不对一个电话或者email给我现在的老板问我表现吧?
    3. 一般留出多少时间离职比较好?我身份和签证没有什么顾虑,只是怕走太急这些年建立起来的人脉坍塌

    望解惑!谢谢!

    1. 我没有作为hr或者hiring manager招人的经历,所以1和2我都不太清楚。3的话一般是提前两周告知老板要离职。处理离职关系和跳槽很难有统一的答案,很多时候都是因人而异,所以可能少有攻略吧。

  11. Ju,你好!

    我现在在做DS,在准备转MLE。知道MLE和DS相比,主要不同突出在那个‘E’上。请问下你在准备面试的时候,需要同时熟练python和某一个complied language,比如java吗?如果刷题只用python,java会但不熟练,这样有可能通过MLE的面试吗?

    谢谢!

  12. 谢谢详尽的阐述,受益匪浅!目前有个比较纠结的问题,本人是生统毕业,在药厂工作过一年半,后因家庭原因换工作离开了药厂,在一家食品公司做统计师工作已经七年多了,期间一直有学习DS相关知识,正在考虑跳槽,有两个选择,一个是一家保险公司Sr data scientist, 另一个是知名药厂的expert Biostatistician. 能不能帮忙分析一下给一些建议?万分感谢?

    1. 我不清楚你的具体情况和offer细节,所以也没法分析哈。我觉得你可以从这三点考虑,短期来看工作文化和环境如何,长远来看职业发展的机会,还有薪资待遇。

  13. Ju,你好!
    我是刚刚转行DS不到一年的行业新人,对学习DS/MLE相关技术很有热情。感谢你干货满满的博客,我读了很受益!这里想请教一个问题,关于你提到的“科技博客medium, 知乎的技术专栏,微信的IT类公众号”。可否列举几个你个人特别推荐的呢?
    谢谢!

    1. 我一般都是google一些topic,然后跳转到知乎或者medium的文章,如果觉得写得好就会直接关注作者。等以后有空了可以整理一下推荐的作者。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.