《打造Facebook》

杨旭 bio photo By 杨旭

打造Facebook

员工的忠诚,只是文化认同的附属

科技公司通常不会一味强调员工对公司对忠诚度,更多的是考虑公司本身有什么值得让员工留下来。尝试用产品、理念、理想、期权、薪酬、福利等方面来吸引员工形成自然的忠诚。一个人热爱一家公司是对公司文化的认同,忠诚,只是文化的附属品。

大公司病

随着公司规模的增大,人员和部门的增加,公司难免出现大公司病

  • 部门墙造成严重内耗
  • 管理层级加深并出现官僚文化
  • 由领导层中央集权式管理
  • 缺少工程师文化
  • 局部利益大于公司整体利益

Facebook的面试流程

大部分的招聘并不针对具体用人部门,更多的考察对核心价值观的认同通用技术能力系统整体设计能力,以及沟通交流能力

常见的面试流程:

  • 1分钟大致介绍本次面试,主要是帮助面试者消除紧张感
  • 4分钟面试官自我介绍(1分钟),3分钟留给应聘者进行自我介绍,面试是双方平等的相互选择,尊重面试者的知情权
  • 3-5分钟回答为什么对facebook感兴趣,主要考察应聘者的目的以及对公司价值观的理解,只追求对核心价值观的认同,识别那些只关注经济收入的应聘者。
  • 10-15分钟针对面试者过往项目进行了解和提问,通过star原则考察面试者的表达能力、技术能力、总结能力等方面。
  • 20分钟集中在具体技术点进行深入提问
  • 5分钟给应聘者自由问答,可以进一步考察应聘者的求值目的,并尊重其选择权。

在面试过程中,需要考察面试者的沟通能力学习意愿团队协作能力,考察具体技术问题而非智力问答

在面试过程和结果反馈时,一定要尊重面试者,既能体现公司对人才的尊重,也能产生良好的口碑,吸引更多的人才。

招聘标准 —— 只和最好的人合作

  • 技术性问题用来了解是否一流
  • 文化性问题用来了解是否合适

一流人才是尽其所知,用其所长,学其所不能;完成目标并远超预期的人。 他们的本能是挑战自我,超越别人的期望,超越自己的期望

  • 一流人才喜欢互设榜样
  • 一流人才喜欢互相挑战
  • 一流人才愿意被委以重任

想要保持团队的质量,一定要做到:

  • Hire Slow - 谨慎招认,拒绝平庸,不要妥协
  • Fire Fast - 快速淘汰不适合员工,避免对整个团队带来负面影响

新兵训练营

facebook的新员工不会被直接分配到具体部门,而是统一在新兵训练营中进行6周的统一培训。

新兵训练营的几个目的:

  • 帮助新员工融入公司,熟悉公司产品、结识同事、快速融入产品发布流程当中。
  • 帮助新员工充分了解各个产品和项目组,提供充分的时间给新员工和用人组进行相互了解,促进双方的最佳匹配

在新兵训练营期间,每位新员工都会拥有一位导师,其主要目的是:

  • 一对一的进行定期沟通,主要是进行文化、方法、思维的传递
  • 引导新员工向正确的方向进行努力和尝试
  • 对新员工进行评价,帮助他们解决问题,使其发挥出应有的价值
  • 促进新员工与更多项目组进行接触,帮助他们筛选和选择
  • 最终目的:帮助他们找到合适的组

新兵训练营同样是对导师的观察和培养,在这个过程中锻炼其沟通能力管理能力,帮助导师向技术经理方向发展。

黑客文化

facebook是由黑客创立的公司,其诞生背景决定了它的文化基因。

黑客文化最核心的价值观是所有信息都应该是自由传播的,其驱动力是不断的学习和再创造,黑客们充满娱乐精神,并且勇于挑战不可能

黑客意味着:

  • 理想主义者
  • 希望对世界作出贡献
  • 挑战能力的极限
  • 持续改进和衍变创新
  • 亲身实践、积极进取
  • 精英为王

工程师驱动的文化

在产品研发上,工程师与产品经理所起到的主导作用比例是60:40;而后台系统则是100:0

在产品开发过程中,各种角色进行充分的讨论,过程中充满了争执、辩论和尝试,最终各方妥协达成一致的目标。在整个过程中,工程师充分参与目标和计划的制定,以此来激发工程师的责任感主动性,使得他们充分围绕着产品进行思考

产品开发的三个原则

  • 迅速发布,进行检测(Move Fast and Monitor Closely),通过灰度发布快速试错并明确产品方向,而不是一次性追求完美
  • 坦然面对不确定性(Be Comfortable with Uncertainly),允许一些不确定性,快速进行尝试并根据实际反馈决定继续还是停止,而不是陷入无休无止的讨论当中。
  • 不追求极致,应该不断的发布以达成目标(Done is Better than Perfect, Stay Focused and Keep Shipping),基于软件产品自身的特点,允许产品通过持续的改进而逐渐达到极致。

