【长文】【北美DS求职】如何有效地沟通(简历+面试+谈判)

avatar 699673
luna_983
16930
47
今年上Data Scientist/Economist的市场,最后拿到了不错的offer,在准备过程中觉得自己在软硬技能上都有许多成长,想写这个帖子总结&分享一下,也希望和大家多多交流。

先讲讲自己的背景情况,以供大家参考

- 清/北本科,Berkeley PhD New Grad,实习x1
- 投的简历不太数得清了,进入面试流程的有G (offer), W (offer), M (offer), C (offer), A (start-up, offer), A (withdraw), V (start-up, withdraw)。整个过程准备得比较全面,还没有因为面试被拒过。
- 我老公比我大一岁,是做deep learning research的,工作了半年左右,平均每周面试2-3个人。他自己也没有因为面试被拒过 - 有许多的心得是和他讨论+练习中形成的。顺便在此谢谢老公在求职过程中的支持[比心]。
- 求职是一个反馈不多的过程。有幸我在面试C公司的时候,C公司的recruiter打电话给我把我所有的面试反馈都读了一遍(verbatim!)。各个面试官对印象比较一致:觉得我沟通能力很强,编程熟练,统计扎实,对数据库后端了解比较少,对productionization没有什么经验,对公司实际兴趣一般。总体来说,我觉得是个比较公正的评价,和我从其他的公司的recruiter/hiring manager (HM)那边感受到的评价是一致的。大家可以根据这个评价自行判断下面要讲的一些经验对你们是不是适用。

想在这里谈谈在各个不同环节(简历+面试+谈判)中如何有效地进行沟通。

1. 简历

#1. Less is more.

Berkeley career service(在此强烈推荐,我觉得他们的1:1非常有帮助)提供的一个写简历的思路是:
(1)列举自己的三个最强的卖点(想象如果有人问为什么要雇佣你,而你只能回答三句话)。这些可以是学校 / PhD / 工作或者实习经验 / 文章 / 出色的项目,等等。
(2)保证这三个卖点是CV中任何人第一眼就会看到的信息。这可以通过调整字体,加粗,换颜色,调整板式等等各种形式达成,但最终目的是让读者不需要主动在很多文本中自己寻找信息。

为什么要这样写?讲讲自己的体会:有一次我实习的老板和我分享了一个500多页的PDF,里面是NABE TEC 2020(经济学业界会议)所有求职者的CV(可能有400-500个求职者?)。在此不能分享这个文件,但是快速翻过这些简历,我感到信息真的非常overwhelming,读者完全没有时间,精力和能力对于申请人的质量进行有意义的评估。有很多简历一眼看过,很难形成一个深刻和清晰的印象,读者可能就直接跳过了。比较容易迅速register的信息只有学校、实习经历、或者其他一些非常突出的成就(文章、获奖、etc)。在写简历的时候就围绕着这些“卖点”构建一份简历,可以帮助读者快速阅读和理解candidate的背景。

我自己总结的三个卖点:Berkeley PhD + 实习x1 + 顶刊的一篇文章。一旦这个结构明确之后,写CV就变得容易很多了。我最后一版CV中,所有的字体都是普通模式,只有这些信息是加粗的,感觉的确有了一目了然的效果。The devil is in the detail. 说个细节,比如一般列举publication都会加粗自己的名字,把杂志的名字设成斜体。但是这样的版式让杂志的名字(真正重要的信息)变得很不醒目,淹没在一长串的共同作者和很长的文章标题中。如果读者没有时间仔细阅读,他们只能形成一个模糊的印象:这个candidate有XX篇publication,而很难对文章质量形成印象。我最后决定把杂志名加粗,并且列在最前;面试的时候许多面试官都注意到了这篇文章,表现出感到impressed,并且问了一些follow up questions。

板式:一般一页,用readable的字体和spacing。不推荐非常modern/stylish的模版。为了好看,这些模版有时候会使用大量的空间和很大的字体标注不重要的信息(比如section title: education, working experience, etc.)而且比较难短时间内快速阅读。许多公司使用OCR软件分析CV,复杂的版式会造成内容无法被辨认。

