Facebook程序员生存指南

Facebook是互联网界数一数二的大公司,行为神秘,外人很难一窥究竟。油管博主Patrick Shyu在Google做过Tech Lead,在Facebook做过Staff Software Engineer,是内幕人物之一,也是唯一的支持调查中国工程师跳楼事件的公众人物。

Patrick Shyu是日裔美国人。他的姓是Shyu,是徐的音译,可能和当年东渡的徐福有渊源。跟灵堂卖片的六老师一样,他是在老婆孩子跑了的视频里面卖广告的狠角色。这里为了表示尊敬,简称徐老师:徐老师的勇气和正义感值得鼓掌!

徐老师在硅谷混过Startup和一线大公司,经历丰富。他在不同的视频里谈起Facebook的内幕,给了不少有价值的建议。我在这里总结一下,看看一个普通程序员如何在Facebook的高压环境下生存并发展。请有志加入Facebook以及类似企业的同学务必阅读:这关系着你的前途和生命。

一、价值观

徐老师很坦诚:加入Facebook就是为了钱。他说他的年薪是五十万美圆。加上奖金的话,可以达到54万。Facebook很大方,其他公司很难给到这个数目。

Staff Software Engineer是很高的级别了,在美国称为士大夫程序员,在中国可以翻译成首席程序员。回国的话,相当于阿里的P9。有的同学留言感兴趣Facebook的级别,下面贴了同级别公司的职位对照图。Facebook不注重等级制度,没有明确的职位称呼,都是对照别的公司乱叫的。所以,在E7满地走,E6不如狗的知乎,很难有个一定的说法。

Facebook的技术相对于其他一线公司并不先进,吸引人才的手段就是给钱多。Google的平均员工在职时间是3.2年,徐老师正好在Google呆到这个时间;而他在Facebook混了不到一年就被开,可见压力之大。

Facebook选择的编程语言很有意思,PHP, Hack, C++,都不是业界主流。这样以后跳槽的话,就比较麻烦,得重新刷题。按徐老师的说法叫dead end。

徐老师又说,Facebook的价值观是产品导向,经理很多都是MBA,没有工程背景。经理和程序员没有共存共荣的关系。经理的任务是ship products;程序员的任务是make diffs。程序员做的好不好,跟经理没有关系。相反,每年有两次考评,有15%的程序员被强制差评。跟经理关系不好的程序员,可能随时扔出去背黑锅。Facebook开人有两种,一种是直接卷铺盖,另一种是上PIP(表现改良计划)。区别是前者是死刑,后者是死缓,结果都是走人。徐老师说Facebook越来越喜欢招H1b,因为只有他们想跑也跑不了。那种被压迫的最底层就是上了PIP名单,再背一个一级事故的惊天黑锅的H1b。

小孩子才谈对错,成年人只讲利益。所以,加入Facebook后,不要有什么make the world a better place的幼稚理想,拼命赚钱、拼命数钱就可以了。几年后在公司炒你之前,把公司炒掉,即大功告成。

二、工具链

Facebook有dogfood文化,自己的产品自己用。他们工作的主要工具是Facebook for Work或者叫Workplace,是大众用的Facebook的内部版本。这里有个问题:Facebook是社交工具,主要任务是让用户粘在上面,耗费尽可能多的时长;用在工作场合,则分散精力,让人疲惫。

徐老师谈到这一点的时候,表情憔悴,因为这玩意实在太难用了:所有的信息流不是按时间摆放的,而是算法自作主张安排的。各种信息分散在不同的人名下,跟踪一个项目需要不停的人肉搜索。编程的同时还要不停的刷网页,生怕漏掉重要的信息。另外,Facebook没有email,任何人想到你就message,然后你的手机就哔哔叫,昼夜如此,周末也逃不掉。这是Facebook程序员压力大的一个重要原因。

Facebook有不成文的周末工作的要求。第一,版本定型一般是在星期天晚上;第二,经理提需求一般是在星期五下午。这样你周末必须工作,否则赶不上星期天晚上的版本定型,或者星期一早上跟老板没法交差。Facebook的人周末都忙。找男/女朋友不要找在Facebook正在工作的,因为他们肯定没有时间;一定要找Facebook工作过的,因为他们肯定有钱。

所以,在加入Facebook之前,请务必背熟Facebook网页版的快捷键,并了解newsfeed的后台算法。这里插一句广告,我听说有在Facebook工作过的朋友,自己开发了爬虫和Chrome Plugin,让机器人去网页上整理和报告有价值的信息,效果不错。如果需要购买,请私信联系。

三、刷考评

