敏捷开发,很大的成功,来自于将开发的过程简单化,同时让整个团队的工作变得透明。在团队工作透明化过程中,burndown report 起了很大的作用。 通过查看整个团队、某个Story或某个任务的Burndown,能很清晰的了解到工作的进展。Burndown report可以通过以下两种方式来生成

基于剩余工作时间的burndown

基于剩余Points的burndown 基于剩余时间的burndown,团队成员每天及时更新任务层面的花费时间和剩余时间,从而获得burndown table。下图是一个具体的范例。

通过汇总每天剩余工作时间的总和,我们可以得到一个线性的burndown报表

一般来说,对于刚开始尝试敏捷开发的团队,获得基于剩余时间的burndown会更容易些。因为很直观,团队成员只要每天及时更新花费时间,以及还有多少剩余时间,burndown就会自动生成。团队工作的透明度,很容易就看到成果。但是越来越多的实践发现,使用基于剩余时间的burndown,带来越来越多的问题。主要的问题来自以下2个方面:

剩余时间由团队成员每日自我预估并填写,常常出现一开始预估的剩余时间不够精确,随着Sprint进展,出现剩余时间不减反增的情况。 优秀的开发人员常常在最简单的工作上遗忘。基于剩余时间的burndown要求团队成员每日下班后,或在每日例会前及时更新剩余时间。但开发人员常常在这些工作上疏忽,假设一直到周五,开发人员才想起对名下的任务更新剩余时间;那么基于剩余时间的burndown,整个的数据就完全失真了。 以上两种情况,都会让敏捷团队的Master崩溃,因为burndown显示的剩余工作要么忽上忽下,要么几天都看不到团队的进展成果。承诺的工作,是否能在Sprint结束的时候完成,心中完全没底。

我们回过头,来看看基于Points的burndown。

基于Points的burndown,在Sprint计划会的时候,按照工作量大小,为每个任务设定一个Point值。团队成员无需每日更新任务的Point数,当完成并关闭任务的时候,剩余的Points数就自动下降。基于Points的burndown有以下几个好处

团队成员不用每天被提醒去及时更新剩余时间;一旦任务被完成关闭,基于Points的burndown燃尽图就会自动下降; Burndown的趋势总是一直向下的,不会出现忽上忽下的情况。不过在Sprint刚开始的几天里,burndown可能是保持平行的。因为所有的任务都刚刚开始,开始的几天时间里,并没有完成的Points

下面是一个团队在Sprint过程中,每天完成的Points 的表格和剩余Points的线性图

基于此,越来越多的敏捷团队尝试从基于剩余时间的burndown转变为基于Points的burndown。但是Points实际用起来,却没有那么容易,因为这里有个对任务工作量的预估过程。我们可以举个案例,同一个任务,团队里的高手认为1天能完成,团队里的新人认为需要5天来完成。但实际情况是,高手认定的1天,真的由他来完成,也不一定能保证精确的在1天内完成。那如何来定义每个任务的Points 呢?这种时候,通常有几种办法:独裁的,民主的,和理想的。

独裁的办法,就是由团队中的Master说了算,直接为任务定个Points,然后指定一个合适的负责人。 民主的办法,就是由组员进行投票。每个人根据自己的评估,来为任务投票设定Points。Master汇总,去掉最高分,去掉最低分,然后取下平均值。 理想的办法,参考团队当中平均工作能力,组员在理想的工作状态下,完成任务所需的工作量。 在刚开始实行基于Points产生burndown的几个月时间里,团队在Points的定义上可能还不是那么精准,你可以考虑在这段时间里,同时使用Points和剩余时间,从而让团队的工作也尽量透明化,保持好敏捷团队的自我管理。3个月,6个月,或1年后,你慢慢就会得到一组积累的数据,会了解到团队在过去几个Sprint周期中完成的Points数。你会大概知道你的团队在一个Sprint周期里,能完成多少的Points;这比机械考核每个人或团队的绩效,有意义的多。并且在Sprint计划会的时候,为每个任务定义的Points也会逐渐合理。

对于走向敏捷开发的团队,上述的过程,会经历一段时期。刚开始的时候,是否需要借助工具来管理这些过程,答案是不一定。可能刚开始,不用工具,反而能更好的上手敏捷的基本原则和思想。这就好比小朋友学打乒乓球,刚开始是否需要专业的球拍?可能让他用普通的球拍或者木板,反而能更好的感受乒乓球的运动。等到有了一定的基础后,需要在敏捷的过程管理上更进一步,这个时候你就需要专业的工具来帮你更好的进行管理和统计。好比优秀的运动员,需要专业的比赛装备才能有高超的发挥一样。

TechExcelDevSuite92系列,burndown燃尽图中,不但可以支持基于剩余时间,也可以基于剩余Points,甚至可以基于剩余尚未完成的任务来生成燃尽图。从而从多个维度来更好的展现团队工作透明化。

同时增加了Sprint组的Points完成量统计报表,直观的透明化团队的工作能力