内容:PhD经常会写,但是我个人觉得不重要的内容:invited talks;teaching;professional/referee service;reference/advisor。最后一点可能大家会看法不同,但我个人认为,公司要雇佣candidate,而不是candidate的老板。与在学术界不同,在这里老板个人能力如何并不是一个特别相关的因素。而且,DS是一个跨学科领域,即便导师在某个领域很有名,别的领域的人也大概率不了解。
很多PhD会写多个(3+)研究项目,我个人觉得没有必要(尤其是未发表的项目)。几乎没有人有能力评价这些未发表项目的质量。我最后选择了merge多个项目讨论一个unified research agenda(My dissertation focuses on ...)。
我不觉得写上述的信息本身有什么负面作用,但是很多的无关信息会稀释有效信息的效力。

#2. Discuss impacts, not findings.

在学术界,一篇文章的核心是“We find that ...”。但在业界,大家一般不关心research finding是什么,而是关心这个过程中反映出来的candidate的能力。最低工资到底会不会提高失业率?不重要,重要的是
Candidate在做研究项目中展现出或者学习到各种软硬实力(比如用了某个模型;或者和不同学科不同背景的人合作)
Candidate完成了某个非常困难的任务,说明ta能力很强(顶刊publication,etc)
Candidate产生了很大的real world impact,说明ta能力很强(被媒体报导,etc)

学术界有一套成熟的评价体系,常常不为外人所知。每个领域都有公认的好杂志/会议,以及什么样的学术成就是impressive的。如果要讨论自己在这些方面的成就,我觉得提供普适的量化指标很重要(杂志排名/引用量/etc),否则其他学科背景的人会觉得很难评价这些achievement。

在此分享一篇对我帮助很大的文章,讨论如何写CV中的bullet points:My Personal Formula for a Winning Resume (Laszlo Bock, former Google SVP of People Operations)

2. 面试

面试的技术内容如何准备在此不详细讨论了(可以自成一帖?)推荐两个我觉得很有用的资源:
SQL:pgexercises.com;网上有很多SQL的练习资源,但大都很ad hoc。这个很structured & comprehensive我觉得很好用。
stats:Mathematical Statistics with Resampling and R;我接触过很多统计的教材,但感觉这本书最practical & 最接近于Google或者其他大厂的DS面试内容。

#1. Provide structured responses.

DS面试的题目有四种类型:background (问CV上的项目和经历);case study(假设我们要...你会怎么做?);coding;behavioral(Tell me a time when you ...)。

不管回答什么样的问题,都千万,千万,千万不要ramble。

想象面试官问这个问题:我们要做XXX产品,你会如何评价产品的成功,并且设计量化的指标?

在mock interview的时候,我的回答是:我们可以测量每天有多少人用这个产品(daily active user),每个人在产品上花多少时间(user engagement),当然,有很多种方法测量engagement,比如我们还可以看用户用了这个产品的多少个feature。当然,这可能存在一些问题,比如有些feature是新的,用户还不知道他们的存在,...

我可以想象,这是the worst answer one can provide。其实回答很多问题的过程中,candidate说什么并不重要(metric并无对错),重要的是candidate能否思路清晰,讲话有条理。比如我觉得比较好的一个回答是:先从三个角度设计指标:user acquisition, user engagement, user retention,然后对于每个大类列举一些相关的指标,最后再讨论每个指标的pro/con,以及如何实现。如果可以在脑海里把对问题的回答想象成一个google doc,一个比较好的结构是:先讲section 1,2,3,再讲1.1,1.2,1.3,再讲1.1.1,1.1.2,etc。我最开始常犯的错误是:先讲section 1,2,然后突然想起2.1,开始讲2.1,然后又突然想起2.1的诸多caveat,开始详细地讨论若干技术细节2.1.1,2.1.2,etc。

从我老公面试candidate的经验来说,能够有条理地,清晰地叙述自己的观点是面试中最最最重要的一点,甚至可能比技术能力更为重要。他面试完candidate,我常常问他觉得candidate怎么样,一旦他说:讲了半天不知道在说啥,那就是稳挂了。当然,这不仅仅是面试中考察的能力,也在实际工作中很重要。

具体到如何回答问题,behavioral有一个常用的框架:STAR(situation, task, action, result),网上有很多相关的资源,在此就不重复了。我还用STAR准备了我CV上的所有研究项目和经历,觉得这个框架非常有帮助。学术界常常有文章的逻辑是:XXX曾经写过一篇文章,说XXX。所以我们验证/反对/延伸了之前的研究。STAR的框架push我把这些项目讲成problem oriented:世界上有一个问题XXX,为了解决这个问题我做了XXX。对于一个跨学科的听众,我觉得后者比前者更clear & compelling。

