本文作者覃超,FreeS技术合伙人、前facebook工程师。 从大学宿舍到完整生态链:Facebook12年发展历程 首先我想解释下为什么我要说Facebook,并不是因为我在那里工作过。先请看一下Facebook的简单发展史: 2004年,扎克伯格在大学宿舍里开发了Facebook,很长一段时间它只是一个简单的网站。但是后来,扩展到硬件,开发了各种产品,占据了整个社交领域、至少是北美的霸主地位。Facebook还推进了Connectivity(全民联网计划),给发展中国家提供免费的无线网络,再到后面做VR、AR、人工智能等现在非常火的新领域,形成了完整的生态圈。 看Facebook 12年的发展,我一直在想一个问题,它是怎么从大学生宿舍里面一个简单的扎克伯格自己的个人项目,最终发展成为可以上市的公司?而且现在整个生态链布局的已经非常完善了,这个公司是怎么做出来的? 我思考了很久之后,发现有一句话很有意思,21世纪最重要的是什么? 就是人才。现在互联网创业很多技术基本上都是开源的,很多硬件随手可得。 上图是在五年前硅谷非常流行的一张图,描述了大公司之间人才的流动情况。图中,每个圆点是一个公司,和圆点颜色相同的边表示这个公司的人才流入。可以看到Facebook基本上和其他点间连线都是蓝色的,所有公司都在向Facebook输入人才。而谷歌基本上在从微软和雅虎搜集人才,在其他地方是流失人才的。 所以,从五年前吸纳了很多人才开始,Facebook才有了今天的成就。有一群最牛的工程师、产品经理和设计师在这里,所以经过五年的布局和人才培养,才造就了现在全生态链都有一个非常好的格局。 所以我在想,里面整个工程师文化做得比较牛的是什么?因为我自己在Facebook工作过,所以结合自身经验带来了这个分享:在公司里面如何塑造比较好的公司文化?怎样把牛人吸引过来? 总共五个部分: 首先是简单的自我介绍; Facebook的工程师文化; 以及团队的组成,包括设计师、产品经理和工程师; 人员是如何管理的,怎样能有效控制工程师的工作积极性以及给予相应的报酬; 最后一点也是最重要的,以上这些对我们中国公司有怎样的启示。 一、我是谁:从Carnegie Mellon到Facebook 这是我的简历,大学和企业在技术方面的差距还是很大的。从Carnegie Mellon大学毕业后,我加入了Facebook,开始做的是CTO亲自主导的比较神秘的项目,后来去做了Facebook的APP,主要是iOS,也做过Voice Message等。 二、Facebook的工程师文化是怎样的? 特点一:Hack Culture 首先,Hack Culture,可以说是"黑客文化"。注意并不是字面意义上的"黑客",在扎格伯格招股书上就说过,Hack Culture并不是黑别人电脑,而是一种态度和做事的方法。 现在去美国已经非常容易了,如果飞机降落在旧金山机场,着陆的时候会越过Facebook总部,建议大家到时候可以留意一下,这么一群建筑就是整个Facebook总部的样子。特别有意思的是,这个广场的中间位置其实是有字的,在飞机上就会看得非常清楚,就是"Hack"。当我们说"我们要做一些Hack之类的",它所表达的意思是"如果你有什么想法,有创新的、古灵精怪的各种想法都可以,马上去做!" Hack的详细定义主要有三点:马上上手、快速搞定和持续迭代。而Growth Hack的本质,就是增长方面用Hack的方法解决。在Facebook绝对拒绝传统(大家一起来开会),而是技术驱动、数据为王。 做了一个东西之后先发给用户,看一下用户的反馈或者搞一批测试的用户,最后看多少用户觉得你这个好,通过数据的采集方式来论证是否可行。在Facebook有很多牛的方法可以搜集数据,所以可以很明显的看出这个版本用了AB测试之后到底是好还是坏。 在Facebook并没有一个专门的部门做Hack,而是鼓励所有的人去发挥自己的想象力,想做什么就可以做。公司的角落有各种各样的"Hack",营造出一种气氛,鼓励员工去创新、鼓励那些牛逼的人待在这个地方工作,这样的公司文化是比较愉悦的。 特点二:Design+Engineering 如果说苹果是80%的精力很重视自己的设计,谷歌大概非常重视工程,在Facebook设计和工程各占一半,这可能和大家想的不一样。Facebook的新办公室出自一位著名的设计师,有各种奇妙的元素,开始我认为这些设计是浪费,后来我慢慢发现这种环境下工作心情非常愉悦,很多人自发工作10个小时左右,而且在这种环境下心情很放松的状态,更能激发你Hack。后来我看到国内的一些互联网公司也有这种感觉,比如最近的创业贵族今日头条。所以如果想把互联网公司做大,就要有非常迷人的工程师文化,才能把牛逼的人招进来。 特点三:Open 我第一天入职Facebook的时候,最大的感受就是这三点:首先是Open,非常Open的checking。新人第一天入职,领到一台电脑,连上网后,所有的数据都可以看到:产品的月活、日活、每一个功能,甚至可以像股票交易系统看到这样的数据,比如日本的用户30岁以下的人在用 news feed 的时候情况到底怎样,从今年年初到现在变化是怎样的等。所有的东西都开放给工程师,没有任何权限。 在Facebook,codebase 是所有 software engineer 都有权限把它拷贝下来。我(作为一个facebook phone 和 iOS app的工程师)可以把安卓的codebase拉下来,也可以把PHP、推荐算法、引擎各种代码库给git clone下来,所有的权限都是开放的。但开放的前提,如果把公司内部信息泄漏出去就会被开除掉,历史上也发生过好几起这样的事情。所以,在Facebook基本上不可能出现扎克发的一封邮件会被爆光。刚开始回国的时候,我很震惊,各种CEO的邮件都曝光在公众眼中,这种事在硅谷基本不可能。 所以Hack意味着内部信任和开放,同时对外也要遵守非常严格的规定。最后一点就是Open Space,很开放的环境,给人的感觉是"网吧式的工作环境"。美国公司的办公室给人的感觉比较粗糙,比如说天花板上没有任何装饰,柱子上还有很多铁锈一样的东西,但是它又有非常细节的地方。 比如说,显示器都还不错,有各种饮料和零食,随便吃;椅子是著名的 Aeron chair。最有趣的是:椅子右侧有两个按钮,一个是上升和下降,平时就是这么正常的工作,累了之后,久座对身体不好,就把桌子升起来,变成站立式办公。站起来有一个好处是,当好几个人在一起讨论问题的时候,大家可以站在一起看。很多时候写代码的时候,把设计师也带过来,直接问"我做了一个原形你看有什么问题的吗?"有问题就直接改了。 扎克和所有人一样,坐这么一个位置,开放式工位旁边有很大的玻璃房子,用于开会,扎克没有太多的会议或者太多出去的时间,基本上每天在公司里面专注于自己的事务。 三、Facebook团队组成:设计师、产品经理和工程师 很多人问我,Facebook的项目团队是怎样的? 一般情况,如果是做一个简单、小功能,一般是一个设计师加两个工程师;比较大的项目一点,比如说改版、在新版当中开发两三个功能,基本上两三个工程师一起做,iOS messenger app 五到十位工程师和两到三位产品经理,和国内配比差不多。 比较有意思,Facebook没有测试,他们比较贵,很多时候都是我们自己测,我们 Unit Test 并不多,覆盖率10%到,但是我们有非常严格的 Code review。所以如果你要学习一点,在工程上面、执行上面让bug减少的话就是代码审核,交到这个 master brunch 里面的代码必须预先经过代码审核,直接看代码,没有什么问题就交,如果交进去后来发现Bug最后进行修复Bug花的时间和精力是之前的三倍十倍。 整个流程一开始规划要做什么东西、要做什么功能、需求是什么,接下来设计师和工程师互相合作,比较有意思的是整个流程每个决策都要参与,而且每个决策之间互相是交互式的,工程师也可以说这个需求根本不能做或者说不用之类的。 有人问,为什么你们的产品开发的比较快或者做得比较好,有没有什么秘诀?其实并没有太多的秘诀。首先,人和人之间互相尊重,同时用 Scrum,大家都坐在一起有任何进展马上当面沟通,虽然我们远程会议系统特别强大,各种功能开个远程会议也行,但是我们鼓励在一起坐下来聊。团队最初期的时候就要开始协作,不同角色的人坐在一起讨论,不像国内分阶段分得特别明显。最后,设计师和开发者在工作的后期联系是非常紧密的。最后,还有很重要的一点:Facebook 有 Zuck Review。也就是一些比较大的功能或产品,扎克会亲自安排看一下,也就是下面的人或者整个大的PM会亲自跟扎克说,这个地方你要过一遍,即使再忙他都会亲自来盯。 他会决定这个功能到底是做还是不做,决定产品的UI、功能、交互调整等,和网上风传的马化腾或张小龙其实风格差不多。我感觉Facebook和腾讯有些类似,都是一个产品型CEO主导的公司,扎克亲自来盯。图上有两位中国人,其中一位是做广告的葛爷,给Facebook赚了很多钱。Zuck有时会用一种直觉性和你讲一些话,很多功能被他砍掉,大部分时间他都是做出了正确的决定。 我认为Zuck Review给人最重要的感觉就是鼓舞,如果这个东西扎克亲自来看,优先级方面会给下面的工程师或者整个团队一个非常明确的交代,这个事到底重不重要,需不需要。 关于优先级我想强调,大家都是技术人员,很多人在学校里面学习都不错,但在工作的时候发现有些不适应,需要注意的是在顶级公司或者特别牛逼的互联网公司工作,最重要的一点是分清优先级,这和学习的时候完全不一样。 工作中的事情是做不完的,你在工作的时候是连续的;不像在学校的时候一个学期隔着一个学期,最后期末考试,你知道自己有什么反馈。但是在工作的时候活是干不完的,所有东西,周围很多人让你做这个做那个,最重要做的事情是分清优先级,任何一个任务发过来的时候,心里面把它积累起来,哪个任务比较重要的先做,而不是交给你一个任务马上去做。 所以这里优先级,很多人我看到能力很强的人,最后遇到一个瓶颈,关键的问题是自己没有分清优先级,去做一些比较简单或者自己喜欢,或者是觉得自己能做的事情,而不是做最有影响力的事情。 具体说来,和学生时代相比就是:学习上的课程是有限的,作业也是有限的,而且还有相对明确的截止日期(homework deadline)和最后一个期末考试;考试完结后,几乎学业清空一段时间。但是在工作上你会发现你没有一个类似暑假或者寒假的东西,另外最可怕的是你的活是干不完的,对的,是无穷无尽的。特别你是在一个上升期的互联网公司的话,给你任务的速度很多时候是超过你的处理速度的。 所以这个时候,你在接到一个被分配的任务或者一个email要求你干什么的时候,你不是要马上可以做,而是要强迫自己停顿下,分清现在这个任务的优先级,然后分配好开始时间,之后再开始做。这点尤其重要!特别当看到一个简单或者重复性的任务被email或者tower(或者teambition)上分配来的时候,不要因为任务简单就马上跳上去干,不然这样极可能被简单重复劳动把自己的时间全部占光,最后没来得及干重要的事情,或者没有精力去思考更加长远更有影响力的事情。 所以,重申一次,去做impact和urgency最高的事情(这种事情一般来说不是很愉悦,甚至是比较棘手或者说是无从下手的事情),而把简单重复的活尽量后排(或者delegate出去)。这时你才会发现你的忙碌是有意义的,而不是做"伪工作"(pseudo work)。 我常常看到一些毕业不久的人每天都很忙,但却没有抓住重点,只是为了忙碌而忙碌,或者用更加贴切的话描述是:"为了感动自己而忙碌"。很多时候这样的忙碌,最后都是一个屁。之前在Facebook里,对于这样的同事有一个称号叫做"pseudo worker",领导的职责是直接给他们透彻的反馈,让他们认清自己工作的impact最大化的地方到底在哪儿,同时告诫他们要忍住低impact的简单任务的诱惑。 对的!那些垃圾任务有着一种诱惑;诱惑着没有定力的人一直去做,一直去做,感觉自己特别有成就感,特别"忙碌和充实"。所以要小心!在国内创业路上也有很多这样的创始人(或者cofounders),他们自己的方向可能都没怎么想清楚,或者路线没有执行得当,却一天到晚在朋友圈晒自己和同事们的加班,觉得这样的"忙碌"很充实。其实这是一种很可怕而且对自己和团队既不负责的做法。 一般工作时长惊人但又没有unicorn估值的公司,我总觉得加班是一种羞耻,是自己团队不会分优先级或者战略不明确的表现;如果创始人还一直在那里秀加班来感动自己的话,我的建议是尽早离开。同时我还敢打赌,90%这样的公司在加班(和日常工作时间里)的效率是偏低的。 另外,Zuck Review可以从用户的角度进行分析。有的时我们候做一个产品或做一个技术,一直做的时候会把很多东西想的过于简单,而用户很多时候比较傻或能够一秒钟变傻,会觉得这个东西并不好用。这一点感觉扎克做得比较好,扎克自己不是特别懂技术细节,如果他觉得这个地方为什么这么难用,会给你讲很多有意思的东西。 四、Facebook是怎样利用OKR进行人才管理的? 接下来是整个Facebook的管理是怎样,即OKR。在Facebook,OKR意味着每六个月或每一年,制定一下你个人的目标、团队的目标以及公司的目标是什么,接下来行动就可以了。 第一点,在目标制定的时候你要以结果为导向或者以影响力为导向,不要为了做而做、或者做一些伪工作。在工作的时候很多人会做一些伪工作或者简单的工作,也就是自己愿意做的工作。 第二点,在Facebook会看每六个月、这半年的指标到底是什么东西。 第三点,每年6月底、12月底分别会做一次个人绩效评估。 最后,一个月之后评估结果就会出来,将决定你的奖金多少、是否升职,年终绩效评估将决定你的现金奖金是多少,年底除了现金还有股票的追加。不管任何级别,只要是工程师都会给你相应的股票,每过一年年底绩效评估将决定给你追加多少股票,一般都会追加股票。具体的绩效考核怎么做?首先是国内常讲的360度评估,每6个月做一次,主要是四个部分:自评、同事评价、直属上司评价和老板评价。最后比较有意思的啊,你可以决定这个东西是否开放、被谁看到。一般有85%左右的人会选择开放,这是很恐怖的一个数据,基本上互相之间都是开放的。最后一点就是HR和整个Team calibration,从上面再校准一次。最后就是奖金,给你规定一个奖金,在10%到25%的区间。看你在哪个级别,新进来是10%,越到上面越高。然后要乘以你的个人绩效,0表示没有奖金,一般在1.25左右,4.5就很高了。最后再乘以一个公司的绩效,公司那几个高层对公司这半年来做得怎么样打一个分,如果公司做得很不错,所有人的薪水都会加。 五、师夷长技以制夷:对中国互联网公司有什么启示? 最后,我想说说Facebook的管理之道对中国互联网公司的启示是什么。虽然在Facebook工作很好,但我更喜欢加入中国的公司或者自己创业,和一帮国人在一起做一个公司,有一个牛逼的产品能够放到国际市场上和西方对打。首先想强调一点,很多人说Facebook工程师文化特别好,但是它的文化并不是与生俱来的。前几天为了佐证这个观点我专门看了一下2007年大家对于扎克的想法,那个时候公司一团糟,偶尔有几个比较厉害的人,Facebook现在比较牛的工程师文化是在2008年、由一个女孩Molly Graham逐步营造起来的。 Molly营造公司文化的过程,在这篇文章有阐述,当时,Facebook从400人快速增长到1000人,公司已经管不过来了,一团糟,大家互相埋怨对方,干活非常没有效率,做了很多低效的事情。那么怎么把公司管好,同时让更优秀的人可以持续进来呢?Molly建议Facebook建立工程师文化,她当时让扎克自己写了十条他觉得比较牛逼的人是怎样的,当然那十条大部分就是由扎克自己的气质决定的。 这十条标准写出来之后,在公司里面反复强调,同时招人也招符合这些条件的人。所以可以得出一个结论:公司80%的文化来自于创始人。 最后一个结论,当一个公司变大,比如从A轮到B轮的时候,一定要营造出自己的文化。所以如果你是创始人,在公司还小的时候随便怎么弄,但是你自己要很明确有一杆秤;当公司到了500人以上的时候,这个时候一定要建立自己的公司文化。 对技术人员来说,判断公司文化很多时候都是看创始人,看创始人是干什么出身的。如果他是做生意的,那么这个公司或许并不是是你的最佳归属,即便讲得再牛。 举今日头条的例子,他们做得比较好,老大本身也是技术出身,他们公司对技术人员的待遇非常好,还去硅谷挖了很多牛逼的人,把公司氛围营造得非常好。所以看创始人是可以看出来这个公司文化到底是怎样的。 对任职管理者的工程师来说,在创业的过程当中有四点需要注意: 第一,盯一线产品。下面的人不怕你challenge他,怕的是把这个东西做完之后上面的人不看,他就会觉得自己所有的辛苦努力全部都浪费了。 第二,6个月要做一次Performance Review,这将决定员工的奖金和股票。 第三,Code Review。在工程方面并不是用最好的技术最重要,而是把Code Review加进来,这并不是为了查出错,而是有时候要注意自己看一下,你交的代码整个逻辑是不是清晰,同时会留下记录以便如果后来的人想学习你这个功能是怎么写的,他可以来从这个上面看所有的记录,这是工程师之间互相切磋和交流的一个工具。 第四,很多中国的创业公司有常会忽视的,入职培训和Wiki要写好。麦肯锡曾总结成功的公司的最大的经验是:Wiki做得很好。可以把公司中每个人的知识归档、以及把每个人牛逼的知识在整个团队里扩散出去,是非常重要的一件事。