纵观各类科技企业,由于自身所处环境不同,因此其软件研发管理模式也不尽相同,这其中有基于CMMI能力成熟度模型指导下构建的研发管理体系,也有基于IPD集成产品研发框架指导下构建的研发管理体系,当然也有一些目前不少中小企业、互联网企业推崇的敏捷研发管理体系。

01 基于CMMI的研发体系

CMMI能力成熟度模型相信大家都不陌生,从一级到五级,覆盖了22个过程域,一般能达到CMMI3级别的基本上可以理解为各类流程、过程规则等已经达到一个较好的水平。

当然,这里主要是指企业能够确实按照CMMI模型去实践,这种实践其实更适合于以瀑布式开发为主导的项目开发及产品研发模式。

虽然老谭所在的公司通过了CMMI5的级别,但是实际执行的过程中,我们并不会完全按照CMMI5进行,需要根据实际情况进行裁剪,相比于它对实际研发过程的指导作用,我感觉CMMI认证更多的为公司增加一种重要资质,以期在招投标中获得更好的加分。

对于互联网企业,特别是To C的互联网企业,CMMI认证的意义并不是特别大,因为在C端你无需依赖这些资质证明能力,而是以产品制胜。

02 基于IPD的研发体系

PD的核心内容是以市场为导向的产品开发,关注客户需求,将产品开发看成一项投资(商业价值),通过CBB—公共基础模块和跨部门的团队准确、快速、低成本、高质量地推出产品(各评审点的多团队参与和决策、通过各种技术改进提升产品开发效率和降低浪费、持续交付)。

去年开始负责研发时,我在公司更倾向采用IPD的模式构建研发体系,把技术团队和产品开发团队做了分离,也融合了近几年比较火的中台思想,其目的是将过去分散式的研发体系做适度的统一和整合,加强技术能力建设。

但经过这段时间的运行来看,其实也出现了水土不服的现象,其根本原因是因为IPD是一个相对重量级的体系,要落地执行往往需要从整个公司层面去整体考虑和推动,而不仅仅是研发团队内部的变革,需要高密度的跨部门协作,所以对于中小企业来说,IPD也并不一定适用,因为:

IPD需要对产品拆分为技术开发、平台开发和产品开发,一般中小公司没有这么复杂和巨大的产品;

IPD的流程繁琐复杂,虽然可以裁剪,但也很多,针对众多研发项目,需要方方面面考虑周到,对中小公司来说管理成本太高;IPD的关键要素,无论是跨部门团队、管道管理,还是优化投资组合等都是针对市场,一般中小公司的市场驱动较弱。

03 基于敏捷模式的研发体系

在这个快鱼吃慢鱼的互联网时代,对用户和环境越来越要求要快速响应。

敏捷研发是当前不少互联网企业、中小企业推行的研发管理体系,主要理念就是敏捷迭代、小步快跑,快速改进、拥抱变化,用户参与等等。

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。

首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发,而不是一次性完成项目的交付;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发或者可以理解为小步快跑的开发模式,一次只交付客户一部分的特性或功能,如下图:

传统的外部客户的项目如果更适合CMMI管理的话,那么对于产品研发,不论是互联网产品研发还是To B的软件产品研发,敏捷模式都是更加适合的。

敏捷的交付是持续的一个过程,软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长;敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。

老谭在负责一块互联网业务时,更多的是采用敏捷的开发模式,基本两周一个迭代的快速改进。

敏捷模式下,迭代的节奏是非常重要的,基于统一的节奏,产品、开发、测试、发布等不同岗位的人员就像建立了生物钟一样有规律的执行,团队间的协同能力得到极高的体现。

在这个研发体系里,敏捷团队负责人的主要工作除了执行例行的会议、任务分派以外,我认为最核心的就是对于sprint backlog的控制,既要照顾到需求方的关切,又不能轻易破坏节奏。

04 总结

这三种开发模式中,IPD的层级最高,既包括了“做正确的事”,又包括了“把事情做正确”,是公司级的运营级流程,CMMI和敏捷是同一个层级流程,是工程方面的实践级流程。CMMI和敏捷不具备高层决策能力,而一种“把事情做正确”的开发模式。

华为公司早在2009年正式发文在全公司现在流程IPD、CMMI的基础上,所有产品线的软件开发团队全面推行敏捷开发,可见这三个体系并不是孤立存在的,而是可以相融互补的。

由上图所示IPD关注整个产品的开发管理,包括市场、开发(软件、硬件)、结构、生产、采购、财务等各个方面,CMMI/Agile流程关注其中的软件研发过程的管理,CMMI是在研发过程中走瀑布模型,而敏捷是走版本迭代的模式。

所以如何建设自己的研发体系,并没有标准的答案,而要关注自己团队的发展阶段、规模大小、业务形态,根据上面三个体系的指导,建立一个适合自己发展研发体系。而且研发体系也不是一成不变的,也要根据业务的变化不断的迭代调整,以符合业务发展的需要。

By projectmaster1

Good Good Study,Day Day Up!!!