对于case study,在此推荐一下StellarPeers on Medium,他们提供了很多面试题目和详细的回答思路。PM的题目风格和DS会有很大差别(DS更量化),但思路是一致的。

#2. Be collaborative.

在面试中,面试官不仅会考察candidate的技术能力,也会考察candidate是否能很好地适应公司的teamwork环境。我觉得一个比较好的mindset是,把面试官当作senior的同事,和他们合作一起解决某个问题。相处时既不要盛气凌人,也不要太小心翼翼。

面试刚开始时,我一般会适当地drive。如果面试官没有先说话,就主动打招呼,small talk,讲个小笑话缓解一下气氛,介绍自己以及为什么申请这个职位。如果面试官想drive,我一般不抢话,但是会之后找个机会介绍一下自己的背景&为什么对职位感兴趣。

面试官开始问问题之后,多问clarifying question。一个表现主动性的方法是,先问一个clarifying question,然后自己给出一个可能的回答,并与面试官确认是否合适。比如面试官问某个统计问题怎么解决,我可能会说:我想到了某个edge case,可能会使得这个问题变得更加复杂,既然我们在面试,是不是暂时不考虑这种不常见的情况呢?如果最后有时间,可以详细讨论。面试官一般都会说好的。(我在自己的interview feedback里看到面试官写,他们很喜欢candidate主动提出各种edge case,以及主动提出自己方法的局限性。)

