导读:美国科技博客BusinessInsider今天撰文揭开Facebook程序员的神秘面纱。Facebook代码从开始编写到最终发布都有极其严格的程序。CEO马克·扎克伯格(MarkZuckerberg)甚至亲自检查NewsFeed的每一次代码更新,以确保没有任何错误。扎克伯格在Facebook工作的工程师是这家社交网络巨头最宝贵的资产之一,他们拥有很大的自主权,但他们也面临着尽快发布高质量代码的压力。谷歌(微博)员工李毅(YeeLee)通过与大量Facebook工程师的对话,在博文中披露了Facebook代码发布过程。这个过程确实和外界之前想象的没有太大区别,虽然Facebook对代码发布的监管比人们想象的要严格。虽然这篇博文是一年前发布的,但自从Facebook上市以来,流程似乎并没有太大变化。Facebook员工主要由工程师组成。最大的两个团队是Engineering和Ops,它们加起来约占Facebook员工总数的一半。此外,Facebook拥有大量的产品经理。他们确保代码按时发布。每个产品经理负责7到10个工程师。所有Facebook工程师都接受四到六周的培训,学习Facebook如何修复错误并听取高级员工的讲座。进入“新兵训练营”的工程师中,约有10%未能通过测试,最终被解雇。培训结束后,工程师们开始使用Facebook数据库。他们可以随意检查代码并对数据库进行更改。员工还会得到一份“该做和不该做”的清单,例如共享用户数据。尽管如此,Facebook还是采取了一系列措施来防止此类事情发生。和谷歌一样,Facebook的企业文化也是以工程师为主。“产品经理基本上无能为力,”一位工程师说。工程师可以为尚未发布的产品修改规格,并随时提出新的功能想法。工程师每月在不同的团队会议上展示他们的工作。产品营销经理和产品经理参加这些会议,但不鼓励发言。“如果产品经理在例会上畅所欲言,工程师就会对领导说,‘上次会议他们对产品的意见太多了’。”在Facebook,工程师基本上决定他们想做什么。他们会去找他们的经理说,“这是我想做的五件事。”产品经理会说服工程师去现场试用,让他们亲身体验这些项目的效果,但大多数时候他们不会给每个工程师以侵入性的偏好。工程师开发原型而不是争论一个功能是否值得尝试。接下来,工程师们会花一周的时间开发一项功能并对其进行测试,看看它是否值得作为成品使用。通常,新功能由Facebook员工自己测试。整个过程由一个名为“Gatekeeper”的应用程序控制。这是Facebook“黑客”文化的一大组成部分——快速开发和推出产品,淘汰没有市场前景的产品。在Facebook,每个人都想参与后端产品的开发。可扩展性和基础设施是工程师最感兴趣的两个问题。因此,工程师很难对实时新闻等前端产品感到兴奋。相反,每个人都想从事后端产品,例如新闻推送算法。这种方法与其他消费科技公司的规范背道而驰,在这些公司中,员工应该参与前端产品的开发。Facebook创始人兼首席执行官马克扎克伯格(MarkZuckerberg)会亲自检查NewsFeed的每一次代码更新。在Facebook,所有主要代码升级都必须经过强制评估,任何更改都至少由一个人检查。但工程师对动态消息所做的任何更改都将由扎克伯格亲自检查。Facebook工程师负责测试产品功能,修复产品错误,以及发布后的产品维护,但他们不是官方的质量保证团队。不过,Facebook仍然有工程师负责质量评估,并积极鼓励每位工程师报告产品错误。通常,每周二发布代码升级。Facebook有专门的评估工具,可以告诉工程师代码更新的风险有多大。运营团队逐步推出代码更新。Facebook总共有大约60,000台服务器,运营团队逐渐将更新的代码推送到少数服务器以确保其正常运行。一开始有6台服务器,然后慢慢增加。如果需要进行更改,这项工作由提交代码更新的工程师离线完成。修复工作完成后,代码会先在这6台服务器上重试,然后再添加到更多的服务器上。在代码更新发布期间,如果工程师的提交需要更改,运营团队会通过IRC和其他实时聊天工具一对一通知工程师。如果维修结果仍不能令运营团队满意,涉事工程师将被“公开羞辱”,虽然李某没有提供具体细节,但他表示,如果经常发生这种情况,工程师将被解雇。本文来自:新浪科技
