敏捷思想中有一条原则指导我们进行过程改进:每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。由于很多不确定性因素会导致计划失效,比如项目成员增减、技术应用效果、用户需求的改变、竞争者对我们的影响等都会让我们作出不同的反应。敏捷不是基于预定义的工作方式,而是基于经验性(Empirical)的方式,对以上这些变化,敏捷团队通过不断的反省调整来保持团队的敏捷性。敏捷为我们提供了过程改进相关的工程实践、工作流程和工具。

1. 敏捷中的过程改进实践

与CMMI所提供的重量级解决方案不同,敏捷方法为我们提供了针对过程改进的很多简单但又实用的工程实践,这里列举4个作为参考:

(1)五个为什么

5个为什么也是敏捷领域比较推崇的一个过程改进实践,原理很简单但确实很有效。所谓为什么,也就是对一个问题点连续以5个“为什么”来自问,以追究其根本原因。当然,这里的数字5知识一种虚数,使用时不限定只做5次为什么的探讨,主要是必须找到根本原因为止。5个为什么的关键在于鼓励解决问题的人从结果着手,沿着因果关系链条,直至找出原有问题的根本原因(如下图)。

(2)学习矩阵

学习矩阵相对比较少用,但在有些场景下也是我们可以用来进行灵感触发的有效工具。如下图中,针对分布式协作下的团队开发,我们首先总结做得好的和做得不好的方面,再看看有没有新的想法,如果实在不行我们也可以看看找谁帮忙,这些过程性成果都可以通过类似的学习矩阵进行细化和明确。

(3)头脑风暴

头脑风暴(Brain Storming)是我们经常使用的一种触发灵感的活动,下面是需求和UI界面匹配问题团队成员之间一次简单的头脑风暴,通过讨论大家就工作流程做了一项改进:

开发人员:现在由于开发周期比较短,产品经理在没有完全梳理清楚产品需求的情况下就召开需求评审会议,导致后期开发过程中出现很多问题,返工的现象比较严重。

技术管理者:我们可以开展二次评审,也就是说在面向所有开发人员的正式需求评审之前,先可以找部分技术代表作第一次评审,通过第一次评审对需求存在的问题先修订之后再召集所有人开第二次评审

产品经理:那我这边在产品初稿出来之后会找前后端的技术负责人先碰下

项目经理:恩,下一个版本我们在流程上就引入二次评审

(4)亲和图法

亲和图(KJ法/Affinity Diagram),把大量收集到的事实、意见或构思等语言资料,按其相互亲和性(相近性)归纳整理这些资料,使问题明确起来,求得统一认识和协调工作,以利于问题解决的一种方法。下图就是亲和图的一种表现形式,通过对团队成员提出的想法从“继续保持”、“停止”’和“尝试”者三个类型进行归类。

2. 敏捷中的过程改进工具

敏捷的各种方法中存在一些工具可以用于帮忙我们实施过程改进:

(1)燃尽图和燃烧图

燃尽图(Burndown Chart)和燃烧图(Burnup Chart)来自于Scrum,用于作为专门的工具对Sprint执行过程进行监控。Burndown Chart(见下图a)关注于剩余功能,而Burnup Chart(见下图b)关注已完成功能。图中我们在Burnup Chart中添加了一条异常情况下的曲线(下图b中位于下方的曲线),可以看到这种异常很大程度上源于使用了Water-Scrum-Fall模式,在Sprint的前一半时间内,团队并没有产出任何可交付成果导致后半程发力不足。

(2)价值流图

价值流图来源于TPS,TPS 的核心思想是,工作流中有以下三种制造约束的浪费必须要消除掉。你不得不做的事情中,有没有哪些是无用的或多余的?这类事情就属于徒劳,就是你不得不做,却不创造价值的事情。有没有一些时候,你只是闲坐着不能开工,焦急地等待某人给你答复?这就是不均衡,工作总是一阵多一阵少。是不是还有些时候,你不得不加班加点,因为你被要求完成比你所能承受的大得多的工作量?这就是超负荷,被要求做到不合理或不可能的事情。价值流图的作用就是通过可视化的效果让我们能够发现这些问题,从而通过拉动式系统等方式解决这些问题以达到持续改进的目的。关于价值流图的详细讨论可以参考《精益之识别和消除研发过程中浪费的思路和模式》一文中的内容。

(3)累积流量图

管道理论的一大话题是我们需要测量并管理管道中的流量,而在看板方法中,累积流量图(Cumulative Flow Diagram,CFD)为我们提供了这方面支持。下图就是一张累计流图示例,可以看到测试所对应的条带在变宽,这就告诉我们测试可能正在成为整个工作流中的一项瓶颈。图中还可以添加一些额外的线,用来表示平均到达速度(Arrival Rate,每天新增的工作项的数目)和平均工作存量(Inventory,工作流中工作项的总数),并展示平均交付时间(Lead Time,每个工作项在系统中存在的时间)。

使用CFD 管理系统流量的关键在于寻找那些能够表明存在问题的特征。看板可以告诉你今天你的工作流中哪里存在不均衡,并且帮助你通过添加在制品上限的方法来管理每一天的工作流。而CFD 的作用则是让你能够看到“在一个时间段内,你的整个流程的表现如何”,这样你就可以采取措施来找出并修复那些长期的问题。

结合上述限制在制品上限的方法,就可以通过CFD实验在制品上限的值并管理系统流量。一个软件开发的过程一开始可能处于不稳定的状态,通过对开发、测试等各个环节设置不同的在制品上限值,并观察对应的平均交付时间,找到基于现有资源的最合适的在制品上限值组合,确保开发过程的稳定性。

