摘要:在云效持续集成持续交付专场直播中,阿里云效产品专家代平为大家带来了《
硬盘式研发管理实践》分享,
深入浅出地分享了互联网的研发管理理念,解析了企业研发管理面临的挑战和困难,揭密了如何结合云效产品进行业务技术协同线上化的硬盘式研发管理实践。
以下内容根据演讲嘉宾视频以及PPT整理而成。
嘉宾介绍
代平:阿里产品专家。从事多年互联网系统的研发测试和项目管理。现在专注于研发协同管理产品设计。
本次分享主要和大家探讨研发综合产品管理效能平台应该如何实现,以及如何打通需求、开发、测试、发布这样的产品研发全过程,希望能够给大家带来收获。
本次分享的内容主要分为以下四个部分:
一、互联网研发管理背景
二、常见的研发提效策略及其问题
三、云效支撑的研发管理实践
四、实践最佳路径和效果
一、互联网研发管理背景
互联网研发特点
随着互联网的发展,不仅仅是互联网公司的研发,就连传统企业的研发模式也开始受到互联网的影响,各行各业都在向“互联网+”模式转型,这就导致互联网的研发有如下的这些特点:
1.变化:市场需求变化的速度非常快,导致研发需要快速适应市场需求的变化。
2.体验:给用户带来的体验要好,现在用户获取信息十分便捷,用户会有非常多的选择,所以产品在功能、安全或者体验上稍稍落后就会被用户摒弃。
3.速度:互联网市场竞争非常激烈,产品的研发速度关乎生死,也会影响最终成果。
互联网研发问题
由以上互联网研发特点,导致了在研发过程中会出现上图所示的常见问题。比如业务迭代速度非常快,直接导致项目的并行量非常大;因为业务发展速度快,所以应用的增长也非常迅速,导致无论是开发同学还是测试同学在搭建环境时的工作都会变得非常复杂;除此之外因为研发同学在研发过程中需要与各个角色进行一些协调,所以这带来的研发成本也会非常高;与此同时,测试的成本也在急剧增长,而且使用的人肉测试也会比较多,这样导致最终的结果是业务很难快速地交付到客户手中。
面对这些问题应该如何应对呢?天下武功唯快不破,提高效率也许就是互联网研发的关键。
二、常见的研发提效策略及其问题
通常情况下,工作时会使用一些通讯工具进行即时沟通,沟通的方式主要有三种:同步型:比如电话或者会议;异步型:如钉钉、微信等通讯工具;邮件:可以看做异步通信的方式,但一般用于发布通知。这些通讯工具的弊端在于整体沟通协作效率比较低下,同时还有两个更深层次的问题。
第一个问题是如果一个公司没有统一的任务处理机制,不同团队就可能采用不同的任务处理方式,那么会出现甲团队使用邮件作为沟通方式,乙团队采用开会的方式,丙团队协作靠刷脸进行,这样的效率就会非常低。这样的方式很容易让大家联想到乡村小路,乡村小路的特点就是不平、不直、不通并且不一致。 “要想富,先修路”,只有统一并且宽敞的信息高速公路才能加快研发任务的处理速度。
第二个问题就是工作内容没有沉淀。如果想要查看前面沉淀下来的经验,只能到处找人问。
如果整个研发过程的数据就如同在一个硬盘上一样全部存储下来,那么对于公司而言将会是巨大的财富,即使有同学离职了,新来的同学也可以通过沉淀下来的数据,参考查证以前的工作路径和工作记录。
所以不仅仅需要将原本不平、不直、不通并且不一致的沟通路径用信息高速公路取代,并且需要将公司的一些项目的数据资产包括过程、文档、结果以及代码,统一用于建造公司的类似于数据资产金字塔的硬盘中,将这些数据全部保存下来,这就是云效平台硬盘式研发管理的主体思路,也就是从各种路径独立转变到建立一条整体相通的信息大道,并将数据进行汇总进而做统一的展示、记录和存储的构想。
现在有不少公司意识到了这一点,并开始建立公司的研发信息高速公路。他们的做法往往是通过引入一些平台产品来建设自己的信息高速公路,并且通过这样的方式沉淀出自己公司的硬盘式金字塔,将数据存储下来。如下图所示。
三、云效支撑的研发管理实践
下图是云效平台整体的架构图,这就是云效的研发信息高速公路,它可以让研发同学以及包括产品、测试和运维同学将自己的日常工作放在这个平台上。需求、做项目、设计技术方案、编码、代码的审阅、测试、发布以及所有工作项的评论等全部记录在云效平台上。
因为云效平台的核心原则就是平台化、流程化和自动化,也就是说希望制定一套标准化的流程,例如持续部署流程、代码流程、代码管理流程等,之后将这些流程通过自动化的方式以及自动化的工具实现出来,这就是云效平台的基本原则。
有了这些原则之后就在平台之上建立了配置管理、持续集成、持续交付、环境自动化、分层自动化以及集成自动化这些相关的子系统。有了这些子系统之后就创建了一个可靠可重复的交付流水线。比如说在提交与编译阶段的并行研发、编译构建和单元测试,在测试与验证阶段的环境部署、系统测试和集成测试,以及在发布与运维阶段的生产交付、发布回滚和生产监控等都是可以通过云效平台的相关产品进行效率提升的。
在可靠可重复的交付流水线建设完成之后,云效团队又将之前所做的研发综合效能管理方面的东西,包括业务模型分层、业务规划、研发资源管理以及ROI复盘等,全部在云效平台上进行呈现。而将包括需求跟踪矩阵、迭代计划、任务分解流转以及度量与改进在内的这些,构建成了协同工作流,每一个人都可以在平台上评论所有的工作项并提出方案或者进行顶踩,这样就保证了开发的质量、效率以及评论和文档等所有相关的数据都存储在平台之上。
项目维度的互动和多角色之间的沟通协作全部都是在云效平台上进行,参与项目的人员使用相同的系统进行相互协作,这样对组织效率和业务也能够起到很好的促进作用。
除此之外,云效平台还支持私有云部署,对于Docker等开发框架以及最简单的J2EE工程项目等也能够提供良好的支持。
硬盘式研发管理的总体流程
上图所示的就是研发流程的示意,从上层的业务方进行业务规划开始,之后需要进行组织人员的安排,再到立项之后的需求确立。
对于需求的确立而言,需要通过需求跟踪矩阵将需求横向化、标准化。需求是可以分解和拆解的,也是可以配置的,需求的变更记录、评审记录包括对于需求的评论、顶踩全部会在这个平台上记录下来,在平台之上还可以实现责任人以及状态的流转和变更来记录需求到了什么样状态,这样就能够提升需求的质量,控制需求的范围,这是从横向上来看这条线。
而从纵向上来看,需求是和后面的整个项目串联起来的,因为需求确定之后就可以进行迭代拆分、评估工作项的资源以及进行任务分解、测试用例的设计实现以及与Bug相关的一些东西都是可以通过需求串接起来的,这样就保证了需求与后续工作的关系都可以透视出来,这样有利于对于整体风险的把控。在整个项目过程结束之后,可以将项目的全部代码发布到代码库中,然后通过云效平台指挥部这个产品对于整个项目进行复盘并评估出项目的投入和产出。
这里大家可能会产生一个疑问,看上去整个研发过程的工作都是记录在这个平台上面的,那么有没有一些研发相关工作是没有记录在云效平台上的呢?这个问题的回答是:没有!云效平台提倡硬盘式记录,如果工作没有在平台上记录,那就相当于没有工作的产出。可以设想一下:如果一名员工在公司做了很多年,既没有留下一行代码,也没有留下任何对于技术方案或者需求的变更、评审进行讨论的东西,对于公司而言这名员工给公司留下了什么呢?所以,站在公司的角度,希望每一位员工都能够积累下属于自己的工作记录,并且全部都记录在公司的平台之上,固化成公司的数字资产。
对于一些比较高级的技术专家可以在云效平台上做些什么呢?也许他们不用自己去写代码,但是可以在平台上Review一些技术方案并给出一些评论和指导,甚至还可以进行代码的审阅。这些能够非常好的帮助开发同学避免很多坑,节省大量时间。对于管理者而言,他们所需要做的事情就是促使团队在这个平台上产出有价值的东西并记录在硬盘上面,从而沉淀出整个公司的数字金字塔。管理者也可以看到自己团队所有成员的全部产出。
云效项目页面
下图所示的是项目概况页面,包含了项目的整体进度、概要、里程碑信息、风险信息、负责人以及项目成员、相关的子项目、及时滚动显示的项目动态、通知信息等。除此之外,项目中各角色所需要做的工作项等内容也是通过一些服务呈现的,比如需求页、任务页、迭代、测试用例缺陷、自动化、单测集成、环境搭建以及整个系统数据的报表还有发布等,这些内容都会以项目的维度进行展示。
云效需求页面
一个项目的管理者或者项目成员,在云效平台上可以看到与项目相关的所有内容。
以产品为例,可以看到整个需求跟踪矩阵的列表,这里提供了看板和数表这两种模式来显示项目需求的优先级、是否上线、迭代情况、创建者以及当前的负责人等状态信息,点击每个需求条目之后可以看到这条需求的详细情况,包括需求的具体内容、相关联的需求状态和相关的一些任务状态,还包含一些相关评论,鼓励大家分析需求,对需求进行评论或者顶踩,提出更好的方案。
除此之外,需求的详细内容页面还会显示需求各个版本的修订记录、变更记录、评审记录以及操作记录等信息,对于每一个工作项都有这样类似硬盘式的记录,包括这个需求所包含的任务、用例、缺陷、分支等工作项也会在详细信息中进行展示。上图页面中最右边展示的是需求属性以及附件,包含了优先级信息、迭代信息、所属项目、关联项目、模块信息、版本信息、进度信息以及经过技术同学评估之后计算出的大概的工作量,还有就是一些自定义的标签、发生变更之后需要通知的对象信息,以及与该需求相关的附件等。
这些就是需求页面的大致情况,因为这部分是项目的源头,包含的信息量非常大,所以需要以硬盘的形式全部存储下来。一言以蔽之,云效平台在横向上会将需求所有相关的信息全部记录下来;对于纵向而言,像任务拆分、用例、缺陷以及开发分支等所有项目相关的内容都可以在这里记录,以此串联起整个需求的过程,直到产品发布上线。
云效集成自动化
下图所展示的就是某一个项目的集成自动化的情况。云效平台擅长UI自动化、接口自动化以及单元测试,这些可以全部集成在一个平台上执行,而且历史的执行结果会全部展示在页面上,集成的通过率如何、有多少成功和失败、测试件在执行时候绑定的环境情况、项目中各个部分所执行的测试件情况等,这些项目相关的自动化情况也都会在页面上得到展示。这样大家对于硬盘数据的管理就会有一个直接的概念,项目中所有的信息都可以在一个统一的平台上呈现出来。
四、实践最佳路径和效果
对于云效平台而言,实践之路也不是一帆风顺的,在刚开始起步阶段也不是非常规范,从最初的简单的Bug系统再到项目和任务、再到讨论以及文档管理,都是一步步实现的。
实践并非一步到位
在实践过程中,我们也发现了与其他公司一样的问题。这些工具都是比较零散的,我们一边将这些系统进行集成,一边进行系统重构,让这些子系统的数据能够互通,这样才得以统一,形成了阿里巴巴统一的信息高速公路。只有这个信息高速公路建成之后才有可能构建出阿里研发资产的金字塔,将数据全部像硬盘一样存储下来。在实践的过程中有一个基本的原则就是统一高于好用。比如刚开始的时候,各个团队想要使用的工具往往会是不同的,如果不同团队沟通方式不同或者使用的工具不同,那么对于整个公司而言,效率就会比较低下。所以在云效平台的实践中,坚持的基本原则是统一高于好用,公司是需要一个统一的研发管理平台,而不是各种好用的工具的简单堆叠。
实践中遇到的挑战
云效平台在实践过程中遇到了很多挑战。引入一整套的研发管理工具平台,无论对于阿里巴巴自己还是客户而言,都会需要转变工作习惯,需要从线下的各种不同的方式引导到线上并且使用统一的方式,使得业务同学、研发同学都是按照这一套规范的路径完成工作。
总结下来有这样三个比较好的措施:
1.宣导:告诉大家为什么要做这件事情,引导大家进行思维的转变;
2.由易到难:从简单的事情出发,从易到难的推动这件事情;
3.专人负责:常见的负责组织就是PMO组织,也就是项目管理专员。如果有专人去负责、宣导、实施和复盘,并且从系统中拿到一些数据并发现问题或者可预见性的瓶颈,并进行汇报,再通过管理层的资源解决问题,如此就能够加速硬盘式研发管理实践的落地。
实践效果
硬盘式研发管理实践的最终效果:一方面是把员工脑海中的信息都数据化成为公司的研发资产,员工的工作也都会固化成为数据存储在公司的平台上;另一方面统一的研发效能平台就如同信息高速公路一样,因为其是透明的,所以可以营造出一种在意工作过程并且在意相互帮助的工作氛围,团队成员之间也会鼓励积极共享代码并且参与讨论。最终会使得研发的效率更高,并且带来高效的横向协同。