【书摘】硅谷盛行的“工具文化”
2013-01-17   作者:  来源:经济参考网
分享到:
【字号
  不断发展、改进公司的内部工具,可以极大地提高每个员工的工作效率,可以减少运营人员的数量。这样既改善了整体协调,又减少了整体开支。
  为帮助工程师更好地进行产品开发,Facebook对内部工具(Tools)是非常非常关注的。招聘我进公司的总监黄易山,就是这方面一个最有力的倡导者。他极力强调,公司要把最好的人才放到工具开发那一块,因为工具做好了,可以达到事半功倍的效果,所有人的效率都可以得到提高,而不仅仅是工程师。
  Facebook有两个工具组。一个叫研发工具组(Dev Tools),专门负责研发工具的开发和维护,包括所有有助于工程师开发速度和质量的工具,主要服务对象是内部工程师。另外一个叫网站支持和工具组(Site Support and Tools),主要负责公司里所有通用工具的开发和维护,关注的主要是如何方便用户和Facebook的交流以及Facebook内部的沟通,主要都是通信工具,服务对象是用户和所有员工。
  研发工具有哪些呢?
  新的工程师刚加入Facebook时,需要分配自己的开发服务器,公司就做了一个工具来管理分配所有的开发专用服务器。在一个页面上,你可以很清晰地看到所有的开发服务器,包括哪些人是现在的使用者、什么时候申请分配的、服务器的操作系统版本、配置信息等。对于空余的服务器,你可以一键申请,并自动初始化该服务器。这让刚加入的菜鸟们可以迅速地获得自己的研发活动空间。
  工程师最重要的工作就是写代码。针对代码管理,公司也开发了很多工具。我在这里介绍部分工具供参考。Facebook的代码库管理是通过一种叫GIT的开源管理系统,为此开发了一些工具来集成GIT。比如有一个工具是在提交代码之前自动检测所修改的代码是否符合公司代码规范,如果不符合,该工具会自动警告,但把决定权交给工程师。Facebook提倡对修改的代码写测试案例,在代码提交时自动检测是否存在覆盖这些修改的测试案例,如果没有则会警告,但工程师仍然可以强制提交。但这种情况下,代码若出错给网站带来巨大危害的话,工程师可能会被严厉批评,因为这本是可以避免的错误,是人性的狂傲忽视了工具的提醒。在代码审查(Code Review)方面,Facebook做了一个可视化的工具,现已开源,叫Phabricator。工程师可以在页面上非常方便地针对每一段(单行或者多行)代码进行交互讨论;负责审查的工程师可以接受代码改变,可以提出疑问要求原作者继续修改,可以提出自己不适合以退出该代码审查,等等。只有代码被明确接受后,才能被工程师提交到服务器端的代码库,这一点被集成到提交工具中强制执行。这些工具的基本理念就是,凡是被很多人不断重复的好习惯,要将其自动化,绑定到工具之中。以“Don’t Make Me Think”(别让我多想)的方式来推广好习惯。
  Facebook的代码发布是灰度发布,所以开发了一个方便设计灰度发布的工具。在这个工具中,工程师和产品经理(也可以授权给其他非研发人员)可以设计新产品发布的目标人群特点(比如对年龄、性别、地域、受教育程度等方面的限制)及发布的人群比例(在0%~100%之间自由调整),所有的改变都不需要修改代码,只需要在工具页面上点击鼠标即可,让灰度发布变得很轻松。
  发布过程由一个利用点对点(Bit Torrent)算法实现的工具进行多线程同时发布,更新几十万台机器只需要几十分钟。由于是不间断地发布,对公众的服务不可以停,所以Facebook会将一部分机器从公众服务状态中拿下来,更新之后再放回,然后继续下一批,直到所有机器都被更新。这样就可以保证在任意状态下都有足够多的机器来支持用户访问。整个过程都是通过工具自动实现的。而监控这个发布过程的进展,也有一个工具用于监测并且将其进度可视化,你可以很方便地看到哪些服务器更新了,现在正在更新哪些服务器,整个网站的进度是百分之几,等等。
  发布之后的数据监测更是重点,Facebook做了很多工具使之变得容易。数据收集只要1~2行代码即可完成,数据的整理、分类和存储皆在后台的上万台服务器上自动完成,数据的可视化报表只需要通过一个页面工具点点鼠标设置便可即时生成,不需要任何代码。数据波动的自动警报也可以设置,可以自动发邮件、发短信,可以要求24小时全球轮班的站点稳定工程部门(Site Reliability Engineering)按照你既定的反应方案去解决。如果还不行,最后会打电话给你,直接把你从床上拽起来。在Facebook工作的四年半时间里,这样的事件至少在我身上发生了10次。
  还有一种工具是人为的,我们组经常用,就是把最最重要的目标及相关的任务、目标日期、负责人等信息写到白板上,挂在离我们最近的墙上。每天一抬头就可以看到,每次开会都会路过,时刻提醒我们最最重要的事情是什么,这种工具对我们组非常有效。
  网站支持和内部通信工具有哪些呢?
  在如何处理用户和Facebook之间通信这个问题上,针对常见的问题(尤其是关于如何使用某项功能的问题),Facebook在用户提交时,尝试将其引导到网站帮助或FAQ的页面。但这并不能满足所有人的需求,尤其是和个人特殊情况相关的问题,仍然有很大一批用户会坚持提交问题,这时候Facebook内部处理工具就要把问题自动分配(Routing)到最相关的运营组,比如,和支付欺诈相关的问题应当自动分配给反欺诈运维组的那十几个人。然后,工具会提供常见的通用解决方案,比如,若选择退款,可以做到一键退款,绝大多数回信内容自动产生(用户姓名、原问题等个体信息都会自动嵌入),运维人员可以选择要不要修改内容,然后发送。如果针对某一个功能的问题突然多起来,工具会自动发现并提醒运维人员手动查看,运维人员可以根据实际情况决定要不要工程师介入寻找并修复可能的问题根源。所有用户问题的回复率、回复满意度、交互次数等信息都会被统计或抽样统计,以保证客户服务的质量。
  另外一个重要工具是招聘工具。Facebook有一套专门的做题系统(Puzzle System)尝试去筛选可靠的工程师。这套系统是一个专门的招聘工程(Recruiting Engineering)组做的,包括题库的管理和更新、自动提交系统和打分系统等。如果在解题这个环节脱颖而出的话,公司猎头(Recruiter)会给工程师打电话,安排他下一步的电话面试。另外一种获得电话面试的途径是通过内部推荐。所有的内部推荐都是通过专门的人才提交工具上传简历,这个工具和整个招聘系统结合,并注明这是一个内部推荐、谁是推荐人。而整个面试过程里,包括谁应该参与面试,谁实际参与了面试,每一步面试官对应聘者的评价和打分,都在工具里被很好地记录和显示出来。当然还有必不可少的权限控制——只有参加面试的人员才能够看到关于应聘者整个流程的所有资料。最后,该工具允许打印所有的相关资料以帮助决策委员会在讨论该应聘者时拥有全部的相关数据。
  还有一个重要的工具,就是每六个月一次的业绩评价工具。这个工具允许员工对自己评价、员工互相评价、员工和老板之间互评等,还要考虑权限的管理。这并不是一个很容易开发的工具,一开始是内部开发,但后来还是决定使用Rypple来提供专业的业绩评价工具。
  从这些工具可以看出,Facebook是一家工具驱动的公司,但这并不表示所有工具都要公司自己开发。必须清楚的是:工具开发是手段,而不是目的,Facebook的目的是打造一个最好的社交网站。因此,对于某个需要的工具,如果有更专业的人做得更好的话,Facebook非常乐意付费购买他们的服务,而把精力集中在核心产品上。这就是为什么Facebook会花大笔钱购买数据库软件MySQL的支持服务。
  还有很多其他工具。Facebook希望通过工具来解决所有可能想到的问题,比如,要请假有相应工具,你可以说明休息多长时间,需要让哪些人知道这些情况等;所有新想法的提出、讨论,让网络头脑风暴变成了可能;各种电子设备如电脑、手机等IT服务的请求和处理,通过工具来解决……能够想到的地方就尽可能用工具。与物理工具不同,计算机工具可以实现“杠杆效应”的反复累积,通过组合这些“杠杆效应”可以达到更高的层级。
  因此,公司的工作效率,影响到你需要雇用的员工数,影响到公司的成本究竟是多少,并将直接影响到公司内部产品的独创性。黄易山就认为,工具团队不应该是一个由二线员工组成的“事后诸葛亮”的后勤部门,公司里最有才华的工程师应该用公司自己的工具来工作,并且企业文化里要优先反映这些。编写出优秀的工具并继续加以改善、更新,这比寻找下一个伟大的创意更重要。
  我最近跟国内一些技术公司的高管们讨论过有关工具的话题,有些人非常赞同,也想通过工具来解决很多工程性问题。比如你要在公司里推广一些规范性的规则,一种传统的方法是反复强调,另一种是开发出好用的工具,把这些东西固定化在里面,借助工具进行强制性推广,就能解决很多问题。Facebook没有专门的软件质量测试人员,都是工程师自己进行。公司就有这方面的工具,把测试过程中重复性的工作集中起来,自动化实现,只有一些必须要个性化处理的部分由工程师具体再去做。我在开发反欺诈系统时,将欺诈案例识别直接抛给人工处理当然是最简单的方式,但我们希望通过自动处理来解决大部分欺诈案例,而把精力放在那些确实需要单独处理的特殊案例上,最后决定的方向是“进行自动处理”和“建立反馈机制”,设计出用于用户报告(外部工具)和案例审查(内部工具)的工具。这样一来,我们也可以自动采集客户支持部门的处理意见,并集成到下一轮的机器学习中去,工具会越加精确、聪明,且与时俱进。
  Facebook在 2005~2006年的发展中,公司根据不断增长的用户数量,聘请了成比例的客户服务人员。当后来有1000万用户时,公司的客户服务人员还不到20个。到Facebook的用户数量达到1亿时,很明显,公司不能用相同的速度来增加员工数量,所以公司让内部方案团队与客户服务分析师更加紧密地配合,推出了更具创新性的工具和用户界面,极大地提高了客户服务部门的工作效率。通过内部工具团队研发的产品,客户服务部分析了目前已完成建立的工作并创建了定制方案,方法是让电脑去做可自动化处理的部分并优化用户体验,这样客户服务分析师就可以专注于人工最擅长处理的事务。
  不断发展、改进公司的内部工具,可以减少招聘运营人员的费用,让每个员工的效率更高,这样既改善了整体协调(员工数量少意味着协调更容易进行),又减少了整体开支。如今,Facebook每一位工程师服务的用户数均超过100万人,随着用户数量的持续增长,这种效率优势将更加明显。
  不过有一个现实问题是,工具团队要招聘新员工有一定难度。Facebook的用户已经达数亿,而且还在不断增长,如果你开发的是直接面向用户的产品,每天有那么多人在使用,那成就感显然非常棒。而你要说服新员工去开发内部工具,称这样可以带给工程师以及其他同事更高的效率、最终帮助公司做出更好的产品,这个理由显然缺乏吸引力。所以,工具团队在招聘上花了很多工夫,想各种办法找到合适的人。
  一种方式是用一些通过提高效率的具体案例和数据来做理性说服,这需要在开发工具的同时检测工具使用前后的效率变化。当然,为了吸引内部最好的人才愿意到工具团队,企业文化中也一定要着重反映出这一点:公司将内部工具视为持续的重要投资,以保持公司的领先地位。集中精力努力说服几位顶尖工程师加入工具组,具有很好的示范效果和磁铁效应。如果真正做到如此重视,最优秀的工程师是愿意加入工具团队的,这样可以大大提升同事们的效率,从而更好地服务于用户,这也是一种外部用户所感受不到的成就感。
  凡标注来源为“经济参考报”或“经济参考网”的所有文字、图片、音视频稿件,及电子杂志等数字媒体产品,版权均属经济参考报社,未经经济参考报社书面授权,不得以任何形式刊载、播放。
 
相关新闻:
· 外国人是这样读书的…… 2012-12-11
· 《毛泽东晚年读书纪实》 2012-11-23
· 国外名校:从“教读书”到“帮创业” 2012-11-22
· 马蔚华巴曙松谈金融与读书 2012-08-21
· 【读书】贵金属的价值 2012-08-08
 
频道精选:
·[财智]诚信缺失 家乐福超市多种违法手段遭曝光·[财智]归真堂创业板上市 “活熊取胆”引各界争议
·[思想]投资回升速度取决于融资进展·[思想]全球债务危机 中国如何自处
·[读书]《历史大变局下的中国战略定位》·[读书]秦厉:从迷思到真相
 
关于我们 | 版权声明 | 联系我们 | 媒体刊例 | 友情链接
经济参考报社版权所有 本站所有新闻内容未经经济参考报协议授权,禁止转载使用
新闻线索提供热线:010-63074375 63072334 报社地址:北京市宣武门西大街57号
JJCKB.CN 京ICP备12028708号