首页 > 产品 > 关键词 > 开发软件最新资讯 > 正文

Facebook开发软件:工程师驱动 逐布发布代码

2012-02-07 15:43 · 稿源:FrameThink

我对Facebook的运作方式一直着迷。这是一个很独特的环境,不容易复制(他们的体系并不适合所有的公司)。我和Facebook工作的许多朋友们交流过他们开发和发布软件的方式,下面是交流笔记。

似乎还有其他人对Facebook有兴趣……比如这里以及其他公司的相关讨论。 然而,Facebook对自己的内部流程讳莫如深。他们的工程团队经常发布笔记介绍各种新的功能和内部系统,但都是一些“是什么”类型的文章,对如何开发却不怎么讲。因此对于外部人员而言,了解Facebook是怎样远比其他公司高效地创新和优化其服务,并非易事。为了更多地了解Facebook的运作,我花费数月时间收集了下面这些笔记。为了尊重来源的隐私,我删去了所有人名和具体功能与产品的名字。另外又等过了6个多月才对外公开,所以它们肯定会有些已经过时。我希望发表这些笔记有助于大家了解Facebook是怎样致力于将决策下放而同时又不至于陷入混乱的。Facebook这样做的结果以及其产品是否成体系很难评判,我认为并希望许多面向消费者的互联网公司能从中有所裨益。

非常感谢那些帮助我整理这篇文章的Facebook的朋友们。同时也感谢提出指正的Reddit网友epriest 和 fryfrog 。

笔记

截止到2010年6月,Facebook有将近2000名员工,10个月前只有1100名,一年之间差不多翻了一番。

两个最大的部门是工程和运维,每个部门大概都是400~500人。这两个部门人数大约占了公司的一半。

产品经理与工程师的比例大约为1:7到1:10。

每个工程师入职时,都要接收4~6周的培训,通过修补bug和听高级开发工程师的课程来熟悉Facebook。约10%的受训者无法通过,并被请出公司。

培训结束后,每个工程师都可以接触线上的数据库(更大的权力意味着更大的责任,也有一份“勿做清单”,写明那些行为会导致被开除,比如分享用户的隐私数据)。

[根据网友fryfrog意见修改] 有非常牢靠的防范体系,以免内部人员做恶。如果应要求需要以其他人的身份做事,必须将原因记录,并接受严格审查,此外都是严厉禁止的。

每个工程师可以修改Facebook的任何代码,随时可以签入(check-in)。

浓厚的工程师驱动文化

“产品经理基本可以被忽略”,这是Facebook一名员工的原话。工程师可以修改流程的细节,重新安排工作任务,随时植入自己的想法。(作者原注:我就是产品经理,当然对这一点特别关注。其实从下文可以看出,Facebook的文化其实全面吸收了产品管理实践,他们不是忽视产品管理,而是创造了一种人人对产品负责的文化。)

在每月的跨部门会议上,由工程师来汇报工作进度,市场部和产品经理会出席会议,也可以做些简短的发言,但如果说得太多,很可能就会被打小报告。他们确实想让工程师来主导产品的开发,对自己的产品负责。

项目需要的资源都是绝对自愿的

产品经理游说工程师,让他们对自己的想法产生兴趣。

工程师们决定开发那些让他们感兴趣的特性。

工程师跟他们的经理说:“我下周想开发这5个新特性”。

经理通常会尊重工程师的选择,可能有时会让他优先完成一些特性。

工程师负责所有的特性——前端JavaScript/后端数据库代码以及之间所有部分。如果需要得到设计人员(公司内部设计团队很小)的帮助,需要先让设计人员对你的想法产生兴趣。架构师之类的也是一样。总体来说,工程师要完成所有的任务。

对于某个特性是否值得开发的争论,通常是这么解决的:花一个星期的时间完成,并在小部分人群中(如1%的内华达用户)进行测试。(刘江注:蒋长浩介绍,实际操作时通常会选择某些服务器上的用户进行测试。)

工程师总是希望解决基础设施、可扩展性以及其他难题,这能获得声望和尊敬。他们很难对前端项目或UI设计产生太大的兴趣。这与其他公司工程师喜欢做前端并向用户吹嘘“看,这是我做的”的情况,可能正好相反。在Facebook,后端任务,比如新的feed算法,广告投放算法,memcache优化等等,是工程师真正感兴趣的。

所有的代码修改必须经过审查(通过一个或多个工程师),但News Feed是个例外,因为太重要了,Zuckerberg会亲自审查所有改动。[根据网友epriest意见更正]

所有的修改至少要被一个人审核,而且系统可以让任何人很方便地审查其他人的代码,即使没有得到邀请。签入未经审查的代码将被视为恶意行为。[根据fryfrog]

