当前位置: 首页 > 编程日记 > 正文

敏捷开发日常跟进系列之二:燃尽图(中)

这是敏捷开发日常跟进系列的第二篇(栏目目录)。

迭代及燃尽图的目标

燃尽图的目标是完成迭代的目标,迭代的目标是什么呢?

1. 按产品经理的要求,交付计划会中计划的用户故事

2. 尽量完成1

之后还会看到,这个定义还有狭隘之处,在系列后面的文章中会提到。

为什么燃尽图不能直接地达成这个目标?潜在的问题包括:

1. 如果燃尽图按时完成,有可能是为了按时完成,同时牺牲了所有故事(重要和不重要的)的质量,换取了进度。

2. 如果燃尽图未按时完成,有可能不是一个故事没有完成,而是所有故事都剩下点活没做完,导致所有故事都无法交付。

3. 如果燃尽图未按时完成,没有完成的故事中,有可能包括了极其重要的一些。

只从燃尽图的形态看,是无法提前识别这三者的,也就因此带来了很多的风险,到迭代的末尾让人大吃一惊。

怎么办呢?

“阶梯燃尽图”

之前听过这个方法,但是刚才在网络上没有找到图片。

方法就是在每个故事完成的时候才把整个故事突然剪掉,从而形成阶梯状。

阶梯状燃烧图的缺点也很明显:刚开始的时候很难看到有燃尽,甚至那些向上拱起的弧形也被掩盖了,日后回顾时,一些细节也很难记起来。

所以一种解决方案,是把普通燃尽图和阶梯燃尽图混合使用,就是同时画两条线。

“跟进图”

跟进图是一些大型团队的创造,由于团队巨大,所以不能指望在迭代的最后用2小时评审完所有工作,所以常常是做完一个评审一个,这就要给每个工作分配一个“跟进人”,他隶属产品部门,没事就盯着“跟进图”看看有没有自己关心的工作做完了。

在为一家游戏公司提供咨询的时候,他们一款产品的团队人数高达88人(另一个甚至到了200人),墙上就用手绘制了一幅巨大的跟进图,每天更新动态,甚至直接在纸上画上小图标,每月画满了,就重新打印一张。

下面这张,是火星人中的跟进图。

图中绿色粗线,就是传统的燃尽图;

每当一个故事完成,就会有一个蓝色的标记及完成故事的名字,从而提醒跟进人进行现场预评审;如果长期没有故事完成,燃烧图却还在燃烧,就肯定出现了之前说过的问题了。

右下部分还有一个暗红色的细线,是“溢出时间”,就是超出预期的工作的时间,表明这段时间出现了新的任务;新任务出现的太早不好,因为一般在迭代前期都先完成最重要的故事,不应该引入新任务;但在后期随着最重要的故事完成、评审、因不满意而返工,团队会倾向于把最重要的任务更好地完成,而非草草地把所有故事都凑合完成,在产品研发中,这往往是更能提升产品价值的。

一家叫做广联达的公司在实践中把溢出时间作为负数倒着画,称为“基线下沉”,就是说要去的地方不是0了,而是那个负数,是一个类似目的的很好的实践。

我试了一下也不错,就是图表会变高,显示起来不方便,所以还是改了回来。

这样的跟进图看起来已经很强大了,但是还有一些问题没有解决:

1. 有哪些故事正在做,还没有做,已经开工了但没完成……?

2. 最后剩下了哪些故事没完成?

3. 有没有人不是一个一个完成故事,而是同时开工了很多故事?(这个是最后很多故事都开工了但都差一点完成不了的主要原因)

4. 如果有跟进人,谁负责跟进哪个?

有些问题需要后面的故事板(看板)解决,有些则需要一个叫做“跟进表”的东西,之后我们说完故事板再回来详细说明。

转载于:https://www.cnblogs.com/wodeyitian/archive/2012/02/29/2459886.html

相关文章:

[python][jupyter notebook]之菜鸟安装[pyecharts]中Geo或Map显示问题

作为菜鸟,在学习使用pyecharts模块进入jupyter notebook的时候,又遇到了问题——那就是,可以使用一下代码,导入Geo和Map模块,但是弄了之后看不见地图。 from pyecharts import Geo from pyecharts import Map 所以&…

