分享在Facebook WhatsApp SWE的实习体验以及拿GE的建议

avatar地里匿名用户TPFU0
7229
12


前言:这是个匿名分享帖,有些朋友肯定可以认出我,但请别暴露我,谢谢。

WhatsApp在Facebook旗下的五款主打产品(Facebook, WhatsApp, Instagram, Messenger, Oculus)里,非常与众不同。
  • WhatsApp有着约2.5B的用户,但是主要用户群体是在美国之外的印度,拉美,欧洲.
  • WhatsApp的工程团队非常精简,只有几百人,约占FB的总工程团队数量的1%。可以想象,以如此小的团队运营如此大的用户群体,做的事情会非常有意义。
  • 与Facebook/Instagram的产品理念大相径庭,WhatsApp产品上几乎不存在广告,投放广告为WA总管VP所深恶痛绝。WA尽管有着2.5B的用户,但是远没有Instagram和Facebook挣钱。WA的长期的产品理念主要围绕用户隐私,可用性,可靠性。WhatsApp有非常多的用户甚至使用的是甚至非智能手机,在通信建设落后的国家,在Messenger,Telegram都没办法工作的网络环境下,WA还能提供可靠的通信支持。技术为善是我非常喜欢的一个点。
  • Facebook强调Move fast, WhatsApp强调Move slowly. 但是Move slowly并不等于工作轻松,而是在敏捷开发的同时保证产品的质量。WhatsApp的代码库质量奇高,可读性极佳,注释文档一应俱全。
  • WhatsApp的团队氛围很好,遇到无法解决的问题在大群里喊一声,会得到非常及时的帮助。
  • WhatsApp对实习生非常好(应该整个FB都是)。原因(From E5同事)是FB/WA的各级主管有非常高的比例是以intern的身份进入FB/WA工作的,我的部门从director到绝大部分Team manager都是当年的intern。我这个组里7/10也是intern转正的。另一个原因是,从高管的角度看,转正intern的平均质量要比industry / new grad招聘要高的多,这也是为什么team manager里高比例的当年是intern的原因。
  • Facebook对intern manager的要求是每天在intern身上至少花2小时的工作量,所以intern千万别不好意思麻烦自己的manger,这是他们的工作。如果intern干活很独立,manager反而会很感谢你。



Facebook实习是随机选组的,一开始分到WhatsApp的时候有些惊讶,在论坛里找不到实习分享帖,在intern群里也找不到WA SWE的实习生。尤其从Linkedin得知我的intern manager是在印度一所普通大学上的本科,从海外进入美国工作的时候,想到论坛对印度人的评价 + 印度口音 + 中印冲突,我慌了。

但是我的印度manager非常好,给了我极大的帮助,并一直指导我如何让team manager和director认可我的工作,最终得到了GE的评价(return offer有四个rating影响return package,从低到高是ma, ee, ge, redefine)。最高档的intern属于传说,ge是普通人可以拿到的最高评价了。BTW,我在实习期间从来没提过return offer的事情,更没提过rating的事情。我的印度Manager给我的帮助有:
  • 实习前一周给我发了许多链接,让我提前点技能树。
  • 实习一开始的时候,manager给了我一份工程文档intern project plan和一份产品需求文档,各20-30页,milestone详细说明了我需要做什么,分别有哪些tasks一步步怎么做。我比较喜欢这种需求明确,按部就班的工作,如果让我自我发挥反而是难为我。
  • 印度manager虽然没在美国念过大学,口音很重,但是语速很慢,遣词造句结构很简单,而且每次meeting都是提前准备,逻辑清楚。而且担心我听不懂或者遗漏一些点,每次会议都在google doc上记录会议。
  • 为了避免我被blocked,高频Review我的diff,最终我average days to close diff是1.3天, average days in review是0.9(因为有30-40%的diff是别人approve的,非常慢)。
  • 为了让我拿到更高的rating,印度manager鼓励我去邀请别的工程师来review我的代码,甚至告诉我这样做的话,到时候结束的calibration meeting会有除了她以外的人来支持我的高rating。
  • 实习前期的diff review会留下好几页的comment,并且会给出例子和链接去解释comment。这些comment帮助非常大。
  • 作为一个intern不好意思push正式员工,甚至team mgr,都由我的manger出面push。
  • 鼓励我在公司group网页上分享我做的东西,帮我改draft,可能觉得我英语太差了。
  • 帮我改psc review和PPT,改到面目全非,印度人语言好我是非常羡慕。



我的印度manager非常拼,一天工作12小时,周末凌晨两三点还在写代码,堂而皇之在WA里做测试,全组人都看的到。我的白人team manager对此的态度是:每个人都有自己的工作方式。我的team里最高产的是一个白人小哥,其次是我的印度manager,两个人合起来的diff数量占整个team的60%。

剩下8个人就很养老,悠哉游哉。但是不要因为人一个月就写10个diff就怀疑人水平不行,我team里写代码质量最高的是另一个印度peer,肤色雪白,口语超级纯正,可能是印二代。但是每次他给我review代码时,都能提出非常令我意想不到的建议。千奇百怪的问题他都可以很快回答。他太聪明了,每次留的comment寥寥几行字我要读七八遍才能理解他的意思,然后点起大拇指点赞,然后反思自己为什么这么菜。

我的印度peer这么厉害,但是他最推崇的写码大佬还是隔壁team的team manager,是一个白人小哥。尽管他已经是team manager了,他日均贡献10+的diff,之所以这么高产是因为他太强了,自己给自己review,嗖嗖嗖一堆diff就上线了。他对我这个隔壁team的intern非常好,帮我解决了很多问题。

最后说一下怎么拿GE,尽管我不懂怎么拿GE,这并没有一个固定的标准,只是我事后总结的:
  • 要做有impact的项目,然后要提前完成,我是五周做完了第一个项目。要感谢我的印度manager,review fast才能move fast。我见过有个intern刻意为了提高速度一次性交了10个diff,但是她的mgr review很慢,最后否决了她的第一个diff导致10个diff都白写/回滚。
  • 如果有两个项目和两个不同的team合作,reviewer数量就会翻倍,不容易被block。
  • 让team manager和组里其他人,甚至别的team的人了解自己的工作。有两种方式,和别的team的人合作以及发dog food post(邀请别人来使用自己开发的东西)
  • 适当多写文档,可以问manager有哪些文档可以写。
  • 在Facebook,E4升E5, E5升E6, 都需要有leadership的体现,所以intern带的好对intern manager升级是比较有用的,想想升一级收入就翻倍呢。Intern和intern manager其实是互相成就的。



Again, 这是个匿名分享帖,有些朋友肯定可以认出我,但请别暴露我,谢谢。
  • 58
12条回复