如何提升团队的研发效率?阿里工程师这么做

作者:媒体转发 时间:2018-10-10 21:38

字号
【新产品上线啦】51CTO播客,随时随地,碎片化学习

如何提升团队的研发效率?阿里工程师这么做

背景

大约在5年前,也就是2013年我刚加入阿里的时候,那个时候 DevOps 的风刚吹起来没多久,有家公司宣称能够一天发布几十上百次,这意味着相比传统软件公司几周一次的发布来说,他们响应商业需求的能力可以甩后者几条街,而且这差距根本不是加班能赶上的。今天的 AliExpress 技术团队小几百人的规模,可一天发布几十次也已经司空见惯了,这主要得益于三个方面:

非常彻底地微服务化,拆分粒度很细,且旗帜鲜明地反对重二方库。

阿里集团整体的运维标准化,尤其是 Docker 技术的全面覆盖。

AliExpress SRE 团队不断努力保证稳定性。

然而,效能这个东西,你永远不会说:“够了,够快了”,尤其是在当下的消费型社会,人人都是消费者,而消费者恨不得脑子里的欲望刚闪现出来,你的商品或服务瞬间就到他面前。况且,随着我们不断国际化的步伐,新的因素必然会影响原来的高效能。

沟通带宽衰减问题

第一个因素是研发团队自身的发展和变化,今天的 AliExpress 技术团队已经是一个名副其实的分布式国际化团队,工作地是杭州+深圳+莫斯科+马德里+其他欧亚都市,外籍同学的比例是 15%,而且能看到这个比例会不断提高,新的国外工作地点也会增加。而这样的团队,对比在同一层楼里的一群中国人组成的团队,是有本质的区别的。

我们可以将人与人之间的沟通和网络通信做类比,我们知道网络通信是有带宽的,从早期的拨号上网几十K,到现在的家庭宽带主流的几十上百M,再到数据中心内部局域网内部G级别的数量级,带宽越大,能传输的信息也就越多(通常浪费也就越多)。而人与人之间沟通也可以认为是有带宽的,例如充分信任的全由中国工程师组成小团队,平时相互一起吃饭散步聊天,大家彼此都特别了解,沟通起来就特别顺畅,想到一个点子转个朝向说两句对方就懂了。可对于一个分布式国际化团队来说,这个沟通带宽可是衰减得厉害:

中文到英文的转换,衰减一次。对于大多数人来说,英语不是母语,沟通的效率自然会降低。

单地到多地,衰减一次。电话,视频,钉钉,都没有面对面沟通来的高效。(否则大家都不会不约而同地刷脸了)

时差,再衰减一次。杭州和莫斯科的时差是5个小时,所以基本上北京时间上午我们是联系不上莫斯科的同学的。

文化的差异,再衰减一次。例如很多我们可以用来增强感情的团建方法,撸串K歌王者吃鸡,外籍同学可能完全不感冒。

那有人可能会说,既然沟通成本这么高,那直接在一个地方全部招中国工程师多简单?这么做简单是简单的了,可都这么搞的话,怎么在全球范围吸引优秀的人才呢?更何况 AliExpress 的用户基本都是老外,这后面的人才如果全是中国人,听起来这生意就不太靠谱对不?谷歌微软亚马逊,哪家不是在全世界搜罗顶尖人才?

所以说,既然沟通带宽的衰减是难以避免的,那我们唯有把对这带宽的利用率提上去。具体我们已经做了,或者在做一些事情:

尽可能和行业主流技术接轨,降低工程师学习成本。我们基于开源 Spring Boot 做的阿里巴巴生态集成,摒弃 antx, webx, pandora,都是这个思路。

English First:注释,文档,工具,英文必选,中文可选。

服务发现,让所有微服务可见,增强自描述,可搜索。

拥抱 Kotlin

关于开发效率,我个人认为所有 Java 程序员都应该认认真真、仔仔细细去看下 Kotlin,因为这门语言太简洁了,而且和 Java 可以无缝互操作,完全具备生产环境使用的条件。

如何提升团队的研发效率?阿里工程师这么做

有关简洁,我这两天把一块 Java 代码改成了 Koltin,在丝毫不降低可读性的情况下(实际上可读性是提高了),代码行妥妥地减少了 1/3 。

此外我忍不住分享一下最近我基于 Sergey 的 Kotlin HSF DSL 写的一个将函数发布成 HSF 服务的功能:

如何提升团队的研发效率?阿里工程师这么做

只需要不到 15 行代码,就可以启动一个 Spring Boot 应用,把一个字符串小写的功能发布成 HSF 服务,大家可以对比下 Java 需要写多少东西。语言层面的升级,给框架,中间件,API设计带来更多的可能性,这就能使我们砍掉更多的所谓脚手架代码,让业务代码更精简,更优雅,进而带来效率提升。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>团队 研发 效率
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接