Facebook的考评标准有四条,impact, better engineering, people, direction。徐老师说,impact和better engineering是互相抵触的,而people和direction又是自相矛盾。要impact就要不停的写垃圾代码,把功能跑起来再说,产品deliever得越快越好,这样就不是better engineering了。要direction就要控制节奏,掌握方向,争取以我为主,take ownership。大家都这么想的话,唯一的办法是互相贬低和拆台。于是people就没有了,同事之间不可能有友好的关系。

这是一个四选二的问题:impact和direction比较好量化,代码行数和文档字数随时可以看到;better engineering和people就比较难量化了:代码写得好有什么标准?人际关系好有什么标准?所以impact + direction是一个比较流行的技能树。

在Facebook碰到比较mean,动不动说你代码是狗屎的同事,也不要大惊小怪。他们只是在刷输出,求生存而已。当然,如果是美女程序员的话,往impact + people加点数似乎更容易一些。

动作要快和果决。比如开会的时候,有的同事还在一无所知地征求意见,有的拿出来通宵写好的design document,而你早已经把原型写好,代码入库,一下子把他们统统打倒。这样,winners take all, 你就占上风了,impact+10,direction+10。

四、抱大腿

跪舔术是非常有用的。在内网里面发个动态就能收到几百赞,或者几十页评论的网红都是大佬,记住他们的名字。你要做的是无脑跪舔,第一时间发动初始技能抢沙发术。久而久之,大佬看到你孺子可教,说不定就让你改个Readme的错字什么的,你的diff来了,impact也来了。这是成功的第一步。

技术相关的不要随便点赞或者表态,这涉及到你的态度。你不知道最终选择哪种技术路线,或者关系到哪些人马的利益。这是个站队问题,慎重。

Facebook是成熟的商业模式,养这么多一样的组是为了内部赛马。各个组老板们能力不一样,有的抢的项目是金蛋,有的是黑锅。要是你老板抢的总是黑锅项目,说明这是条沉船。二话不说,赶快跳船,换到有前途的组。记住,跳船晚了有很严重的后果。

另外,Facebook有很多黑帮,非洲组,印度裔,女拳,俄罗斯天团等等。徐老师说最强的势力是LGBT彩虹帮。可惜没有哪个黑帮可以罩着徐老师这种亚裔直男。这也很无奈,因为没法改变性向和肤色。

五、背刺术

徐老师讲了个故事,他和一个女程序员合作个项目。这个女程序员以前只跟女的合作,看上去是女拳那边的人,也有可能来自彩虹帮。有一天,他的老婆带着孩子回日本了,要跟他分手。他很沮丧,于是下午五点钟就打卡回家了。结果该女反手把他举报给了管理层,说他工作不努力,兼不尊重女性,弄得他一身屎。徐老师开始搞不明白为什么,后来分析:该女也是Staff Software Engineer,跟他一个级别。在Facebook,每次考核同级别的人放在一起,然后强制弄个曲线。这叫做stack ranking。如果别人危险一点,当然自己就安全一点。所以背刺队友一下,只有好处,没有坏处。

以上是徐老师的经验总结。如果您已经融会贯通,恭喜!您已经可以在Facebook,或者世界上其他任何一个软件公司生存下去。如果没有,也不要紧。多加训练,总有一天您会出人头地的。

记住,在你加入FB的第一天起,你就是在为自己战斗,而且只为自己战斗。你跟任何人都不在一条船上。你从来不需要真相,只相信金钱和包裹。你为生存而战斗,为战斗而生存。

这是有史以来最好的公司!你看,Google的免费午餐是开水煮白菜;而你在Facebook可以吃到最好的冰淇淋,喝到最好的咖啡。这是你的运气,你加入了一个强大而神秘的组织。你可以同组织的最高首脑谈笑风生,有机会问他一些愉快的问题。但是,你不能泄露组织的任何秘密。否则组织会追杀你到天涯海角。

对了,你有责任去用各种手段去除那些反对组织的声音,包括知乎上的评论。只要你忠心耿耿,组织会帮助你实现所有梦想:钱,绿卡和别人的羡慕。Imagine that day!

你鄙视那些996.ICU的程序员,因为他们连996都干不了,而你可以7*24的工作;你鄙视那些倒下的同伴,因为他们弱,不敢跳船,只有跳楼。而且他们的命运跟你毫不相干,你为什么要给他们说话;你鄙视徐老师,因为他被组织开除了,22万base加28万rsu没有了,老婆也跑了。只有low到油管骗点击维生;而且违反组织纪律,整天瞎说大实话。迟早组织要收拾他。

他们都是loser,你从来不屑提到他们。只有强者才能生存,而你毫无疑问是那个幸存到最后的,最强大的,Facebook程序员。