使用看板方法进行项目管理[第3部分] | David博客系列 | Agilean学院出品
这篇文章是David博客-项目管理系列的第三篇,由Agilean学院,郑美艳、颜秦进翻译,侯伯薇审校
这个是《使用看法方法进行项目管理》系列文章的第3篇,我们将讨论以概率预测助力项目计划。
2008年,看板方法第一次震惊了整个敏捷社区:它不必使用敏捷专家们大力推崇的一些实践,包括带有时限的迭代、优先级的概念,甚至可以不使用估算!问题来了,如何才能借助一种不使用估算的模型来做项目计划呢?答案是:使用历史数据或者具有预测能力的模型构建针对项目产出的概率预测。以下简要介绍一种简便而常用的模型,可用于对项目交付进度作出预测。
项目预测的统计学支柱
使用看板时,我们可使用两个关键的理念进行项目预测,一是看板系统所拉动工作的前置时间分布,二是源自排队论的利特尔法则(Little's Law)。
前置时间分布
图1 前置时间分布
图1展示了针对在看板系统中流动的工作项(通常指项目的功能或需求)的前置时间分布。使用类似图中的历史前置时间分布前,我们有必要理解几个假设,以确保选择了正确的数据。此外,还必须相信,将来观测到的表现与过去的相似。对于流动效率低下的工作环境来说,这一点尤其重要。这样的环境中,个体技能和所采用的技术实践对前置时间有重大影响,而需求的规模或者复杂度没有那么大的影响。因此,对于流动效率低下的环境,可以在更换人员、大幅改变需求捕获方式和变更技术工作实践的同时,保持观察到的前置时间分布不会受到重大影响。在流动效率较高的环境下,我们要注意保持个体的技能和经验与采集历史数据时的高度相似,保持工作实践与分析和需求开发方法高度相似。这就可以保证我们可以预期将来的前置时间分布会与现有的数据充分一致,从而使用历史数据进行可靠的预测。
其次,要作出准确的预测,需要单一模态的数据。要获得这样的数据用于前置时间分布,对于不同种类的工作或不同级别的风险,需要有各自的分布曲线。因此,对需求进行风险评估,根据风险类型对历史数据进行聚类和过滤,是作出准确预测的关键所在。
再次,要创建最适合自己的分布曲线,要知道应该从过去多久开始对前置时间直方图进行采样。这时候前置时间趋势图就派上用场了。我们可以观察趋势图中系统设计的变化,关注平均时间和数据点变差的分散程度。不连续的点通常反映了系统设计的变更(有望是改进),如果找到这样的点,只需采集到均值和变差分散程度发生改变的点即可。换句话说,我们需要一张能够反映当前状况且不混有早期数据点的数据直方图。还有一种找到这一时间点的方法,就是监控看板系统的流动性,寻找流动性水平发生较大变化的日期。这样的日期可作为制作直方图时数据采样的历史时间起点。
只要有了针对项目范围内各类风险(服务级别)或各类工作的直方图,并假设项目范围和需求由工作或者风险的类型表示(本系列文章的第二部分已有讨论),我们就能应用利特尔法则对项目进度作出预测。
图2 利特尔法则
利特尔法则应用于看板时,可表述为:离开看板系统(所有工作完成后被存档)的工作项的平均交付速度等于系统中看板的数量(即WIP限制)除以平均前置时间。因此,只要我们知道看板系统的WIP限制以及前置时间的均值,就能计算出已完成的工作交付所需时间。
建立进度预测
图3展示了在大、中型规模项目中常用的一种简单的三阶段模型。该模型在为期短至六周、长至数年的项目中已验证有效。模型中的参数是笔者所选,读者可更换成适合自己的,不过三个阶段应该足够。假定时间轴的前20%为第一阶段,流动效率相对较低。接下来的60%为第二阶段,流动效率高,一些敏捷专家称这种效率为“超生产力”。在时间轴上剩下的20%的时间里,流动效率降低。笔者2003年出版的《软件工程的敏捷管理(Agile Management for Software Engineering)》一书中首次阐述了该模型。虽然这里描述的概率预测方法早于看板方法,但在看板系统的使用过程中,前置时间的稳定性得以不断提升,从而提高了预测的精准度。
图3 三阶段项目进度预测
图3假设项目中的需求是同质需求。换句话说,这些需求属于相同类型,具有相同的风险级别。具体什么意思呢?如果多种需求都通过同样的方式(如用户故事)获取,则这些需求可视为同质需求如果一些需求依赖于供应商,而其他的没有,那么前置时间分布中会有多个模态的数据,因为供应商依赖将会导致某种延迟,从而影响交付时间。在这种情况下就不应对所有需求一视同仁,而要对需求是否具有供应商依赖进行区分。所以,我们要从有无供应商依赖的角度,对需求进行标记。如此一来,需求就不再同质,而是分为两种不同的类别,需要分别进行估算。
使用产能分配管理需求风险
我们会按照类型将需求划分为多个批次,并针对各个批次构建模拟仿真。例如,对于如本系列文章第二部分中所描述的调控性需求,我们将其与项目中非调控性需求分开预测。正如第二部分所讨论的,调控性需求一般具有固定的交付日期,并且项目交付日期通常具有法规效力。一批调控性需求需要在项目结束前交付,如此一来,我们可以在看板系统中引入产能分配,在整个项目的生命周期中以稳定的速度拉动调控性需求。
知道了调控性需求的规模、交付日期和当前的日期,我们就可以计算出需求平均交付速度。通过看板系统可以得出拉动调控性需求的前置时间分布。有了这些参数,就可以计算出调控性需求的在制品(WIP)限制数量。这将成为在整个看板系统中的产能分配。我们在可视化看板上设计一个泳道或者使用不同颜色的卡片用来标记调控性需求。至此,我们已卓有成效地建立了看板子系统,用以按照需要的节奏来拉动调试性需求。从现在开始,可以确保所有的调控性需求在交付项目的截止日期之前完成。
是否应该对法规变更(Regulatory Changes)需求进行排序?由第二部分讨论可知,这取决于某些这类需求是否仍可能发生变化——原因可能包括游说、管理者决策多变或者是政治领导层的变化。如果需求没有变化,则从业务风险角度来看,调控性需求是同质的,可以按自己喜欢的顺序进行拉动,而不需要对它们进行排序。如果部分调控性需求仍然有可能改变,则这些需求应该推迟到项目的后期。在项目开始和早期阶段,应该对需求进行排序,并且选择那些已知的比较稳定的调控性需求,而推迟不稳定的需求,直到所有不确定因素被消除。
总结
尽管使用历史数据构建前置时间直方图、绘制最合适的分布曲线、预测项目完成进度、建立WIP数量限制、构造产能分配并将分配策略付诸实践听起来都比较复杂,而且需要对统计学有基本的了解,但这样进行项目计划实际上却非常高效、简便。由于已对需求进行评估并就风险类别进行了标记,数小时之内便可建立项目预测模型。即便对于周期超过1年、成本超过1000万美元的重大项目,几个人花上不到一天的时间对必要的数据进行收集和分析,就能构建出可靠、高质的预测模型。
传统的决定性的计划方式中,需要对项目中的工作项逐一评估。相比之下,用本文所介绍的方式做出的概率预测,通常要准确得多(与实际结果更加接近),同时构建起来也快得多,成本也大幅减少。概率预测的一大好处是,不需要让专注于客户所关心的工作的员工停下来,对未来的(经常是带推断意味的)工作进行估算。打断工作是对资源的浪费。许多看板案例研究都显示,消除这种打扰之后,项目的交付速度、前置时间、可预测性和质量等方面都有大幅改观。
本文介绍了具有三个阶段的预测模型(所谓“Z型曲线”模型)。如果使用LeanKit或者Swift Kanban产品,还可借助蒙特卡罗模拟功能,对项目的结果做出更加靠谱的预测。预测效率更高、成本更低,结果通常也较传统的估算、计划方法准确得多。看板系统让预测能更广泛地用于项目风险管理,同时也让进度管理和产能分配相关的策略更加清晰,从而确保能较好地把控项目。
完整系列,敬请期待,请长按一下二维码,关注我们的微信公众号:互联网plus管理新范式。
第1部分:使用看板方法管理项目
第2部分:使用排序规则制订计划
第3部分:项目预测
第4部分:风险审查与阻碍集群
互联网plus管理新范式
Agilean官方博客平台
微信号
iPlusLeadership
点击
阅读原文
访问英文博客
使用看板方法进行项目管理[第3部分] | David博客系列 | Agilean学院出品相关推荐
- 看板方法不是方法论 | David博客系列 | Agilean学院出品
这篇David博客系列文章阐述了看板方法反模式之"Kanban是方法论",由Agilean学院刘永鹏翻译.张明评审,李淳审校 使用看板方法让我们的产品质量一团糟!因为我们不再做测试 ...
- 看板流程? | David博客系列 | Agilean学院出品
这篇David博客系列文章阐述了看板方法反模式之"遵循Kanban流程",由Agilean学院郑美艳,颜秦进翻译,李淳审校 我们在遵循看板流程...... 问题是:没有所谓的&qu ...
- 看板方法:寻找切入点 | Agilean学院 | David博客系列 | 刘永鹏 译,杨柳 校、李淳 审...
(本文由Agilean学院 刘永鹏 译,杨柳 校.李淳 审) 若公司计划大规模实施看板方法,就必然会遇到一个问题:切入点在哪?通常,公司会先在某个服务交付流程中做试点,但选择哪个服务交付流程呢?首先, ...
- 软件看板之父David Anderson:使用看板方法进行项目管理
摘要:本文是软件看板之父David Anderson 博客文章,项目管理系列集锦,包含四个方面的内容:使用看板方法管理项目.使用排序规则制订计划.项目预测.风险审查与阻碍集群. 一.使用看板方法管理项 ...
- html辅助方法以及常用属性值,ASP.NET MVC 2博客系列之一:强类型HTML辅助方法
这是我针对即将发布的ASP.NET MVC 2所撰写的贴子系列的第一篇,这个博客贴子将讨论 ASP.NET MVC 2中新加的强类型HTML辅助方法. 现有的HTML辅助方法 ASP.NET MVC ...
- 关于带参数模糊查询的方法 like --转载自 寂寞沙洲(博客园)
这些天对数据库参数化研究了几天,在博客园上查了许久,看到了 博主 寂寞沙洲有关于这篇的讲解,学到了.--仅作学习使用 今天想用参数化SQL语句进行模糊查找,一开始的使用方法不正确,摸索了好一会. 1. ...
- 网站推广策略-网站推广120种实用方法_打杂的_新浪博客
介绍实用有效的企业网站推广方法,网站推广计划,网站推广方案和网站推广案例等.<网站推广策略>用网络营销的系统性思想研究网站推广,将网站推广作为企业网络营销策略的组成部分. 网站推广120种 ...
- 好方法教你如何让你的博客变更值钱
中国现有两百多万人拥有博客,想让自己的博客被访问确实不是一件容易的事.看了上期的<如何让你的博客更值钱Ⅰ>,有人尝试了,收获了,开心了:"博客点击量噌噌地涨!"我们有更 ...
- AutoCAD2014打开一闪而过解决方法_七夕小子_新浪博客
打开:C:\ProgramData ,删除FLEXnet目录.如果不能删除,打开任务管理器,结束点影响的进程.
最新文章
- 引人遐想,用 Python 获取你想要的 “某个人” 摄像头照片
- 面试官:Java如何绑定线程到指定CPU上执行?
- SpringMVC获取请求参数-POJO类型参数
- map-reduce的八个流程
- php中qq授权登录,ThinkPHP利用QQ互联实现网站第三方登录(QQ登录)
- 【图像处理】——比特平面原理和实现方法(全网较全面,含所有比特位图的分层方法)
- uncode移动后端云【www.uncode.cn】--简介
- Angular2之路由学习笔记
- linux系统时间分区的设置方法分享
- 技术岗的职业规划_致程序员:30岁+的职业规划是什么?这些你必须知道!
- Java实现:归并排序
- 根据工资计算税费html,税后工资计算器2018 个人所得税excel计算公式
- 水晶易表Xcelsius 2008安装指南 支持WIN10 64位 + office2016
- dzzoffice 任意文件下载漏洞分析
- scala中match使用的坑Scala.matchError:(of class java.lang.String)
- fiddler抓包 - Android 虚拟机
- 服务器端解压rar文件多次失败问题解决
- pku 2251 Dungeon Master 基本BFS
- 如何还原MySQL备份文件.xb
- u8应用服务器跟数据库分离部署_u8 数据库分离