首页 > 代码库 > 轻量级过程改进之综述
轻量级过程改进之综述
轻量级过程改进(Light-weight process improvement,LPI)是一种针对中小型团队软件研发过程中普遍存在的重技术轻管理、研发管理缺乏规范、过程改进理念淡薄等现状和问题而整理的一种“软件过程改进方法和规范”,有众多轻量级过程改进域组成,主要对中小型团队持续地改进其软件过程能力提供一些参考,内容组织上尽量保持其通用性,但个人水平和经验有限,很多改进域可能只局限于特定团队和场景,需要大家根据各自团队的现状做裁剪和扩充。
一.轻量级过程改进
轻量级过程改进参考了目前业界主流研发管理理念和模型,包括PACE、IPD、CMMI、SCRUM、XP、LEAN以及PMBOK中的内容,个人认为这些理念和模型都有其独到之处,但也各有其局限性,如PACE和IPD主要面向大型团队且需要与团队绩效等组织层面工作模式紧密结合,中小型团队通常不适合;CMMI模型只是回答了“达到XX级别的软件过程应该长什么样”这个问题,并没有说明“怎么做才能达到XX级别”,而且本身也是过于复杂,中小型团队实施过程需要精简和剪裁;SCRUM模型看似简单,但对团队要求太高,要想达到理想效果难度偏大;XP偏重于工程实践,在管理理论体系上不够完善;LEAN目前还处于理论体系研究和完善阶段,缺乏具体可操作的模式和工具;PMBOK则偏重于通用性的项目管理,而不是软件研发过程的管理。
初创型团队或亟需过程改进的团队通常不建议也无法照搬上述模型中的任何一个,而需要结合团队实际情况博采众长和集思广益,这也是LPI的思路。这里的轻量级的含义就是我们的做法是尽量简单以确保能够得到团队的认可并进行广泛推广,我们的目标也不是能够做到100分,而是一个从不及格到60分的过程,如果我们哪一天能够站在60分的角度去看问题了,那可能我们就会采用其他的模型来帮助我们做更高层次的过程改进。
二.改进域
轻量级过程改进不是一个完整模型,也不是一套解决方案,关注点在于“改进”,即从研发团队中存在的问题出发提出解决问题的方法论和实践模式,而问题来自于研发团队的方方面面,个人梳理这些问题并把它们整理成五个大类,分别是:
- 产品管理:涉及产品设计的战略、平台和规划管理,以及产品调研、需求分析等方面
- 项目管理:涉及从项目启动到项目验收的全过程,主要把握范围、计划和客户满意度等方面
- 研发管理:涉及从获取需求到服务交付的全过程,主要把握系统设计、开发、测试等方面
- 运营管理:涉及如何进行服务发布、市场推广、客户请求管理等方面
- 团队管理:涉及团队的组建、培训、协作以及过程资产建设等方面
上述五大类涵盖了一个研发团队中需要进行过程改进的主要工作领域,每个大类中我们再根据工作的性质和内容细分具体的改进域。本文中共计梳理20个改进域,具体包括:
产品管理 | 改进域描述 |
高效决策 | 对如何进行有效决策以促进团队对产品开发达成一致进行分析和改进 |
产品平台 | 对如何创建产品化平台以促进产品的稳定构建进行分析和改进 |
标准化管理 | 对如何通过产品标准化管理促进快速开发和项目实施进行分析和改进 |
需求开发 | 对如何针对具体产品需求进行需求分析和开发进行分析和改进 |
项目管理 | 改进域描述 |
项目启动 | 对如何从销售线过度到项目线从而有效启动项目进行分析和改进 |
项目计划 | 对如何创建、管理项目范围和时间进行分析和改进 |
需求管理 | 对如何进行需求调研、需求管理进行分析和改进 |
项目监控 | 对如何进行需求变更、问题跟踪和风险管理进行分析和改进 |
客户验收 | 对如何进行产品试运行和验收进行分析和改进 |
研发管理 | 改进域描述 |
系统集成 | 对如何在多人、多系统开发环境下进行高效集成进行分析和改进 |
技术评审 | 对如何使用技术评审进行研发过程和代码质量把控进行分析和改进 |
配置管理 | 对如何进行版本控制、基线管理等进行分析和改进 |
质量保证 | 对如何进行产品和过程质量保证进行分析和改进 |
量化管理 | 对如何进行研发过程的信息透明、开发度量进行分析和改进 |
运营管理 | 改进域描述 |
服务运营* | 对如何高效的收集、分析服务用户数据并促进产品优化进行分析和改进 |
客服管理* | 对如何高效的响应、统计和分析客户请求进行分析和改进 |
团队管理 | 改进域描述 |
跨职能团队 | 对如何创建、建设和管理研发团队进行分析和改进 |
团队培训 | 对如何开展团队培训提高团队整体战斗力进行分析和改进 |
过程资产建设 | 对如何建设团队的过程资产、管理团队知识进行分析和改进 |
团队协作 | 对如何开展和确保研发团队的高效协作进行分析和改进 |
*相对企业级应用,运营管理和客服管理更加偏重于面向互联网的产品管理
每一个改进域通过以下简单结构进行组织:
- 改进域主要概念和规程介绍
- 现状表述与问题分析
- 改进的切入点和思路
- 改进的模式和实践
伴随改进域的分析、展开和总结,可能会有文档及过程资产等需要梳理,在每个改进域中也会有相应的描述并提供简要的模板说明。
三.角色与职责
轻量级过程改进主要围绕研发团队展开工作,同时包括研发团队外围的部门和团队,本文中提到的每个改进域都是站在研发团队的角度上看问题,研发团队角色是其主要的参与角色,但可能也包括一些配合型的、非研发团队角色。研发团队主要角色和职责总结如下:
- 过程改进小组:根据团队的现状分析、计划和裁剪过程改进模型,并负责在团队中推广、实施具体的过程改进措施。过程改进小组类似CMMI中的SPEG,本文就是站在过程改进小组这一角色的立场上阐述如何进行轻量级过程改进。
- 项目经理:是项目管理过程改进域的主要负责人,团队中的项目经理、项目实施人员等构成了项目管理团队,这里抽象成项目经理这一统一角色。
- 产品经理:是产品管理过程改进域的主要负责人,团队中的产品经理、需求分析人员等构成了产品管理团队,这里抽象成产品经理这一统一角色。
- 运营经理:运营经理通常和产品经理紧密协作,可能隶属于产品管理团队,但也可以形成独立的运营管理团队,是运营管理管理改进域的主要负责人。有些组织可能把运营团队和研发团队区分成两个独立的团队,但工作模式大致类似。
- 开发人员:泛指团队中所有的技术人员,包括设计人员、编码人员等。
- 测试人员:泛指团队中进行测试工作的人员,这里把测试人员(QC)与质量保证人员(QA)做区分,现实中可能是一人同时担当两种角色。
- 质量保证人员:定期/不定期的开展“过程与产品质量检查”、跟踪质量问题,给出质量改进措施。
- 配置管理人员:通常可以由其他角色进行兼任,主要负责维护中央配置库,并进行配置项、基线等配置管理。
外围团队主要角色和职责总结如下:
- 客服团队:客服团队会与产品团队、质量保证团队有较多交互,面向终端用户,负责收集产品上来自用户的各种请求、问题和反馈
- 市场团队:市场团队主要会与研发团队中的运营管理团队进行交互共同进行产品的推广活动
- 销售团队:销售团队在项目初期与项目管理团队会有较多交互,并在涉及项目需求变更和最终验收过程中发挥作用
- 人力资源团队:人力资源团队主要在团队组建和培训方面会有一定的参与
四.小结
过程改进的目标是改进研发团队的整体绩效,过程改进是一项重要和长远的工作,一定要根据机构的实际情况(如发展战略、研发实力等)来梳理过程域和改进方案,并要充分考虑过程改进的成本和效益。轻量级过程改进的宗旨是针对没有专设过程改进部门的中小型研发团队,通过比较低的代价有效地改进过程能力,目标是能达到适合团队发展的过程能力。过程改进的推行者应当具备一定的软件工程和项目管理知识,再通读主流的软件开发管理模型和过程改进模型,并进行裁剪和扩充。本系列后续文章将对具体的改进域逐一展开讨论,很多内容见仁见智,不当之处欢迎一起交流。
轻量级过程改进之综述