开始陈述自己的观点,尽量有条理(见#1)。在大部分的面试中(coding除外),我觉得candidate不应该连续说超过5分钟的话。如果对题目理解不到位,面试官又不好意思打断,会浪费很多时间;即便on track,面试官也很容易听得不耐烦;而且讲话时间太长很容易ramble。先说最high level的回答,让面试官问问题,然后再elaborate。比如面试官问:应该怎么predict XXX,我会先说:有几个重要的问题:(1)如何定义label(ground truth)(2)如何收集feature(3)用什么model(4)怎么validate。不用担心这样的回答太过宽泛,因为面试官会问他们最关心的部分,比如具体收集哪些feature,如何选择model。这样可以保证面试有比较强的互动性。

这一点对于打算讲研究项目的candidate尤其重要。有些项目比较复杂,candidate一上来就要解释很长时间,面试官也不好意思打断,如果中途走神了或者有某个地方没听懂,可能10-20分钟都不明白candidate在说什么,或者感到很bored。这对candidate是很不利的(感觉如果全程如此一般就挂了)。我的经验是,先解释问题/task,保证面试官理解项目目的是什么,然后停顿。如果解释清楚了,面试官会很自然地问,很有趣的问题啊,所以你是怎么解决这个问题的呢?然后再讲具体的方法和细节(见#1,用STAR的思路解释research)。介绍tech也是如此,先讲high level idea,如果面试官问起,再讲具体的implementation。我在面试谈到research的时候,都会尽量用这个方式engage面试官,效果也还不错。

一般来说,candidate陈述之后,面试官会开始问一些问题,比如candidate提出的方法有什么局限性(e.g.这样会不会有selection bias)。我有时候会先复述一遍问题,确认我们在讨论同一个问题(也给自己一些思考的时间),然后表示同意,并且在自己的实际经历中寻找例子佐证面试官的idea(e.g.同意会有selection bias,并且举出直观的例子/故事说明bias如何产生)。最后再讨论solution或者反驳。这是一个很好的机会让candidate展示在日常工作中,如何处理和别人的不同意见。

如果问到不会的问题,大方地承认(不大方也没用,面试官是知道的)。如果知道某些与此相关的内容,可以说:虽然我不知道你问的XXX,但我知道XXX。虽然我不知道这个问题的答案,而且我觉得这反映了我某个方面知识的盲区,但这正是我在今后的工作中很想加强和继续学习的。有次面试官问我BigQuery backend的问题,我就是这么回答的(其实主要是因为当时有别的offer,所以很佛lol),后来我在interview feedback里看到,面试官虽然确实记录了我没答上来这个问题,但在behavioral一栏里写了:candidate很了解自己的weakness,很诚恳,谦虚,愿意学习,推荐hire。

当然技术能力很重要,但面试结果不是完全由答题正确率决定的。面试官想看到candidate如何处理工作中可能发生的各种情况,以及如何和别的teammate相处。越到后面,我越觉得面试的目的不是答对所有的题目,而是展示给面试官“I am someone you want to work with.”

最后,关于practice:我尝试着投过一些start-up练习面试, 但是感觉非常没有帮助:小公司的data scientist更接近于engineer岗位,而大厂更接近于statistician,问的问题风格真的完全不同。比如小公司会考leetcode,大厂基本不会,小公司会问很多research,大厂问得极少。我觉得这种practice效率几乎为零不推荐。现在市面上有一些mock interview的服务。我个人只用过topds.io(是Google的一个data scientist创立的)感觉很有帮助,小哥哥人非常nice,帮我mock interview了两次(我尤其觉得第一次练习的收获很大)。因为小哥哥很了解大厂DS的面试模式(他自己应该也是interviewer吧),他提供的题目更加有代表性,而且还可以提供实时反馈。

3. 谈判

#1. Understand the incentives.

在工资谈判阶段,我个人的体会是:网上有相当多的misinformation,比如认为谈判会造成offer被撤回,比如要对recruiter态度强硬,等等。当然,每个人每个公司的情况都有所不同,但我当时的策略是:寻找权威的信息来源,不过多得把决策依赖于某个论坛上路人甲的偶然经历。理解各种论坛上受关注最多的帖子常常是特别sensational/unusual的,不一定具有代表性。

在此推荐一个对我非常有帮助的视频,是对一位Google/MSFT recruiter的采访:Google Recruiter Tips On Offer Negotiation, Interviews, And More(by Clément Mihailescu, on YouTube)基于我和老公在offer谈判阶段和大厂recruiter接触的经验(样本量n=7),Amy在这个采访里的回答非常准确、权威、具有代表性。下面的一些内容是基于我/老公个人的经历,以及Amy提供的信息。

首先,介绍一下工资谈判过程中有哪些stakeholder,他们的激励结构(incentive structure)是什么。

1. Candidate

2. Recruiter
几乎没有大厂的recruiter会因为给出更低的工资接受奖励,大部分的recruiter根据他们能够成功的雇佣到多少candidate而接受奖励,有一些recruiter还会参考candidate的工资拿一定的提成。所以,没有recruiter主观上希望给candidate很低的工资(他们的提成可能减少/candidate来的概率会降低)。

3. Compensation team
一般candidate不会直接和compensation team接触。他们负责确定对于每一个candidate来说,什么样的工资对于公司来说是可以接受的。

4. Hiring manager
如果到了offer阶段,HM的唯一动机就是想要雇佣candidate。HM一般不怎么参与谈判的过程。多数情况下,他们也没有权利决定工资高低,当然有很多例外,有时候HM可能可以给candidate提供更多的支持,帮candidate争取更高的工资。有时候特别高的package可能需要更多的和级别更高的approval。

所以,谈判不是在candidate和recruiter之间发生的,而是在recruiter(代表candidate)和comp team(代表公司)之间发生的。理解这一点对于navigate谈判过程至关重要。

*Disclaimer:我/老公接触过的大厂运行模式都和上述一致,但中小公司可能有所不同。我提供的信息是否可靠/适用,请大家自行判断。

#2. Be transparent.

理解上述的激励结构之后,我觉得我和recruiter接触有了新的视角和态度。recruiter在某种意义上是candidate的代理人,而不是谈判的另一方。所以在谈判的过程中,我的策略是:友好,迅速并且全面地分享(大部分的)信息。

Amy在视频中深入讨论了哪些信息有效,哪些信息无关。一般来说,个人情况是无关信息(我要赚钱养家/买房/付贷款/etc),别人拿多少钱是无关信息(glassdoor/levels.fyi/我的同学/朋友甲)因为每个candidate的能力/面试表现不同。competing offer是最重要的有效信息,面试表现和team fit也是比较有用的。

在这里分享一下我和G谈判的经历。在G的recruiter最开始和我沟通,告诉我我过了Hiring Committee之后,我就告诉了他我当时in progress的所有面试/offer情况。比如,我当时拿到了M的offer(在西雅图)但是因为老公在湾区工作,我很诚恳地告诉了G的recruiter我因为想留在湾区,并不是很想去M(但仍然在争取remote),而G是我的top choice之一。之后形势更明朗之后,我及时地和recruiter分享了competing offer。我的recruiter完全没有任何意图在得知这些信息之后降低我的compensation,反而,我觉得recruiter感到

(1)我对这个职位很感兴趣,是非常有可能接offer的,所以值得他花时间帮我谈判;
(2)我很主动且透明地分享了自己其他的offer信息,不是空口无凭地谈判,而且有credible viable outside options,有必要让他努力争取;
(3)我很信任&感谢他对我提供的帮助和支持。

Recruiter对我也很透明,他告诉我

(1)他不打算告诉comp team我的competing offer是什么,而会让comp先出一个数,如果低于M他才会提供competing offer的信息;(很多人担心很早分享这些信息会影响初始offer,但其实好的recruiter会站在candidate的角度谈判,并且决定哪些信息应该/不应该reveal给comp);
(2)他介绍了一下之后的流程是什么样的:comp会先出一个PhD New Grad的标准package,会有不少可以谈的空间;如果有XXX公司的competing offer,G会match + bid(略超过competing offer);如果有XXX公司的competing offer,G只会match(等于competing offer)。他帮助我理解了哪些其他的competing offer对于辅助G的谈判最有效;
(3)他帮助我分析了一下,我的其他offer在所有L4中大致是什么位置,还有多少上升的空间。在这点上,glassdoor和levels.fyi提供的薪酬信息是非常不准确的(blind上好一些)。

caveat:我的谈判过程很顺利,部分原因是有一个offer明显高于其他,所以主要都在match offer。我没有无compete谈判的经验,在此就不误人子弟了。还有一种tricky的情况,就是所有的offer都薪资持平。我谈判时发现,competing offer的薪资并不是谈判唯一的lever。在决定去X公司还是Y公司时,我很诚恳地告诉了recruiter所有我在考虑的因素,以及我对于这两个公司的评价。即便当时在薪资上X > Y,而且我在两边都分享了对方offer的信息,X公司的recruiter还是主动地提出了可以继续加薪资。更多地让recruiter参与决策过程,他们会更愿意/更有激励提升offer,因为他们更能看到自己的effort的直接效果。

我有一个小伙伴在谈判时处理过若干offer薪资相似的情况,并且写了非常详细的帖子分享。她使用了一个negotiation service,和我的approach有诸多差别,大家自行判断什么样的策略对自己更适用吧。
My Journey from Econ PhD to Tech — Part 3: Negotiations part 1
My Journey from Econ PhD to Tech — Part 4: Negotiations part 2 + Decision
(By Scarlet Chen on Medium)

#3. Ask Nicely.

我很幸运,遇到的几个recruiter都非常支持我,并且让我感到:They will act in good faith and on my behalf。整个过程中,我们的interaction非常高效&友好。我个人感觉,谈判期间的confrontation,不仅没有必要,而且不利于达成最终的目标。

比如,永远,永远,永远不要“强硬地谈判”:
I wouldn’t be able to take the offer if ...
I will take an offer from another company if ...
I don’t think this offer is attractive if …
因为这可能会被理解为rejection。

再比如,不要过多地讨论对offer的不满,不管是薪资还是别的方面。但是可以说,这个offer对我来说如此attractive(列举理由),但是某个competing offer也特别好(列举更多理由),我好难决定呀!etc。recruiter最不想理睬的candidate就是没有实际意愿接offer,只想要leverage的人;他们不想花很多时间帮助一个candidate,但最后没有任何收获。所以对recruiter表现出对职位本身的兴趣,对工作和team的兴趣,以及热情是非常重要的(当然,不要轻易承诺一定会接offer)。

再比如,如果要initiate谈判,不要说:这个offer让我很失望。XXX公司包裹更大,你们不match我就不来了。可以说:我希望这个offer在薪资上有所提升,让我给recruiter提供更多的信息/证据,以证明我的能力和在市场上的价值,并且给他们和comp team的谈判提供更多的数据支持。

总之,candidate和recruiter是合作关系,在沟通中体现出这一点,可以让谈判的过程容易许多。

写了这么多,经历过求职过程的小伙伴可能觉得这些都很obvious,但我是在开始求职之后才了解这些信息的,希望对大家,尤其是刚毕业的小伙伴有所帮助。
  • 485
47条回复