工程师负责测试、代码修复和维护自己的项目。有一些单元测试和集成测试框架,但只是偶尔使用。

还是有QA环节的,只不过没有正式的QA部门。每个办公室或通过VPN连接的员工会使用下一版的Facebook,这个版本的Facebook会经常更新,通常比公开的早1~12小时。所有的员工被强烈建议提交bugs,而且通常会很快被修复。[根据fryfrog更改]

对于很奇怪只有很少的QA或自动测试的说法,Facebook员工这样回复:“大部分工程师都能写出基本没有bug的代码,只是在其他公司他们不需要这么做。如果有QA部门,他们只要把代码写完,扔给他们就行了。” [作者原注:这当然是主观之见,我加上这一条是为了与其他公司的标准实践做比较。]

[epriest对上一条的意见] 我们有自动测试,包括代码发布前必须要通过push-blocking测试。我们不相信“所有的工程师都能写出没有bug的代码”,更不可能将公司基于这样不靠谱的理念。

对于很奇怪缺少产品经理的影响和控制的回复:产品经理是很独立的和自由的。具有影响力的关键是与工程经理们搞好关系。需要大致了解技术,不要提一些愚蠢的想法。此外,确立路线图/backlog时,无需任何许可或者通过什么评审。产品经理相对比较少,但是他们都觉得自己负责的是公司确实重要而且自己也有兴趣的领域。

所有提交的代码每周二默认打包发布一次。

多费点力气的话,修改也可以在同一天发布。

星期二代码发布时,需要所有本周提交过代码的工程师在场。

代码打包前,工程师必须在一个特殊的IRC channel上候命,否则会被公开批评。

运维团队是逐渐发布代码上线的:

Facebook有大约60000台服务器

有9个代码发布级别([epriest]这些级别并不都是全局的,只有三个全局:p1=内部发布,p2=小规模外部发布,p3=完全外部发布。其他6个是辅助性的,包括内部工具、视频上传等)

最小的级别只有6台服务器

比如,星期二的代码发布会先发布到6台服务器上(级别1),运维组会观察这6台服务器,保证代码正常工作,然后再提交到下一级

如果发布出现了一些问题(如报错等等),那么就停止下一级的部署,提交出错代码的工程师负责修复问题,然后从头继续发布。

所以一次发布可能会经历几次重复:1-2-3-fix,回到1,1-2-3-4-5-fix,回到1,1-2-3-4-5-6-7-8-9

运维团队是受过严格训练,倍受尊敬,而且很懂业务的。他们的工作包括分析错误日志,负载和内存使用状态等等。还包括用户行为。比如,如果一个新的发布改变了用户使用某些Facebook特性的百分比,运维团队会从数据中看到,可能因此停止发布,进行调查。

代码发布期间,运维组使用基于IRC的呼叫系统,如果需要,可以通过Facebook/email/irc/im/sms找到每一个工程师。对运维组不做回应会被公开批评。

代码一旦发布到第9级,并且稳定运行,就算发布成功了。

每周发布时如果一个特性没有按时开发完成,也没什么大不了的(除非有严重的外部依赖),特性通常都是完成后再发布。

如果被svn指责、公开批评或项目经常延期,工程师就很可能被开除。“这是一个高绩效的文化”。不够高效或者不够聪明的员工会被剔除。经理们会在6个月的时间里观察你表现,如果不合格,只能说再见。每一级都是这个待遇,即使是C级别和VP级别,如果不是特别高效,也会被开除。

[epriest]代码中有bug不会开除。只在发布时要求加入自己的修改代码,却在出错时没有提供支持(而且也没有让别人替你),才会被开除。

[epriest]被责骂不会导致解雇。我们在这方面特别宽容。大部分高级工程师都或多或少犯过一些严重的错误,包括我。就我所知,没有人因此被解雇。

[fryfrog]我也没有遇到过因为上面提到过的犯错而被解雇。有些人犯了错,他们会非常努力地去修复,也让其他人得到了学习。在我看来,公开批评比用解雇来吓人更有效。

我非常感兴趣的是,Facebook的开发文化接下来会怎样演变,当公司发展到几千员工的时候,这种文化还能继续扩展吗?

你怎么看?开发人员驱动的文化在你们公司能推行吗?

