登陆注册
1921400000029

第29章 硅谷盛行的“工具文化”

不断发展、改进公司的内部工具,可以极大地提高每个员工的工作效率,可以减少运营人员的数量。这样既改善了整体协调,又减少了整体开支。

为帮助工程师更好地进行产品开发,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的用户已经达数亿,而且还在不断增长,如果你开发的是直接面向用户的产品,每天有那么多人在使用,那成就感显然非常棒。而你要说服新员工去开发内部工具,称这样可以带给工程师以及其他同事更高的效率、最终帮助公司做出更好的产品,这个理由显然缺乏吸引力。所以,工具团队在招聘上花了很多工夫,想各种办法找到合适的人。

一种方式是用一些通过提高效率的具体案例和数据来做理性说服,这需要在开发工具的同时检测工具使用前后的效率变化。当然,为了吸引内部最好的人才愿意到工具团队,企业文化中也一定要着重反映出这一点:公司将内部工具视为持续的重要投资,以保持公司的领先地位。集中精力努力说服几位顶尖工程师加入工具组,具有很好的示范效果和磁铁效应。如果真正做到如此重视,最优秀的工程师是愿意加入工具团队的,这样可以大大提升同事们的效率,从而更好地服务于用户,这也是一种外部用户所感受不到的成就感。

同类推荐
  • 做最好的店员2:新店员入职第一课

    做最好的店员2:新店员入职第一课

    网购浪潮的兴起,使得很多人认为终端销售已进入低谷。事实上,舒适的购物环境、真实的产品触感以及现场的导购解说,都是门店销售的绝对优势,而店员是使这一切优势发挥到极致的关键。《做最好的店员2:新店员入职第一课》从店员岗位角色入手,分别从职业素养、销售技巧等诸多方面为新入职的店员展示相关工作的情形和遇到的问题,并提供解决方案。通过阅读本书,你将迅速成长为一名合格的门店店员。
  • 给经理人每天看的管理学

    给经理人每天看的管理学

    本书分认误解管理学、战略管理学、人才管理学、财务管理学、营销管理学、生产管理学、执行管理学、关系管理学、变革管理学、信息管理学、文化管理学、风险管理学等部分。是一本包罗万象、着眼实际的管理学实用大全。
  • 每天学点管理学

    每天学点管理学

    《每天学点管理学全集》本书结合真实、生动的实例,将管理的妙招一一展示:如何让自己成为榜样?如何让下属心服口服?如何实现与员工的无障碍沟通?如何把大家拧成一股绳?当然,管理不是一朝一夕的事,管理实效的取得也不是立竿见影的,管理方面的智慧光靠书本是远远不够的。
  • 决策问题管理系统开发研究

    决策问题管理系统开发研究

    本书系统评述了决策支持系统的问题管理方法及问题系统的研究现状,通过分析决策问题的普遍特征,在综合人与计算机对决策问题处理的各自优势的基础上,探讨更具智能性的决策问题管理和分析的一般方法。
  • 寓言中的经营智慧

    寓言中的经营智慧

    本书中的寓言内容涵盖了企业经营中的基本方面,诠释了现代企业里经常出现的各种不同的问题。这使得更多的人,尤其是企业经营管理者能够更实际地在经营活动中运用那些通俗易明的古今智慧。
热门推荐
  • 一线长生乱红尘

    一线长生乱红尘

    求长生,求长生,千人万人化了尘。天地之间,只有这“一线”的机会,可谁又能抓得住?
  • 国学知识大全

    国学知识大全

    本书收录吕思勉先生《国学概论》《经子解题》《先秦学术概论》《理学纲要》《中国文化史》《历史研究法》《史学与史籍》《中国史籍读法》,是迄今讲授国学入门门径最全面的指导书。
  • 上下五千年之不靠谱的历史玩家们

    上下五千年之不靠谱的历史玩家们

    如果你穿越了,回到了你所不熟悉的古代,没有系统,没有金手指,也不会烧玻璃造水泥,发明不了花露水肥皂洗面奶,手无缚鸡之力,而周围强敌环绕,形势严峻,请第一时间联系我们,服务周到,包你满意。什么…你说你是一个平头百姓,想要成为王侯将相,兄弟,你绝对是穿越的时候,没有给穿越委员会塞红包,我们也很忙的,你看,你这个事能不能往后推一推,我们也需要身份的,难得穿越一场,能霸气的出场,谁愿意窝囊的憋屈,咱不就图个开心吗,你开心我开心大家开心……什么……你说我们的服务很坑,你要投诉我们,给我们打差评,兄弟,你也不看看你发布的是什么玩意任务,我们瞎了眼接了你的任务,已经是很倒霉了。什么……你说我们诱拐你的贤臣美女,能工巧匠,兄弟,难得穿越一次,不就是干这个来的吗,你以为那个朝代是你家的,什么是见见面,分一半,我们能抢到手,是我们的本事,规矩懂不懂。
  • 快穿之你是我的不二臣

    快穿之你是我的不二臣

    【从此我夜神臣便是你洛天羽的不二臣,绑定契约,请准备接收原主记忆……】 洛天羽是个名副其实的宅女,看漫画,看小说,追纯爱,玩游戏是她的最爱。无意间开启了快穿系统,古代、现代快穿三千小世界。快传系统不再是冰冷冷的机器,竟然是一个活生生的腹黑美男子——夜神臣 竟然还是双人快穿?每次读取原主记忆都要……解决掉每一个快穿世界里的情感白痴就可以完成任务,获得积分、技能点等奖励,并有可能重生。 完成任务的方法有很多,可以给人保媒拉纤,可以攻略boss奉献自己,也可以虐渣!————————————————————————怎么办?这次真的动情了,我要追到他!让他情感值升为100!一年后……【目标人情感值-100】【别哭,还有我在】夜神臣……你做了什么?!npc也可以有感情吗?! ———————————————————————— 经历了几个位面,后知后觉的洛天羽才发现系统竟然爱上自己,还是个腹黑的偏执狂!怎么办?
  • 三生灭天

    三生灭天

    这是属于武修的世界!武修,修的是无与伦比的力量;武修,修的是永恒不变的决心;武修,修的是绵绵不觉的生命……一本功法引发一个故事的开始。他修三生,战锋芒,却只待今朝“三生逆转定武神”!
  • 英雄联盟之世界转变

    英雄联盟之世界转变

    上了最强王者的叶晨,因为一场车祸,导致昏迷,当他醒来后,父母变了,亲人变了,同学变了,所有人都变了,世界变也变了
  • 百鬼踏青图

    百鬼踏青图

    少年郎交友情多,妖魔鬼怪狐黄蛇。红尘缘起追前世,梦回千古得宝图。
  • 未来梦想世界

    未来梦想世界

    这是我的一个梦想,希望它将来能成为现实。
  • 曾家旧事

    曾家旧事

    本作品写的是80年代末至今一个农村大家庭由团结走向分裂的故事。主人公“曾庆富”出生在一个传统的农村大家庭,自从祖父去世后,家庭开始分裂,自私而且暴躁的主人公庆富经历了大家庭和小家庭的破裂,也经历“国企工人”、到“小卖部老板”、再到”私企老板“、最后破产又去做回”工人“的角色转变。真实地反映了自八十年代末至今农村现实。
  • 再一生

    再一生

    青梅竹马走来,转换身份后的分离,再一生的路我们还是要一起走。