Hack-A-Month计划

工程师再逐渐习惯某一个岗位的工作之后,难免会产生厌倦或缺少激情,特别是对于新知识充满渴望的工程师。这种情绪长期积累下来,很容易导致工程师离开公司,一旦到了这一步,往往已经很难挽回。

Fackbook的Hack-A-Month计划正是为了解决这一问题,及早发现逐渐失去激情的工程师,并且主动帮助他们找到新的方向和工作组,为公司保住优秀的人才。

Hack-A-Month的执行也需要遵循一些规则:

  • 当前岗位上必须坚持一年,避免浅尝则止
  • 必须证明他是一名优秀的工程师,即在当前岗位上获得良好的绩效
  • 研发经理主动发现并推动,着眼于公司整体利益而非工作组的局部利益
  • 如果是员工主动提出的,经理要积极配合并帮助他找到新的组
  • 经理要帮助员工交接工作并且安排到新组去工作
  • 如果换组不成功,可以回到原组工作,并且下一次换组要间隔半年以上

Hack-A-Month不仅能够保持工程师的激情,而且从公司角度有效的保护整体利益。Hack-A-Month帮助员工以最小的代价进行新的体验和选择,如果尝试失败,由有后悔的余地回归原本的工作,同时由可以安心的期待新的机会。

人员流失是任何一个公司都头疼的问题,与其被动的担忧和猜疑,不如主动发现和解决,帮助工程师在公司内部进行尝试并在制度上为他提供后援,只有这样才能真正留住人心。

如何有效管理团队

领导者最重要的工作是激发和帮助员工,让他们更加优秀,要为团队成员树立起高的期望并加以权衡,在团队的真实极限中找到一个可持续的驱动力来激励员工超越自我。

作为领导者最重要的工作就是:帮助员工找到他们的长处,帮助他们创建条件来发挥自己的长处,不断激励他们来超越自己的想象

最为团队领导者,要为团队树立足够高的期望,让团队能够感受到挑战,由不至于油尽灯枯。当团队成员完成挑战时,能够得到极大的锻炼,并且充分满足成就感。

在工作任务分配的时候,要考虑每个人的特点,并且在彻底委托和紧密监控之间找到合适的平衡点。

在任务分配时,需要考虑:

  • 个人的兴趣点,充分满足工程师的个人意愿
  • 项目所需的经验和优势,为项目提供最大的价值

如果两者能够完美的匹配,自然能够最大化个人和团队的收益,但情况往往不会如此理想。在大多数情况中,以员工个人意愿为主,特别是在一个存在大量“牛人”的团队中。世事无绝对,实际的侧重点要以实际的团队情况为准。

对于委托和监控,需要因人而异。

  • 如果有足够的信任,自然可以全权委托
  • 如果尚未建立足够的信任,可以先进行一定的关注,随着逐步建立信任,逐步降低关注频率和控制程度
  • 在监控的过程中,要注意方式方法,避免伤害到对方的自尊心

一对一的会面

领导者要定期与每一位下述执行一对一会面,会面的主题包含三个方面:

  • 具体的技术问题和解决方案的讨论
  • 个人成长或发展的讨论
  • 公司的一些政策变化或组织结构调整

理想中的话题应该是第二种,而不是其他。领导者及时发现员工的兴趣点、优势、弱点、问题等,帮助他们创造发挥空间、解决个人困难,为他们的个人成长充分创建条件。

另外,对于一对一会面要足够重视:

  • 要有预约和准备
  • 尽量避免随意取消
  • 主角是员工,以倾听为主
  • 给出的建议都要给出具体的实例和证据
  • 关注事后的行动,以此才能建立长期的信任关系

导师文化

在美国长期存在导师文化:

  • 双方是真正的朋友,愿意不求回报的帮助你提高
  • 在某一领域帮助你提高,为你指引方向,而不是解决具体问题
  • 要积极主动的寻找并提出请求
  • 对于导师要心怀感激
  • 要认真对待导师的建议,记录、总结并经常与导师讨论

Facebook的产品开发流程

  1. Picture the Vision and Set the Goals
  2. Collect Ideas and Prioritize
  3. Align Across Teams
  4. Let others Know
  5. Design Product
  6. Pinpoint the Person
  7. Scrum
  8. Synchronize the Report Status
  9. Launch and Monitor

描绘远景 设置目标

在每一件事情开始之前,都要设立一个远景和目标。后续的一切行为都要围绕这一目标进行,避免偏离。

在描绘远景的时候要从几个角度考虑:

  • 为什么要设立这个目标?
  • 这件事情完成之后回事什么样子?
  • 如何实现这个目标?

