在互联网时代,什么是第一生产力呢?毫无疑问,一定是研发人员。没有研发人员码代码,即使有产品经理提很多好的idea、设计出很好的设计稿、运维人员把机房网络服务器全搞定,那也没用。没有代码就等于没有操作系统,没有手机电脑平板等硬件设备,没有数据库消息队列等中间件,没有淘宝抖音支付宝美团滴滴等软件。
所以在互联网时代中,研发人员是最重要的人员,他是可以实现从0到1的创造一个产品,如果研发人员不给力,那么就会出现经常性加班、频繁出现事故、重复低效工作等情况。因此提高研发人员的生产效率,建设研发效能对于大型互联网公司来说非常重要,统计数据显示,亚马逊、阿里每年在研发的投入成本占整个公司成本预算15%。那么研发效能是什么呢?又如何建设?如何考量呢?
软件从开发到上线的流程大概是需求评审》开发〉提测》测试〉预发》发布〉运维,在整个过程中,研发人员从需求评审阶段就参与了整个过程,直到上线,重度参与的阶段包含开发代码、写单元测试用例、写自动化测试用例、打包、部署测试环境、测试、部署生产环境、上线,在这个过程中要使用到的工具包含需求管理工具、代码仓库工具、打包工具、部署工具、测试工具、上线工具,如果每个工具都是分散在不同的地方,由不同的团队开发实现,对于研发人员来说,需要去不同的平台找到这些工具,需要把这些工具都学会使用,需要在开发的过程中把这些工具都串联起来,精力很分散,导致于研发人员不能聚焦于业务开发。所以建设研发效能就是建设持续交付能力。
对于持续交付能力的建设,就是持续集成、持续交付、持续部署的思想。对于持续集成,就是当研发在本地开发了代码之后,不断的集成了主干分支中,让团队的人员都知道最新的修改内容;对于持续交付,就是代码合并到了主干分支后,不断的部署在测试环境,交付给测试或产品或内测用户进行验收测试;对于持续部署,就是不断的将修改内容部署到生产环境,让用户来不断的使用,验证产品可行性。
除了本身研发持续交付能力的建设之外,还要充分利用好云计算资源。在云计算中的服务化模式、自动化模式、弹性伸缩模式,这些全是基本功,程序要运行起来必须要靠服务器、数据库、操作系统、中间件,因此在使用云厂商提供的IAAS、PAAS、SAAS产品时,需要把开发细节抽象的更加细致,让云厂商负责更多底层能力建设,在使用云资源时,通过API调用自动化实现,避免人力投入,在线上运维时通过弹性伸缩能力来动态扩缩容。
对于研发效能的考量,我们可以从需求交付周期、持续发布能力、交付过程质量、交付质量。对于需求交付周期,则是看从产品提出需求后,多久上线,开发时长。对于持续发布能力,则是看单位时间了发布次数、从代码提交到上线花费的时间。对于交付过程质量,则是在代码提交后,有多个自动化测试、单元测试跑失败,有多少bug。对于交付质量,则是在产品上线后,单位时间内有多少问题,线上问题多少时间响应,多少时间解决。通过这四个方向的考量,我们可以来衡量研发人员的生产力,从而根据实际情况做调整。
在阿里甚至有2-1-1的说法,不是985、211的211噢,所谓211指的是在2周的交付周期内,有85%的需求可以完成,需要1周的开发周期,提交完代码之后1小时内完成发布。
现在已经进入到了互联网的下半场,市面上能有的想法都差不多被实现了,然而用户就这么多,流量就这么多,开源不行就只能节流了,通过研发效能能力的建设,将研发团队生产效率提高,降低整个企业的成本,这也是新的思路啊。现在你明白了为什么滴滴头条、阿里美团都在纷纷投入做研发效能了吧。
研发效能的建设宜早不宜迟,从早期开始尽可能的打好技术底子,培养好的研发团队合作规范,避免后期用户规模扩大时,再来弥补早期的技术债。现在赶紧行动起来吧~