(CSDN注:Hacker News、Slashdot和Reddit上的讨论也很有价值。)

  • 相关推荐
  • 大家在看
  • 猿辅导招聘JAVA工程师 技术能人还在等什么!

    假如现在你问我什么行业发展前景最好?那一定是互联网行业。如果你喜欢互联网热爱互联网并且是一位技术能人的话想必对猿辅导不陌生吧。猿辅导现急招服务器端研发工程师(JAVA),相信猿辅导可以给众多程序员一个满意的工作。猿辅导北京望京办公楼首先这份工作的主要内容是负责猿辅导主app相关产品服务器端的开发,而且作为一名有经验的研发工程师,你还需要指导新人进行开发。猿辅导的办公环境猿辅导的这个岗位,也有相应的要求,?

  • 前谷歌Pixel首席影像工程师加盟Adobe:担任副总裁 开发相机应用

    7月21日消息,据XDA报道,前谷歌Pixel首席影像工程师Marc Levoy加盟Adobe担任副总裁,开发手机相机应用。报道指出,今年5月份Marc Levoy从谷歌离职,这位大咖是谷歌Pixel的首席影像工程师,领

  • 特斯拉电台上线喜马拉雅 工程师将现身与车主互动

    日前,特斯拉电台独家上线喜马拉雅,首次尝试以音频的方式和车主及用户交流互动。特斯拉希望用声音为用户创造新的连接方式和互动舞台,打造科技生活新范式,更好地满足中国新生代互联网用户的需求。

  • OKEx早报:高盛招聘有以太坊经验的软件工程师,推特禁止加密货币地址分享功能

    OKEx早报将在每日早间为您带来最新的行情,以及相关行业动态。帮助投资人在最短的时间内了解夜间的动态消息,更好的握把每日行情。行情速递7月17日讯,昨天BTC收跌,跌幅0.89%,尾盘小幅拉升,2小时内从9070美元涨至9142美元。通过OKEx平台交易数据可以看出,今日早间延续震荡行情,BTC开盘报9124.1美元,随后便在9094美元和9152美元之间窄幅震荡。截止发稿,BTC暂报9131.11美元。图片来源:OKEx平台BTC/USD交易数据据OKEx交易大数

  • 高级工程师"每天在岗不足8小时"被腾讯辞退 反诉败诉引热议

    腾讯以每天在岗不足8小时为借口,开除了公司的一位高级工程师,而后者虽然两次上诉,但都被驳回,这引起了网友的热议。据悉,闫先生(闫先生2012年7月入职腾讯,为游戏平台部高级工程师)因不

  • 7nm芯片计划受挫导致股价暴跌 英特尔解雇总工程师

    7月28日消息,据国外媒体报道,在英特尔宣布其7纳米芯片计划落后于原计划六个月后,该公司解雇其总工程师默蒂·伦杜钦塔拉(Murthy Renduchintala)。上周四,英特尔表示,其7纳米芯片技术落后于原计划六个月,它可能会外包部分芯片制造,使用别家企业的晶圆代工厂。相比之下,AMD基于7nm架构的Ryzen 4000芯片已经上市数月时间了,远远领先于英特尔。英特尔的7nm芯片计划受挫,导致该公司股价暴跌。截至上周五收盘,该

  • 前谷歌工程师因窃取自动驾驶商业机密获刑18个月

    日前,一名美国法官判处前谷歌工程师安东尼·莱万多夫斯基 18 个月监禁,原因是在他成为Uber负责人的前几个月,从谷歌窃取了一项与自动驾驶汽车有关的商业机密。

  • 从2G到5G 中国的电信技术进步有多大?14年工龄的工程师道出内幕

    2G技术刚问世时,大哥大这种东西绝对是身份的象征,国内的电信设备及终端全靠进口,如今5G时代了,手机及设备中国公司都可以自研自产了,在这个时代变迁中,任职中国移动的工程师们感受最深。

  • 想当区块链工程师?蚂蚁区块链技术专家:最看重这一能力

    区块链正成为新职业风口。昨日,人力资源社会保障部、国家市场监督总局、国家统计局发布 9 个新职业,其中区块链独占 2 席,分别为区块链工程技术人员和区块链应用操作员

  • 亚马逊收购 Zoox 协议细节曝光:为抢工程师,人均砸140万美元!

    雷锋网按,继此前大手笔投资 Aurora 之后,电商巨头亚马逊再次将手伸向了自动驾驶行业。上月月底,它们花 13 亿美元收购了自动驾驶独角兽 Zoox。相对于 Zoox 此前 32 亿美元的估价来说,亚马逊这次算是“占了大便宜”。

  • 代码比车值钱!特斯拉靠“心狠手辣”一年软件收入达百亿

    美国当地时间 7 月 22 日,特斯拉发布 Q2 季度财报,整体营收为 60.4 亿美元,该季度共产生了 4.18 亿美元的自由现金流。同时,特斯拉连续四个季度盈利,如今股价已经达到年初的 370%,市值更是高达 2951 亿美元。

  • J2Paas低代码平台,助力打造SaaS软件应用新生态!

    对于企业客户来说,安全是需要,面对挑战,性能不可忽视,个性化需求与服务响应也是常悬头顶的达摩克利斯之剑,而SaaS化应用带来的技术进步、业务增长和快速创新的能力是有目共睹的,将为企业实现管理、拓展业务实现更大的助力!然而目前市场上大多数的企业平台,仍停留在传统部署模式和通用办公管理,等同于所有使用的行业企业信息、功能与业务流程和应用相互脱节,日渐陷入复杂管理和信息混杂的局势。那么企业该如何应对业务场景?

  • 高质量发软文的平台都有哪些?手把手帮你选择软文优化平台

    现在这个年代,就是互联网时代,不少的微商、电商、企业、都选择通过软文来推广自己的产品和企业。特别是一些初创业的小企业,都会想通过一些能够免费发软文的平台来推广自己的产品。

  • 健合可贝思实现品牌与渠道双轮驱动

    在目前国内的羊奶粉市场中,健合合生元可贝思羊奶粉可谓一枝独秀,力压群雄。据了解,健合合生元可贝思配方,就是基于法国百年乳企Isigny的研究成果,采用羊奶粉创新2.0科技,100%纯羊乳蛋白+SN-2 PLUS创新羊乳配方,更易消化与吸收。最新一次羊奶粉消费偏好调查公布的数据显示,由于各品牌认知度都不高,而亲友和熟人推荐,以及口碑传播的因素占到70%以上,这也说明羊奶粉最大的痛点就是消费者信任问题。这体现了羊奶粉大品牌的整

  • switch各类ban机错误代码解释 全部错误代码意思分享

    switch在使用的过程中会出现很多错误代码,一些小伙伴不清楚出现这些错误代码意味着什么,所以今天就来为大家分享一下switch各类ban机错误代码解释。

  • OPPO软件商店公布年中「至美奖」TOP10,进一步对开发者

    7 月 29 日,OPPO软件商店、OPPO开放平台微信公众号、ColorOS微博以及ColorOS社区同时公布了「至美奖」" 2020 年中最受欢迎的TOP10 至美应用"。 作为OPPO软件商店每周为用户推荐优质应用的内容栏目,应用的质量一直是至美奖的唯一评选标准,备受用户关注和喜爱。此次年中大赏自 2020 年 7 月 13 日至 23 日进行评选,最终根据用户投票(70%) 和专业评审投票(30%),评选出" 2020 年中最受欢迎的TOP10 至美应用"。 「至美奖」为B 端?

  • 智慧交通落地的“技术范式”:科技驱动出行效率变革

    “我们无法在研究的一开始就界定价值,而是必须在研究的进程中发现价值。”CUNY教授、剑桥大学博士大卫·哈维(David Harvey)在《资本的限度》中提到。诚如斯言,技术的应用价值也是在不断动态变化的,只有在其逐渐商业化的过程中研究和发现其潜在价值。比如大数据、AI、人脸识别等数字化技术,在不断商业化的进程中,不断拓展其价值空间。今年7月1日,全球首例“戴口罩人脸识别”系统在哈尔滨落地,哈尔滨市民进出地铁无需摘戴口

  • 因代码抄袭争议 iOS两大越狱团队“打起来”了

    iOS越狱本身的热度就在降低,万万没想到的是,越狱圈子内部也互相干起仗来。本周,出于保护目的,GitHub基于Unc0ver的DMCA(数字千年版权法)审查要求,移除了Chimera13越狱代码存储。Chime

  • 蓝光地产发动人才驱动引擎,稳固企业长远发展

    作为人员流动性较大的行业,地产人员流失一直是各大房企都面临的一个发展难题。但蓝光地产通过建立了人才驱动策略,不仅解决了自身的人员紧缺问题,也让蓝光地产培养出了一批优秀的发展人才。总结自身的人才培养历程,蓝光地产的经验主要是稳扎稳打四个字。在建立自身的人才培养策略前,蓝光地产对当前地产界人员频频跳槽的原因进行了总结,针对存在的收入低、发展空间小、平台不佳、管理混乱以及频繁加班的几大主要原因,对自身的

  • 科技、服务双轮驱动 轻松保严选平台价值持续提升

    转眼 2020 年已过半,中国保险业既面临着巨大的挑战,又敏锐意识到转型升级的良好契机已经到来。产销分离的大趋势之下,专业的互联网保险经纪平台在疫情期间显示了强大的生命力,成为了保险行业实现飞跃的关键角色。轻松筹旗下的轻松保严选,抓住了疫情后国民保险意识增强的机会,为用户提供优质健康险产品。以硬核科技实力提升服务效率和水平,同时借助自身流量实现与保司携手反向定制健康险产品,得到了行业伙伴和市场用户的广泛

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议
  • 热门标签

热文

  • 3 天
  • 7天