通过这几个方向的思考,不但可以明确这件事情是否具有意义,并且逐渐使目标具体化和量化。

在制定目标的过程中,遵循SMART原则:

  • S - Specified 目标是具体的,避免行动的时候无法形成有效的指导,同时便于评判结果
  • M - Measurable 目标是量化和可以度量的,不仅勇于评判结果,而且在行动过程中可以有效的监测进展
  • A - Aggressive 保持一定的挑战性,使得团队充分发挥潜力,同时能够有效的保持团队的激情和创造力
  • R - Realistic 目标要切实可行,否则团队无法看见希望也不会全心全意的执行
  • T - Time-bound 没有时间限制的目标没有任何意义,也无法让人紧张的投入其中

收集想法并排出优先次序

对于较大的目标,通常为产生含多的想法或步骤。在有限的时间内是无法全部尝试和达成的。对于所有的想法,要由工程师们根据具体目标、实际情况等方面进行有效的思考和分析,分辨出重要程度和优先级,正确作出选择和决断。

在这里,要有效的区分两个步骤:“提出想法”和“分析想法”

  • 提出想法时,要充分的集思广益,让大家肆无忌惮的提出想法,避免过早的陷入细节或者争论当中
  • 分析想法时,根据最终的目标找到最有价值的Top N想法,根据2/8法则,找到20%最有价值的想法来尝试。在这里要结合过往经验、分析讨论、有效数据进行合理的抉择。

在确定优先级之后,时间分配上facebook遵循6-2-2法则:

  • 6 放在具体工作上,快速实现已经确定的想法
  • 2 放在系统架构和质量保证上,保持产品的稳定性和可持续性
  • 2 放在有风险、有争议,可能带来颠覆成果的事情上,以此来保持团队的创造力,也是对未来的投资和尝试

跨团队沟通

在实际项目中,跨团队沟通更主要为了保证以下几点:

  • 各方对于项目目标有共通的认识
  • 有效的协调各智能部门的资源,保证目标顺利完成
  • 保证各个团队对于目标的重要性有共同的认识
  • 保证各组之间的时间安排一致

告知所有可能关心的人

在进行了一切有效准备和计划之后,使用会议、邮件等形式告知所有相关人。

目的是为了让各方在项目目标上达成共识,获取有效的资源,并且为后续的讨论提供一个有效的基础。

设计产品

产品的计划要始终围绕着功能、时间、预算、质量来进行。

在实际执行时,一定要快速完成可用版本,避免耗时耗力的最终版本。在现在的市场背景下,要能够快速的推出产品,验证概念是否可行,市场是否接受,根据实际反馈或监测数据来决策继续或是终止。在初始版本的设计过程中,需要预留一定的弹性,通常是3-10倍。

在实际操作时,通常做法是:

  • 快速作出原型
  • 召集工程师、设计师、产品经理进行讨论,尽可能的收集意见进行分析和讨论
  • 讨论的过程要适可而止,有争议的想法通过动手尝试来进行验证
  • 讨论的目的除了征集想法,也能够有效的利用大家的经验,保证想法的可行性,并且没有明显的设计缺陷

对于产品设计原则,可以考虑以下几点:

  • 不要过度设计,避免耗费过多或者走错路线
  • 产品越简单越好,但不意味着简陋
  • 自己做出来但产品,自己必须是用户
  • 产品要确实有用
  • 不追求完美,而是通过快速但尝试、反馈、改进这样但循环迭代来趋近于完美
  • 保留最基本的质量底线

指定项目负责人

为每一个具体任务指定明确的责任人,他要负责:

  • 承担项目责任
  • 跟踪项目进展
  • 推动项目完成
  • 协调周边资源

定期碰头会

其内容主要是通报项目进展和所遇到的困难。

实际的讨论周期,要结合项目性质、紧急程度等多方情况来确定周期和时长。

重点是要及早的发现风险并帮助解决困难。

了解进度 汇总报告

作为项目经理,要定期的收集组内的重点项目进展,其目的主要有两个:

  • 及时发现风险,并协调资源解决困难
  • 总结和反思,为后续的行动作出有效的改进或指导

执行时,要注意以下几点:

  • 简洁易懂
  • 有数据支撑
  • 只涉及最重要的3-5个项目

发布产品 监测数据

产品发布的过程可以简单的理解为:发布前评估 - 发布并监测数据 - 反思总结

  • 发布前评估 可以通过多种形式进行,在发布前尽可能的降低项目发布风险
  • 发布并监测数据 发布时可以采用灰度发布来限制范围和影响,监测数据主要观察系统级的数据和发布后的用户面影响。数据的监控能力是要在产品设计阶段就要进行分析、设计和实现的。
  • 反思总结 使用3W1H方法对出现的问题、出现的结果等方面进行分析,作为日后行为的指导