为什么要在工具上投资?

来源:互联网 发布:魅族旗舰店淘宝 编辑:程序博客网 时间:2024/04/28 09:58

为什么要在工具上投资?
前几天在React-Europe会议上我分享了GraphQL,它是一个我在Facebook已经工作了三年多的项目。
这次谈话后,本次会议的多个与会者问我的Facebook如何能够始终如一地生产新技术,“重新思考当前的最佳实践”,这成功地改变我们构建软件作为一个行业的方式。
这是一个React的会议,让我们从这里开始…
图文:拉斯穆斯·安德森
当它2年前开源时,React曾被JavaScript的社区嘲笑,而且它出现在Facebook内部的最初几个月许多人(包括我自己)都认为这是一个坏主意。Jordan Walke在所有适当的方式上都是固执的,他的理想主义最终有了影响。我们以为他疯了,他的确是疯了,但他同时也是对的在一些东西上。React已经改变了我们在所有平台上创建软件的做事方式。亚当·恩斯特(Adam Ernst)借来这些想法,并为iOS创建了ComponentKit,它在第一次亮相时我们内部的iOS团队时都持怀疑态度。它也极大地改变了我们构建iOS软件的方式。
React和ComponentKit由单一的个体开始并没有被要求这样做。事实上,这些项目都开始于直接反对他们的工程团队在当时的惯性。React直接挑战了我们使用的其他的JavaScript框架。ComponentKit开始发展就像其他内部构建iOS的UI框架,已经准备好使用。其他工具没有什么不妥的,他们并不坏的(实际上很不错),但他们也并不完美。他们有不同的权衡,长处和短处。一名工程师认为有且只有他们被允许创建工具,对他们的工作更好的工具就可能存在 。
依据我在Facebook的经验,像这样的实验不仅是允许的,而且是被鼓励的。他们是有风险的,而且像这些想法往往并不令人兴奋和而是会失败。但有时候你会得到 React, ComponentKit, HHVM, GraphQL, Immutable.js, Flow, Pop, or AsyncDisplayKit. 风险是值得的。Facebook成长为一个庞大的工程组织的一个好处是,我们有能力让有才华的工程师来承担这样的风险,而不是严格遵守一个scrum的时间表或公司的顶线的短期目标。
我刚才提到的每一个项目,都面临着相当大的内部反对。总会有人(有时我)想要一个项目,较早承认失败。然而,他们仍在继续。Facebook拥有工程管理理念,以及知道相信自己的人是多么的重要的一些伟大的工程经理。尽管有来自值得信赖的同事的反对,尽管还没有理解其价值,尽管还有更加重要的事情去做,在Facebook的优秀管理者相信自己的人去冒险,花费他们自己的时间在他们认为会找到影响的事情上。
我的团队,产品的基础设施团队,和大多数的Facebook团队,有一个共同的理念,工程影响不会停止于公司的产品。项目列表都是开源的,它们中的每一个都有强大的社区,每个都已经对人们的思维方式和整个行业的软件开发有了一些显著的效果。开源不仅仅是一个慈善理想,它是我们如何学习和展示我们的工作渴望的影响的重要组成部分。
健康的开源对于招聘也是极其强大。我亲自采访了数十人,他们告诉我,他们在看到React,AsyncDisplayKit,Pop和其他他们想参与的项目之后,他们开始关注Facebook。这使聪明的人在并且良性循环仍在继续。
成功不是孤立的发现。随着项目变得令人兴奋的,潜力被别人看到,团队构成 - 点对点或以其他方式 - 和滚雪球效应有助于推动的项目。在Facebook,工作在主要工作职责外的项目并不少见,或者是在团队之间快速的移动,这允许发生这种滚雪球效应。这也意味着背后的这些项目有很多无名英雄。
对于GraphQL我想指出一些(但远不是全部)谁早早就产生了有意义的影响除了原始团队尼克·施罗克( Nick Schrock) , 丹尼尔·谢弗(Daniel Schafer )和我自己。
博哈茨霍恩(Beau Hartshorne )对于GraphQL是真正的催化剂。他发现并阐明了问题,找到了合适的人,并激励着我们寻求解决办法。有时很难摆脱一叶障目不见森林,但博(Beau)是一个难得的人,他是一直可以看到森林。
乔纳森·丹恩(Jonathan Dann)和 David Renie 两个iOS工程师是我们粗略的GraphQL的早期版本的支持者他们做了大量的工作将其整合到iOS的新闻订阅。他们还帮助建立了我们今天还在继续使用的一些重要的基础设施,它们为未来的博客文章提供订阅。
拉斯穆斯·安德森(Rasmus Andersson )第一个以全新的眼光来看我们的客户端软件开发工具包,他以不同的方式想象移动应用程序之间的数据流动。这成为我们的Andr​​oid SDK的基础,其中的一些观点给了Relay灵感,一个使用GraphQL构建Web的工具。
其他GraphQL队校友, 纳撒尼尔罗马(Nathaniel Roman )和查尔斯马( Charles Ma) ,是我们团队的早期成员,并帮助启动了后来成为GraphQL的客户端工具。
斯科特Wolchok(Scott Wolchok )独立组织和改进了GraphQL的iOS数据模型和之后跨所有平台的客户端工具。他的批判的眼光启发我们调查最近的横切的改进。
如今,越来越多的团队支持和投资GraphQL,服务器,客户端工具和Facebook的类型系统。
Facebook是能够始终如一地产生新的技术,“反思当前的最佳实践”,在行业内产生巨浪,因为我们专注于生产长期价值。我们承担风险。我们相信我们的人做他们认为是正确的事情,并且当事情可能潜力的时候,在整个团队的聪明的人走到了一起。
我们的工作不仅是建立Facebook,我们的工作就是让世界更加开放和连接的 - 而我们在产品的基础设施的任务是让整个软件产业的工具来帮助我们完成这个使命。

0 0
原创粉丝点击