写点什么

Facebook 元老王淮谈科技公司应有的工具文化

  • 2012-08-20
  • 本文字数:2674 字

    阅读完需:约 9 分钟

王淮是 Facebook 的早期员工,也是 Facebook 内部第二位中国籍工程师和第一位研发经理,曾经负责支付后台和安全系统,担任反欺诈部门的技术经理。现在,他是一位以兴趣为导向的顾问型天使投资人。

前不久,他发表了一篇文章——《以 Facebook 为案例剖析科技公司应有的工具文化》。其中,他开宗明义提出:

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

王淮提到:当时招聘他进 Facebook 的总监黄易山,是对内部工具的最有力倡导者:

他极度建议,公司要把最好的人才放到工具开发那一块,因为工具做好了,可以达到事半功倍的效果,所有人的效率都可以得到提高,而不仅仅是工程师。

王淮接下来介绍道:Facebook 有两个工具组——研发工具组、网站支持和工具组。

研发工具组的工具包括:

  • 管理分配所有的开发专用服务器

在一个页面上你可以很清晰的看到所有的开发服务器, 包括哪些人是现在的使用者,什么时候申请分配的,服务器的操作系统版本,配置信息等等;对于空余的服务器,你可以一键申请,并自动初始化该服务器。这让刚加入的菜鸟们可以迅速的获得自己的研发活动空间。

  • Git 集成工具

在提交代码之前自动的检测所修改的代码是否符合公司代码规范,如果不符合,该工具会自动警告,但把决定权交给工程师。

  • 现已开源的代码审查工具 Phabricator

工程师可以在页面上非常方便的针对每一段(单行或者多行)代码进行交互讨论;负责审查的工程师可以接受代码改变,可以提出疑问要求原作者继续修改,可以提出自己不适合以推出该代码审查,等等。只有代码被明确接受之后才能被工程师提交到服务器端的代码库,这一点集成到提交工具中强制执行。

  • 灰度发布工具

在这个工具中,工程师和产品经理(也可以授权给其他非研发人员)可以设计新产品发布的目标人群特点(比如年龄,性别,地域,教育,等等方面做出限制)及发布的人群比例(在 0-100% 之间自由调整),所有的改变不需要代码的改变,只需要在工具页面上点击鼠标即可,让灰度发布变得很轻松。

  • 发布过程监控工具

发布的过程由一个利用点对点(BitTorrent)算法实现的工具进行多线程同时发布,对于更新几十万台机器只需要几十分钟。由于是不间断的发布,对公众的服务不可以停,所以 Facebook 会将一部分的机器从公众服务状态中拿下来,更新之后再放回,然后继续下一批,直到所有机器都被更新。这样就可以保证在任意状态都有足够多的机器来支持用户访问。……工具检测发布过程并且将其进度可视化,你可以很方便的看到哪些服务器更新了,现在正在更新哪些服务器,整个网站的进度是百分之几,等等。

  • 数据检测工具

数据收集只要 1-2 行代码即可完成,数据的整理分类存储皆在后台的上万台服务器上自动完成,数据的可视化报表只需要通过一个页面工具点点鼠标设置即可即时生成,而不需要任何代码;数据波动的自动警报也可以设置,可以自动发邮件发短信。

王淮说到了这些工具背后的基本理念:

基本理念就是凡是被很多人不断重复的好的习惯,要将其自动化,绑定到工具之中。以“Don’t make me think”的方式来推广好的 practice。

当然,他们当时仍使用白板作为最重要的人为工具之一:

把最最重要的目标及相关的任务,目标日期,负责人等信息写到白板上挂到我们最近的墙。每天一抬头就可以看到,每次开会都会路过,时刻提醒我们最最重要的事情是什么。这种工具对我们组非常有效。

在网站支持和内部的通讯工具方面,王淮提到的工具包括:

  • 用户问题自动分配工具

Facebook 内部的处理工具做得最重要的事情就是把相关问题自动分配到最相关的运营组(routing),比如和支付欺诈相关的问题应当自动分配到反欺诈运维组的那十几个人那边。然后工具会提供常见的通用解决方案,绝大多数的回信内容自动产生(用户姓名,原问题等个体信息都会自动嵌入)。

如果针对某一个功能的问题突然多起来,工具会自动发现,并提醒运维人员手动查看

所有用户问题的回复率,回复满意度,交互次数等等都会被统计或抽样统计,以保证客服服务的质量。

  • 招聘工具

Facebook 有一套专门的做题系统(Puzzle System)尝试去筛选可靠的工程师。

所有的内部推荐都是通过专门的人才提交工具来上传简历,这个工具和整个招人系统结合。

当然还有必不可少的权限控制 – 只有参加面试的人员才能够看到关于应聘者整个流程的所有资料。

最后,该工具允许打印所有的相关资料以帮助决策委员会讨论该应聘者时拥有所有相关数据。

  • 业绩评价工具

这个工具要允许员工自己对自己评价,员工互相评价,员工和老板之间互评,等等;还要考虑权限的管理。并不是一个很容易开发的工具。这个工具一开始是内部开发,但后来还是决定使用 Rypple 来提供专业的业绩评价工具。