如果对文章感兴趣,可以关注我的微信公众号:程序员向架构师转型。

我出版了《系统架构设计:程序员向架构师转型之路》、《向技术管理者转型:软件开发人员跨越行业、技术、管理的转型思维与实践》、《微服务设计原理与架构》、《微服务架构实战》等书籍,并翻译有《深入RabbitMQ》和《Spring5响应式编程实战》,欢迎交流。

敏捷中的过程改进实践和工具相关推荐

  1. 轻量级过程改进之综述

    轻量级过程改进(Light-weight process improvement,LPI)是一种针对中小型团队软件研发过程中普遍存在的重技术轻管理.研发管理缺乏规范.过程改进理念淡薄等现状和问题而整理 ...

  2. 软件企业过程改进开展之高层管理者支持 文/谷雨霖

    软件企业过程改进开展 --之高层管理者支持 摘  要 随着软件行业的发展,软件企业对软件开发的一致性.高效.低成本.高质量提出了更高要求.本文从软件企业开展过程改进的关键干系人-高层管理者角度出发,分 ...

  3. 过程改进的疑惑 - 习惯能改么?

    各位同志, 大家是否可以帮助这位同志分析分析一下这个问题的关键在哪里?如何解决? 我在后面也有一点评注.请留意. 老杨 ------- 培训心得一: 过程改进的疑惑 转眼来公司已经一年,很惭愧,作为专 ...

  4. ZT——你怎么过河? -在CMM实践中你是否愿意多走1公里-软件工程 CMM与过程改进

    from :http://bbs.csai.cn/BBSOldArticle/A2/E6AA141A-200C-4F29-A918-38E61BA9FBED.html 作 者 guwangjun 阅读 ...

  5. 漫话:敏捷Scrum研发技术与过程管理实践

    背景 作为一名从事6年研发工作的软件研发人员,带领团队采用敏捷研发技术完成了多个中型项目的开发.集成.测试等工作,具备了3年敏捷项目实战经验,体验到敏捷项目管理过程带来的好处,提升了研发团队的效能,增 ...

  6. 基于管理画像的数字化转型项目管理实践——中信银行过程改进团队负责人金璐

    中信银行软件开发中心过程改进团队负责人金璐女士受邀为2021第十届PMO大会演讲嘉宾,演讲议题为"基于管理画像的数字化转型项目管理实践".大会将于8月28-29日在北京举办,敬请关 ...

  7. 敏捷毒药-敏捷中有损组织整体的负面实践

    首先声明1:敏捷毒药不是说敏捷是毒药,而是指敏捷中有损组织整体的负面实践,或者说在敏捷旗帜下的负面实践.笔者认为敏捷整体上是很好的,当前研发开发不学习利用敏捷,那就是固步自封了. 声明2:本文做说的组 ...

  8. EPG 在 CMMI 中的缩写含义   EPG (Engineering Process Group) 在“能力成熟度模型集成”中,是“过程改进小组”的缩写.   是指决策层面的LEADER组成的委

    EPG (Engineering Process Group) 在"能力成熟度模型集成"中,是"过程改进小组"的缩写. 是指决策层面的LEADER组成的委员会, ...

  9. 过程改进建设中的常见奖励措施

    常见的有四类过程改进值得考虑的奖励措施 一.Process Champion 过程冠军 奖励在过程定义.知识整理并传播中突出贡献的人 过程冠军 承担某方面过程的定义起草.编写教材,提供培训和指导. 对 ...

最新文章

  1. CentOS7安装Composer
  2. 在ubuntu 16.04.5 LTS上使用Python 2.7生成带logo的二维码实战
  3. 刚刚,百度宣布王海峰升任CTO
  4. db2 10.5 64位 linux,db2 10.5 使用列式存储
  5. 学习.NET是因为热爱 or 兴趣 or 挣钱?
  6. 计算机图形学资源收集04
  7. 亚马逊云科技携海信集团打造全球服务实践案例标杆
  8. 先锋意识dota人生
  9. R语言ggplot2可视化条形图:通过双色渐变配色颜色主题可视化条形图
  10. [Linux]_ELVE_ssh登录远程阿里服务器
  11. python基础:面向对象的应用--搬家具。
  12. arm交叉编译ntpdate与服务器进行时间同步
  13. 计算机重启很慢,教您win7电脑关机很慢的解决方法
  14. 微信短视频加速,张小龙的步子不妨更大一些!
  15. 干货|6个牛逼的基于Vue.js的后台控制面板,接私活必备
  16. 《蹭课神器》Beta版使用说明
  17. java运行不了html,由于Java出现问题,无法在R中安装htmlunit
  18. android h 系统找不到指定路径,Hbuilder真机运行安卓机找不到设备及找到设备后提示手机未安装android_base.apk问题解决办法-Go语言中文社区...
  19. ESP8266_19MQTT协议接入ONENET平台_订阅主题
  20. 2022-09-19

热门文章

  1. 数字信号处理(DTFT与DFT、DFS的详细讲解以及FFT算法)
  2. 蓝桥杯Java——DFS深度优先搜索算法
  3. 计算机毕业设计-基于SSM的企业ERP报销系统-JavaWeb企业ERP报销系统
  4. 【管理】DevOps的思考
  5. 基础网络设施相关名词及大写字母缩写
  6. 强大新UI神器微信小程序源码多模板支持多种流量主模式
  7. 电脑系统更新后提示PIN码不可用,而且面部识别其他也进不去的情况
  8. Fibonacci数列取余10007
  9. 入股澳优,伊利得到了什么
  10. 络达开发-Wireshark消息过滤