在《跳出任务管理的泥沼,拥抱甘特图的怀抱》一文中,我谈到了使用甘特图来规划任务。甘特图更多的关注每一个任务的进度上。那么如果我希望了解项目整体的进度,应该如何选择呢?此时就需要引入另一个简单又强大的工具:燃尽图(Burn down chart)。
什么是燃尽图
假设项目X有5个任务,我们在预估这些任务的时候,时间安排如下:
项目名称 | 预计用时(小时) |
---|---|
任务1 | 5 |
任务2 | 6 |
任务3 | 7 |
任务4 | 4 |
任务5 | 3 |
这个任务预计需要25小时完成,考虑到可能需要处理各种突发事件留出机动时间,因此,我需要在7天内完成这个项目,项目时间定为:2018-12-01到2018-12-07。
在非常理想的情况下,平均分配工作时间,到2018-12-07这一个公作日结束时刚刚好完成任务。此时的时间消耗,绘制为折线图如下图所示。
纵坐标为任务剩余时间,横坐标为日期,
然而,在实际情况中,可能有些任务能提前完成,有些任务时间又需要延迟,实际上的剩余时间和日期的折线图可能如下图橙色曲线所示。
这就是燃尽图
。非常简单又非常直观。
从这一幅燃尽图中,我们可以看到:在2018-12-01到2018-12-05时,我们的开发进度是领先于计划的,看起来任务应该能够提前完成,橙色曲线斜率负得越多,越陡,表示实际开发进度领先得越多。然而从2018-12-03开始,开发速度下降,到2018-12-06时进度和预期时间重合。到2018-12-07,开发进度落后于预期,任务无法如期完成。
我们再来看几个例子:
- 按时完成任务:
- 提前完成任务
- 没有完成任务
- 前期落后进度,后期加速赶上
如何绘制燃尽图
燃尽图是敏捷开发中的一个概念,不少敏捷开发的相关的项目管理系统中都能够生成燃尽图。由于燃尽图非常简单,使用Excel自带的画图功能,稍稍费一些功夫也能够正常生成。
本着使用Python提高日常办公效率的考虑,我使用macOS自带的numbers表格工具 + Python来生成燃尽图。当然你也可以使用Excel来完成。其中表格用于记录任务的剩余时间,Python用于格式化任务时间并生成燃尽图。
表格的填写规范
其中表格如下图所示:
其中,表格的第一行是任务名称,第一列是日期。表格中间填写的数字,表示任务的剩余时间。表格的填写规则如下:
- 某一格留空,表示这一天没有做这个任务。
- 某一格为0,表示任务完成。
- 某一格为大于0的数字,表示任务剩余的时间。
- 不需要提前填写没有发生的日期。例如任务安排为2018-12-01到2018-12-07,今天是2018-12-06,那么不需要提前填写2018-12-07这一行。
- 请按照日期正序排序,不要打乱日期。
分析程序的使用说明
填写好表格以后,把它保存为excel的xlsx文件。假设路径为:/Users/kingname/Desktop/test.xlsx
(或者Windows系统保存在:D:\work\test.xlsx
)。
使用Anaconda中的Jupyter打开分析程序的ipynb文件,如下图所示:
只需要修改这三行数据中,单引号里面的内容,其余内容不需要修改。
修改完成以后,点击工具栏的Kernel-Restart & Run All
,如下图所示。
静静等待2秒钟,燃尽图将会出现在页面的最下方。如下图所示。
获取Excel模板和源代码
Excel与ipynb文件地址:https://github.com/kingname/Automatic/tree/master/burndown_chart
使用Jupyter打开ipynb文件可以看到分析程序。