接下来,王淮提供了一些对于工具的思考:

  • 工具开发是手段,而不是目的。……如果某个需要的工具有其他更专业的人做得更好的话,Facebook 非常乐意付费买他们的服务,而把自己的精力集中在核心产品上。
  • Facebook 希望通过工具的方式来解决所有可能想到的问题……能够想到的地方就尽可能用工具。与物理工具不同,计算机工具可以实现“杠杆效应”的反复累积,通过组合这些“杠杆效应”可以达到更高的层级。
  • 工具团队不应该是一个由二线员工组成的“事后诸葛亮”的后勤部门,公司里最有才华的工程师应该用公司自己的工具来工作,并且企业文化里要优先反映这些。当公司过了最一开始开发原型证明概念的萌芽阶段之后,开发出优秀的工具并继续加以改善、更新,这比寻找下一个伟大的创意更重要。

王淮也谈到了工具文化面临的最大挑战:

现实的最大挑战是,工具团队要招聘新员工有一定的难度。Facebook 的用户已经达到数亿,而且还在不断增长,如果你开发的是直接面向用户的产品,每天有那么多人在使用,那带来的成就感非常棒。而你要说服新员工去开发内部工具,说这样可以带给工程师以及其他同事更高的效率、最终帮助公司做出更好的产品,相对是间接并缺乏吸引力的。

他的解决方法是:

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

InfoQ 的读者,你们所在的公司有工具文化么?

2012-08-20 22:527172
用户头像

发布了 479 篇内容, 共 159.2 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

阿里p8强烈推荐这部《从零开始学架构》堪称GitHub最强!

Java你猿哥

Java 架构 ssm 架构设计

面试官:介绍一下什么是缓存雪崩、缓存击穿、缓存穿透?

Java你猿哥

redis 面试题 缓存穿透 缓存击穿 缓存雪崩

终于有人把动态规划、冒泡排序、二叉树、链表、栈全部讲清楚了

Java你猿哥

数据结构 算法 二叉树 排序 LeetCode算法

品牌活动|行云创新出席“新工业·智物联”全国巡回 CEO 峰会

行云创新

行云创新 新工业 智物联 全国巡回CEO峰会珠海站

python中对象引用 | python小知识

AIWeker

Python python小知识 三周年连更

掌握动态规划,从“什么问题适合用”及“解题思路”入手

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 4 月 PK 榜

华为云开源项目OpenTiny中TinyVue有什么优势?

英勇无比的消炎药

开源 Vue 组件库

每个Java程序员都必须知道的四种负载均衡算法

做梦都在改BUG

Java 负载均衡 负载均衡算法

阿里“妈宝级”之作,Kubernetes原理剖析与实战应用手册,太全了

做梦都在改BUG

Java Kubernetes k8s

如何用DataTester设计并创建可视化实验

字节跳动数据平台

AB testing实战 A/B测试 企业号 4 月 PK 榜

Mybatis返回集合类型到底是空集合还是null?源码解读

做梦都在改BUG

Java 源码 mybatis

共享电单车生产厂家如何选择

共享电单车厂家

共享电动车厂家 共享电单车生产 共享电动车厂商 本铯智能共享电动车商家

java 开发 SSM 框架整合之 MyBatis 动态 SQL

Java你猿哥

Java sql mybatis SSM框架 if

拿来吧你!保姆级Docker底层原理及源码实战手册,上线点赞破10W

做梦都在改BUG

Java Docker 容器

Android C++系列:C++11函数特殊特性

轻口味

c++ 三周年连更

JSF源码分析(一)

京东科技开发者

spring jsf 企业号 4 月 PK 榜

超简单!Java 项目自动生成接口文档教程

Apifox

Java 接口文档 API 文档生成 自动生成

我认真总结并分析了Spring事务失效的十种常见场景

做梦都在改BUG

Java spring Spring事务

GitHub爆款!Java性能优化:轻松道破软件性能调优,不止搞定JVM

Java你猿哥

Java JVM Java性能优化

超级详细|Linux系统下从0到1的玩法大全

浅羽技术

Linux unix 操作系统 命令 三周年连更

Java中的「接口」到底是什么?

海拥(haiyong.site)

三周年连更

已献出膝盖!GitHub上的宝藏级SpringBoot核心宝典,讲得太清晰了

做梦都在改BUG

Java 架构 微服务 Spring Boot 框架

基于STM32设计的音乐播放器

DS小龙哥

三周年连更

《人间失格》

后台技术汇

三周年连更 人间失格

ARB链质押挖矿代币空投游戏dapp系统开发合约定制

开发微hkkf5566

Typescript- 数据类型

格斗家不爱在外太空沉思

typescript 三周年连更

【堡垒机】免费堡垒机介绍以及下载看这里!

行云管家

堡垒机 运维审计 免费 小微企业

ThreadLocal源码分析

做梦都在改BUG

Java 源码 多线程 ThreadLocal

The Beacon链游NFT系统开发技术

薇電13242772558

NFT

一文详解RocketMQ-Spring的源码解析与实战

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

【Linux】firewall-cmd之防火墙简介及命令详解【附加实战⭐建议收藏!!⭐】

A-刘晨阳

Linux 防火墙 Firewalld防火墙 三周年连更

Facebook元老王淮谈科技公司应有的工具文化_Meta_郑柯_InfoQ精选文章