c语言多线程mysql_多线程读写mysql数据库

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼unsigned int __stdcall scan(PVOID pM){char ip[20];strcpy(ip, (char*)pM);MYSQL mysql;MYSQL_RES* result;//初始化mysql句柄mysql_init(&mysql);//连接mysql数据库if(!mysql_real_connect(&mysql,"localhost"…

[C#,Java,PHP] - IMAP文件夹名称编码和解码方法

[C#] 来源:http://www.oschina.net/code/snippet_110991_2237 // 编码private string IMAPEncode(string folder){string rtn "", base64;int index 0; Regex regAsis new Regex("\G(?:[\x20-\x25\x27-\x7e])"); Regex reg26 new Rege…

fzu 2150 Fire Game 【身手BFS】

称号:fzu 2150 Fire Game :给出一个m*n的图,‘#’表示草坪,‘ . ’表示空地,然后能够选择在随意的两个草坪格子点火。火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部的草坪花费时间最小&#xf…

K-Means聚类算法原理

来自:https://www.cnblogs.com/pinard/p/6164214.html K-Means算法是无监督聚类算法,它有很多变体。包括初始化优化K-Means,距离计算优化elkan K-Means算法和大样本优化Mini Batch K-Means算法。 1. K-Means原理 K-Means算法思想:…

safari java插件故障_safari flash插件故障怎么办 mac safari flash插件故障解决方法

近几日,许多网友都在关注safari flash插件故障怎么办 mac safari flash插件故障解决方法这个话题,那么safari flash插件故障怎么办 mac safari flash插件故障解决方法具体情况是怎么样的呢?safari flash插件故障怎么办 mac safari flash插件故…

Traveller项目介绍

Traveller,翻译为旅行家,是我用来实践最佳web技术的项目,主题是一个给旅行爱好者提供旅行信息的网站。 目标是组合现最流行的web技术,实现符合中国用户使用习惯的网站。 相关网址 Git:https://github.com/mingziday/Tr…

窗口之间传递消息的一个方法

发送窗口的代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Wi…

docker制作镜像篇(基于容器)

docker制作镜像可以有两种方式:一、基于容器(使用busybox制作http镜像)1.首先运行一个容器2.在容器当中配置自己的http,添加web目录,增加主页文件等。3.查看原busybox运行容器时的默认启动程序(原运行命令为…

java+js上传图片_java+ jsp+js 实现富文本编辑和上传图片功能

class FileManageActionController extends BaseAction{// windowsprivate String PATH_LINEs "\\";// linuxprivate String PATH_LINE "/";/*** 文件上传* param request {link HttpServletRequest}* param response {link HttpServletResponse}* retur…

Outlook接收qq的邮件

1.先去qq邮箱,设置,账户 开启pop3服务,假如之前开启过,最好关闭之后重新开启 最新版本的必须使用邮箱的独立密码才可以收取邮件 (否则就算你之前开通了,也无法用你的qq账号和密码收取邮件的) 2.高级设置里面&#xff0…

架构设计复杂度的6个来源

谈到架构设计,相信每个技术人员都耳熟能详。我总结了三个架构设计相关的特性: 架构设计的思维和程序设计的思维差异很大。架构设计没有体系化的培训和训练机制。程序员对架构设计的理解存在很多误区。 所以,虽然每个程序员心中都有一个成为架…

java swt 画按钮_向表中添加按钮(java swt)

我正在尝试复制类似于此的UI:我一直在关注如何创建表格每列中的按钮的作者说明(没有成功).我的项目与他的区别在于我正在尝试使用Tree而不是Table,而我正在使用eclipse TreeViewer插件进行上下文.从理论上讲,实现似乎应该是直截了当的,但我似乎无法让它发挥作用.这是…

在Windows7 下 mingw32 开发环境中采用 glut3.7 学习 OpenGL

2015年10月2日更新: 发现 freeglut 很好用兼容于 gut ,而且开源还在更新中。因此我觉得放弃以前的 glut 了,转而用 freeglut 了。 买了本《计算机图形学第4版》想学习下图形学,但是书中的例子还是基于上古时期的 glut &#xff0c…

Spring Aop的应用

2019独角兽企业重金招聘Python工程师标准>>> AOP的基本概念 连接点( Jointpoint) : 表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化、方法执行、 方法调用、字段调用或处理异常等等, Spring…

Apache Tomcat 7.x 概述

前言 Tomcat 一直是Java web程序的首选应用服务器,现在已经更新到7.x版本了。如果你还使用老版本,那么你赶快更新到最新版本吧,他改善了不性能,修复了很多BUG。下面我从官网,简单翻译了一下7.x的特性,给你一…

linux mysql清除数据库所有表_MySQL修复指定数据库下的所有表

mysql,mariadb,percona这几天数据库频繁crash,查看日志发现类似如下的错误:[ERROR] mysqld: Table ./database/pre_forum_forumfield is marked as crashed and should be repaired1[ERROR]mysqld:Table./database/pre_forum_forumfieldismarkedascrashedandshouldb…

Java基础知识强化之IO流笔记03:throws的方式处理异常

1. 什么时候使用throws ? (1)定义功能方法时候,需要把出现的问题暴露出来,让调用者去处理。那么就通过throws在方法上标识。 (2)有时候,我们是可以对异常进行处理的,但是又有些时候…

silverlight学习之storyboard (动画)

利用silverlight的storyboard可以很方便的制作一些简单的“动画”,比如控制一些控件double类型或者color类型的属性值的变化。下面简单地说其中最简单的两个方面:DoubleAnimation(控制控件double类型的属性)和ColorAnimation&…

记一次Sonar执行失败的修复

为什么80%的码农都做不了架构师?>>> 前提 在提高代码质量方面公司采用的是JenkinsSonar的方案,通过设定扫描规则对现有代码工程进行扫描。代码扫描后会产生不同级别的问题,例如Bugs、漏洞、坏味道等。针对每个工程的发布是用…

java用if语句调用方法_J2SE中main函数中的if语句想要调用另一个类的方法怎么能实现?...

日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现。在C程序的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用。一个程序…

Creating Apps With Material Design —— Defining Custom Animations

转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出。谢谢定义动画在材料设计动画让用户与您的应用程序进行交互时,为他们的行为提供反馈。并提供可视化的连续性。该材料的主题提供了一些默…

怎么剪切一段音乐其中的片段

剪切音乐想必大家都不陌生,在各种手机铃声中我们都需要用到它来制作个性有趣的来电铃声,那么大家知道有什么简便的方法使用吗?小编有一个办法就是利用剪切工具的功能就可以完成了,我们就不用不用一点一点的设置音频片段了&#xf…

无需重启, 使用Xephyr调试awesome

每次改了awesome总是心里忐忑的重新启动awesome 稍有不慎就会导致awesome加载失败 而使用默认配置加载. 对于改了一大堆快捷键绑定的人来说, 默认配置简直没法用了... 有时候还会直接起不来...需要用到killall awesome才能退回到lightdm的登录界面偶然发现xephyr这个工具 可以虚…

java程序员遇到的问题_Java 程序员平时最常遇到的故障:系统OOM (一)

作为 Java 程序员而言,先不考虑自己系统外部依赖的缓存、消息队列、数据库等等东西挂掉,就我们自己系统本身而言,最常见的挂掉的原因是什么?其实就是系统OOM,也就是所谓的内存溢出!什么是内存溢出&#xff…

java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer。 MappedByteBuffer是java nio引入的文件内存映射方案&#xf…

HTML5 Canvas编写五彩连珠(3):设计

在看了几篇Canvas相关的文章后,发现前两节的代码实现还是有问题,因为知道的少,所以只能在自己已知的知识上做实现。不过还好,这是一个发现的过程,也是一个纠错和完善的过程。我第一次尝试一边学习一遍写博客&#xff0…

SQL面试宝典一:

1.什么是sql Injection(sql 注入)?如何防止? 答:是一种恶意将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法。 防止:1.对用户的输入进行校验,可以通过正则表达…

java注解的执行顺序_深入理解Spring的@Order注解和Ordered接口

前言Spring的Order注解或者Ordered接口大家都知道是控制顺序的,那么它们到底是控制什么顺序的?是控制Bean的注入顺序,还是Bean的实例化顺序,还是Bean的执行顺序呢?那么我们先直接给出结论再来验证结论。结论&#xff1…

数据驱动安全需三大核心新技术

要做到数据驱动安全,齐向东认为需要三大核心技术。第一个核心技术是大数据采集器,第二个是大数据引擎,第三个是机器学习挖掘、重要安全问题定位准确。转载于:https://www.cnblogs.com/1992825-Amelia/p/4854220.html