低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

探索 Facebook 大胆创新之谜

2015 年 7 月 16 日

作为全球最大的社交网站,Facebook 却一直致力于各种看似与公司业务无直接关系的软件工具的开发。目前,仅 Facebook 设立的开源项目已经超过了200 个。其中,包括 React GraphQL ComponentKit HHVM 等在内的多个项目已经拥有独立的开源社区,改变了很多设计师思考和开发的方式。那么,究竟是什么原因使得 Facebook 设立并产生那么多新奇项目呢?React 和 GraphQL 等多个项目的参与人、Facebook 软件工程师 Lee Byron 表示,在之前的 React-Europe 会议上,很多参会者都问到了他类似的问题。由此,Byron 想到有必要进行统一的公开说明。近日,Byron 就分享了自己关于这个问题的看法。接下来,本文就对其解答进行简要介绍。

Byron 表示,React 和 ComponentKit 等最初都只是个别工程师自发开始的项目。在使用过程中,有些工程师认为已有的工具不够完美,于是就有了创建更加好用工具的想法。然而,作为个人的一些奇思妙想,很多项目在最初是与当时工程团队所认为的主流发展方向背道而驰的。以 React 为例,该项目目标为构建反应式图形界面的 JavaScript 库,在 2013 年正式开源。React 直接挑战了 Facebook 当时认定的其他 JavaScript 框架。因此,在开源之初,React 项目受到了 JavaScript 社区的嘲笑。很多人认为 React 库把视图和逻辑混了起来,而且与已有框架相比它的代码冗长。甚至内部开始运行的头几个月,Facebook 内部很多工程师也都不看好该项目。

然而,Facebook 公司却不这么认为。与平常项目相比,React 等项目风险更高,失败的概率也比较高。但是,Byron 透露,以他在 Facebook 的经历,该公司不仅仅是允许,甚至鼓励员工进行这样的实验。其实,Facebook 更看重的是 React、ComponentKit、HHVM、GraphQL、Immutable.js、Flow、Pop 或者 AsyncDisplayKit 等这样成功案例所带来的好处。作为全球最大的社交网站,Facebook 能够负担、也情愿负担这些实验的风险,从而获得更大的收益。

此外,这些项目都遭受到了来自内部的反对声音。出于多种因素考虑,有些人总是希望项目能够早日承认失败。但是,Facebook 良好的工程管理理念以及一批优秀的工程管理人员能够帮助屏蔽这些声音。无论外部环境如何,这些管理者能够坚持相信自己的工程师,让项目稳步推进。

另外一方面,无论是个别部门,还是绝大部分的 Facebook 员工都认同一个理念——创新和突破不能随着产品而停止。因此,React、ComponentKit、HHVM 等这样的项目才能在相关工程师的推动下一步步成长,渐渐拥有独立的社区,并改变很多人思考和开发软件的方式。

最后,对于 Facebook 公司而言,“开源”对其意义非凡。很多工程师都是因为对个别项目有兴趣,然后才申请加入 Facebook 的。甚至 Facebook 内部,员工也会根据兴趣或者项目需求,而进行跨组调动等。通过开源,Facebook 吸引一批优秀的人士加入项目。然后,项目做的越好,也越能吸引到更优秀的人士加入。通过如此反复,Facebook 的开源项目必然更加成功。

通过以上分析可以看出,Facebook 这些项目的设立不仅满足了工程师对工具的需求,也符合了公司发展的需求。这些大胆创新的背后是 Facebook 公司对技术迅速发展和完善的渴望。其实,Facebook 第一位华人工程师赵海平之前也分享了类似的想法。他认为 Facebook 能够快速发展包括了公司用于创新和尝试的 Hack 文化、避免相互依赖的去中心化研发思路、善于争辩的员工思维方式以及一批优秀的员工。正是这多方面、从上而下的公司氛围与文化成就了 Facebook。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015 年 7 月 16 日 08:474092
用户头像

发布了 268 篇内容, 共 101.8 次阅读, 收获喜欢 18 次。

关注

评论

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

架构师训练营 1 期第 5 周:技术选型(一) - 作业

灵霄

极客大学架构师训练营

食堂就餐卡系统UML设计

CJian

架构师

架构师训练营二期 1周总结

月下独酌

极客大学架构师训练营

第五周 技术选型 作业一

应鹏

极客大学架构师训练营 课程作业

5.3分布式缓存架构:一致性hash算法

张荣召

5.2分布式缓存架构:常见的缓存实现形式

张荣召

【架构师训练营第 1 期 05 周】 学习总结

Bear

极客大学架构师训练营

第一周作业-食堂就餐卡设计

hunk

极客大学架构师训练营

第五周作业

Geek_ac4080

week1作业

幸福小子

第1周作业-学习总结

jingx

AirPods过河,苹果拆桥:被“钞能力”征服的Beats何以至此?

脑极体

5.1分布式缓存架构:架构原理与注意事项

张荣召

第五周作业

fmouse

极客大学架构师训练营

hash一致性算法

橘子皮嚼着不脆

架构师训练营第 1 期 - 第 5 周 - 学习总结

wgl

极客大学架构师训练营

学习总结-week1

Mr_No爱学习

架构方法-学习总结笔记

Xuenqlve

架构师训练营第5周作业

TheSRE

极客大学架构师训练营

Week 5 作业01

Croesus

week1 学习总结

幸福小子

第五周总结

Geek_ac4080

【架构师训练营第 1 期 05 周】 作业

Bear

极客大学架构师训练营

第一周10/25

张冬冬

总结

架构师训练营第 5 周:技术选型(一)

子青

第五周 作业1

Yangjing

极客大学架构师训练营

第五周 作业二

Yangjing

极客大学架构师训练营

5.4消息队列:如何避免系统故障传递?

张荣召

架构师训练营第一周作业-周总结

张浩

食堂就餐卡系统设计-week1

Mr_No爱学习

Week_05 作业

golangboy

极客大学架构师训练营

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

探索Facebook大胆创新之谜-InfoQ