这两天去参加了 Gradle Summit 2017。从事Android开发的都知道Gradle是Android官方推广的编译系统(Build System)。虽然在公司里我们是用BUCK,我完全没有必要参加,但今年的Gradle Summit第一次有一组关于Android方面的演讲,对于了解更多Android知识,认识Android界的大神是个再好不过的机会。
Gradle其实很早就作为编译系统被很多企业使用在后端系统编译上,而在Android上的使用其实也是Google基于Gradle的plugin接口做了“Android Plugin for Gradle”,这样就让Gradle也能编译Android Library(aar),否则就只能编译Java Library(jar)。只是Gradle Inc.会和Google合作,支持Android编译能高效的进行,保证Android Plugin正确运行,所以这次也来了很多在Google从事Android Plugin for Gradle和Android Studio的Gradle集成的工程师。而且因为这次会议参加的人相对Google I/O这种大会要小很多,也更容易能跟他们进行沟通交流。
对于演讲的内容,在YouTube上可以找到所有的视频。很多内容其实并没有那么有趣,毕竟即使对于科技公司来说,大多工程师从事的是产品上的开发工作,或者支持产品的系统架构。在编译上的维护其实需要参与的很少很少,也只有在项目达到的一定的规模遇到了特殊的瓶颈才需要去针对性的解决。而每个公司的应用方式,具体问题都有差异,所以没有办法给出统一的解决方案,只能分享一些自身经验和建议。就比如我要是有编译问题,我就直接在公司内部群里问了,虽然有时候我也想知道背后的原理,但是毕竟自己有其他任务也只能作罢。
这里我想特别聊聊Gradle Inc.这家公司奇特的工作方式。因为这是Gradle Inc.举办的会议,他们的工程师自然要过来帮助宣传和答疑,因此有很多机会跟他们交谈。
Gradle Inc.的总部算是在三番,但是他们的办公室不是给工程师提供的,那里坐的大多是市场和销售人员。Gradle虽然是开发项目,但是他们也有企业级的应用卖给其他公司。他们的工程师全部都是在远程工作(Work Remotely),每个工程师的自己的家就是他们的办公室。这些工程师遍布欧美各个国家,这次我碰到的有从匈牙利,法国,瑞士飞过来的,当然也有美国本土的。具他们说有一个工程师一直在边旅行边工作,之前是在日本,最近刚刚到了台湾。他们没有来自亚洲的工程师,因为时差实在太大,不易交流。他们的交流主要是email, Slack和Hangout,但是大多数情况下他们从事的项目都是比较独立的模块,只需要自己去研发。入职后,他们也不需要去总部报道,使用的电脑会通过邮寄送到他们家里,他们也可以选择去苹果店买一台电脑然后找公司报销。只有每年的Gradle Summit他们会聚集到一起,在会议结束后再参加公司内部的大会。
可以想象Gradle的工程师的能力都非常强也很有自制力,他们在编译上的做出的优化,对于各种公司开发效率的提升是极大的。即使每次编译节省一秒,乘以编译的次数再乘以参与的人数,最终每天可能就可以节约数十数百个小时。
反过来也可以说这公司并不太适合刚毕业的学生,因为没有人在公司带新人。而且远程工作多少会带来合作交流上的障碍,进而延缓了开发进度。可能这也是为什么BUCK的编译缓存(Build Cache)和远程缓存(Remote Cache)都做出来这么久了,Gradle才刚刚出编译缓存,而远程编译建立缓存库的功能还遥遥无期。
不过怎么说,Gradle Inc.这种自由的工作方式,都是让人觉得很酷的事。