作为全球最大的社交网站,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。