当前位置: 首页 > news >正文

定制你的敏捷方法:以结果为导向

\

本文要点

\\
  • 速度是对当前能力的度量,但不是对项目进度的度量。\\t
  • 度量完成的故事,而不是故事点,以了解项目进度。\\t
  • 选择能对你了解进度有实际帮助的度量项。\\t
  • 通过查看特性燃尽图衡量项目进度。\\t
  • 改变度量能改变交流。\
\\

我遇到过很多人想使用一个且唯一一个敏捷框架。我并不反对框架,除非有人想盲目地遵从框架去寻求想要的结果。往往,你的项目或团队需要考虑,可以选择使用哪些敏捷方法以寻求所需的结果。在这种情况下,为什么不先定义好商业结果和你想要度量的产出物呢?

\\

这是系列文章中的第二篇,该系列主题为帮助你思考如何针对你的环境定制敏捷方法。本文围绕的是团队可能收集和使用的数据(比如正在做的产品和其他度量),即那些你想要分享给管理者和利益干系人的信息。

\\

在本系统的第一篇文章《定制你的敏捷方法:选择适合你的敏捷方法》中,我写了你可以如何去考虑对你行之有效的敏捷方法。定制你的敏捷方法的其中一种方法就是,考虑你想要把什么数据展示给其他人。

\\

几乎每个项目都需要以某种形式把进度呈现出来,以便项目团队和管理者可以制定关于项目的决策。项目正在进行中?团队是否被困住了?团队因为其他更重要的事停住了脚步?

\\

许多管理者和项目经理习惯使用干特图去了解进度。项目经理(希望团队)为不同的项目阶段制定相应的里程碑。当他们达成这些里程碑的时候,团队就可以在干特图中展示他们完成了什么了。

\\

我在瀑布和其他连续生命周期项目的经验是,直到项目超期之前它都是准时的。项目团队准时或接近准时地完成他们的阶段。然后,当测试人员介入项目时,团队最终认为他们完成了特性。往往,测试人员会发现重大缺陷。然后,项目会因为返工而超期。

\\

敏捷方法让我们使用经验数据(即工作相关的实际数据)来帮我们了解实际的进展。数据告诉我们当前处于什么位置:超前、落后,甚至偏离了方向。另外,因为我们能在构建过程中看到产品,所以能知道是否能就此打住,还是持续推进。

\\

敏捷方法可以改变项目度量值。首先,让我们讨论一下速度,因为许多团队把速度作为进度度量项。

\\

速度是对团队能力的度量

\\

许多团队按故事点来度量速度。他们认为速度是对进度的度量。但其实不是。速度是团队能力的当前度量。

\\

有些团队使用速度来看他们能在下一个短时间周期完成些什么。然而,其他团队以这些方式使用速度会遇到以下麻烦:

\\
  • 速度是关于团队的相对度量,所以你不能在团队之间做比较。实际上,如果你们作为一个团队有了提升,你也不能用现在的速度去比较之前的速度。当你们转变了团队的工作方式时,你的团队速度会在一定时间后发生改变。\\t
  • 个体会影响团队的速度。如果你改变团队中的人,那么团队的速度就会发生变化。\\t
  • 员工休假或生病时,速度就会发生变化。\\t
  • 人们很容易就会把速度当成是目标,而不是对能力的评估。\

团队想要了解他们能力的时候,可能会觉得度量速度很有帮助。有些团队愿意看到他们能在一个迭代完成30个故事点。他们甚至知道这30个故事点大概是给定时间内的五个小故事或一个大故事和两个小故事。这些团队采用故事点来度量他们的能力。

\\

有些团队试着预测一份季度待办或项目待办。他们清楚他们的速度是30个故事点。对这份完整的待办事项予以评估后发现,他们要实现大概180个故事点。他们“有理有据”地猜测以当前的团队成员需要大约六个迭代完成这些工作。他们可能会解释说,“以我们目前所知,至少六个迭代吧。我们将按工作进展持续更新评估”。

\\

人们如果想要比较团队的速度,或者速度成了目标,那速度就成了问题。如果你曾经听某人说,“你可以加快两倍!”那这就说明速度成了目标。我就见过管理者和团队都认为可以用这种方式创建目标。

\\

目标,对射箭很有帮助。但对于度量能力却没什么用。

\\

我们总用速度这个词来度量进度。我们甚至可能认为我们是在高速公路上飞驰。我们测算速度时,距离不会随着时间的变化而变化。一英里就是一英里,一千米就是一千米。距离是一个静态的指标。所以,我们能够对这两个指标加以转换(英里和千米)。

\\

故事点会随着时间的变化而变化。故事变化时,团队交付的故事点就会变。如果团队习惯在一个周期内针对产品的某一领域交付30个故事点,他们可能甚至不知道在同样的时间内针对其他领域他们能够交付多少故事点。如果产品经理改变他或她编写故事的方式,故事点就会发生变化。而且,如果团队中的人变了,可能交付的故事点也会变。

\\

这就意味着,我们使用故事点时度量不是静态的。特定的条件有相应的评估。当这些条件变化时(编码和测试的领域、团队组成、已有代码和测试的质量),相应的评估就会发生变化。

\\

这也正是为什么速度是对当前能力的相对评估,而不是永远的评估。

\\

故事点的评估能帮助团队理解他们的能力。然而,如果你度量故事点,得到的就是故事点,而不会得到特性。

\\

度量完成的故事,而不是故事点

\\

Jim是一家组织的一位敏捷项目经理,这个组织希望能够更快地交付特性。他从上级管理者那里接到了一个命令:提升特性发布速度!Jim的领导想要看到特性交付后可以更可靠的流转,以便他们更快地确认收益。

\\

Jim的团队度量了他们的故事点。他们有个小麻烦,他们迟于迭代后完成的故事点呈曲棍球棒曲线。

\\

a37ae7f7a2235f9a714e7a35fa43f0be.png

\\

图1©  取自创建你成功的敏捷项目—Johanna Rothman

\\

Jim发现,他们有些迭代末期正在进行中的故事,所以他请团队增加一个故事度量到图表中。通过把完成的特性(故事)增加到图片中向他们展示了正在发生着什么:

\\

69045c59bd9ef60fcd287087746b562c.png

\\

图2©  取自创建你成功的敏捷项目—Johanna Rothman

\\

团队之前认为他们的故事都有两个故事点。如果是这样的话,他们在本迭代中应该已经完成五个故事。相反,他们只完成了两个故事,这意味着这些故事每个略为五个故事点。当他们看到这个图表时,发现实际上他们完成了比故事更多的故事点,这才认识到他们的故事太大了。

\\

另外,他们发现故事完成得太晚了。第一个故事是在第9天完成的,而第二个是在第10天,还有几个正在进行的故事没有完成。

\\

对于Jim的团队,度量对客户(特性)有价值的东西而非故事点能帮他们认识到为什么管理者想要更多的生产力。现在他们需要弄清楚是什么妨碍他们交付更多完成的故事。

\\

度量想增多或减少的东西

\\

Jim想知道尚未完成的故事的所有故事点。他清楚累积怜(越攒越多),但他想要理解什么组织制度阻碍了团队更快发布更多的故事。他决定看看周期时间和交付周期。

\\

一般来说,周期时间即团队把一项任务从准备就绪列拿出来直至将其完成的时间。Jim确信,这个团队肯定依赖组织内的其他人或团队。Jim请团队介绍一下发生的现象。按他们对此的陈述,他绘制了这张图表。

\\

Jim问,“一个任务从完成到已发布需要多久呢?”整个团队一致认为不会超过一天。Jim把这标为T5,并写上“最多一天”。

\\

然后,他问,“怎么算是完成了呢?”

\\

每个人七嘴八舌地说起来。他等了一会儿,然后说,“谁能告诉我工作流程吗,我如何来理解呢?”

\\

Susan,一名高级开发人员说“我先来,我们把一项任务从‘准备就绪’列拿出来,把它放到‘进行中’列,然后开展工作直至认为它完成了。但是,这有个问题,我们不做任何界面上的事,必须得等UI团队协调人给我们。”

\\

大家纷纷点头表示认同。Susan持续道。“然后,我们必须提请用户接收测试,等他们取走这个特性。”

\\

Jim问道,“每次?”

\\

Susan点了点头。“每一次。”

\\

Jim画了下面这张表,问,“是这样的吗?”

\\

每个人都说是的。

\\

c611876d153368f6c817396761b0e554.png

\\

这些依赖都会花许多时间。Jim请团队介绍最近几年的工作。团队在这段时间内完成了五个故事,所以他请他们说明在流程的每个环节花费的时间。

\\
故事团队内时间界面时间用户接收测试时间部署时间周期时间
故事13天3天2天1天9天
故事22天0天2天1天5天
故事34天1天3天1天9天
故事41天0天2天1天4天
故事51天3天1天1天6天

Jim的领导想让团队更快地发布。然而,团队把大量的时间用在了等待界面和用户接收测试上了,这意味着团队的速度和完成的故事点不那么关键。

\\

该团队无法控制UI团队的申请和响应。他们不知道他们的工作和UI之间要来来回回多少次,所需的时间难以预计。

\\

另外,用户接收测试的时间从发起测试申请到开始测试至少得有两天,如果用户接收测试发现了问题,可能工作又会转回到这个团队或相应的UI人员。除此之外,如果最初负责UI的人没空或有其他状况,那么团队可能还得与新的UI人员协作。

\\

这个团队的周期时间不只是团队内的时间,而是所有时间的总和。团队惊讶地发现这些事花了这么长时间。这五个故事的平均周期时间是6.6天,都没有人会想到会多花这么多时间!

\\

基于这份数据,Jim提议招收了他们“自己的”UI人员。这一改变把他们的平均周期时间缩短到了每特性2.5天。该团队不必再UI团队指派人员给他们了。他们能够自己调整UI方面的工作方式。他们喜欢一开始实现一个故事就集中开始UI方面的工作。

\\

现在他们可以向管理者说,他们每个特性的2.5天与总体周期和上市时间相比仍然相形见拙,因为用户接收测试和部署仍不在团队范围内。

\\

Jim的团队发起组织级的讨论,探讨如何把用户接收测试和部署也整合到团队中。无论怎样,再也没人抓着他们的评估不放了。每个人的关注点都上升了一个层次,即如何组织测试和发布新特性。

\\

度量项目进度

\\

虽然组织讨论的是测试和发布新特性的总体问题,产品经理已经为项目的总体路线图增加了故事。

\\

但是Jim认为产品经理需要增加更多的故事。然而,如果完成产品经理增加的每个任务就得花很长的时间才能完成项目。他需要想个办法,向管理者展示虽然项目在前进,但是增加特性将推迟发布时间。

\\

他选择了两个图表:项目特性燃尽图图和项目待办事项燃尽图。

\\

a36121d5922f9ec4cdf301b4d7b45032.png

\\

3 © 取自创建你成功的敏捷项目—Johanna Rothman

\\

该特性完成图展示了已完成特性的燃耗、所有特性的燃耗,以及剩余特性的燃耗。

\\

Jim和产品经理统计了这些特性。他们没有描述复杂度或评估,他们统计的特性的总体数据。

\\

其中某些特性增长是因为产品经理理解特性后发现有复合的特性能够分解为几个故事。Jim和产品经理把每个故事视为了一个特性。

\\

增长的另一个原因是产品经理增加了更多的特性。这在产品待办事项燃尽图中很容易就能够看出来。

\\

d100782b0801d75eaeb8a35abd38951c.png

\\

4© 取自创建你成功的敏捷项目—Johanna Rothman

\\

该团队每个迭代都度量他们的进度。随着项目的进行,产品经理增加特性到产品待办列表中,特性集也会随之增长。

\\

每个特性集不断地增长。因为产品经理和团队可以看到哪些特性集在什么时候增长的,所以他们可以问以下问题:

\\
  • 它是最具价值的部分吗?\\t
  • 我们现在如何先发布一小部分,如何了解已经为客户完成了哪些所需的内容?\\t
  • 或要结束这个项目预期还要做些什么?\

你的团队或许有不同的问题,但Jim的团队问的是这些问题。

\\

Jim的团队想要确认,这些客户真的需要这个项目的这些特性。有时,会因为故事或特性不再对客户有价值或重要程度不足而削减特性集。

\\

改变交流为切实有效的度量

\\

Jim将此类交流从能力的预测(即速度)改为了切实有效的度量。他能够将组织内部的交流从关于团队应该做什么改为团队应该完成什么,并讨论他们发现了什么障碍。

\\

所有一切,都是源自改变度量。

\\

关于作者

\\

5e1cb7084ed09617be69aa333b9538d7.jpgJohanna Rothman, 著名的“实用主义管理者”,为你遇到的问题提供中肯的建议。她帮助领导者和团队发现问题并解决风险,以及管理他们的产品开发。Rothman是十多本书的作者,包括:《创建你成功的敏捷项目:协作、度量、评估、交付》、《敏捷和精益程序管理:跨组织的大规模协作》、《管理你的项目组合:提升能力完成更多项目》第二版,在jrothman.com上可了解她的更多著作。

\\

查看英文原文:agile approach results

相关文章:

  • Java并发编程(六)发布与逸出
  • linux 查看网卡流量的方法
  • 自己制作 XP With SP3 系统光盘 包括驱动SATA集成AHCI驱动
  • 使用Maven运行单元测试
  • 创建服务
  • python01 用户交互程序
  • Mongodb 3.2 Manual阅读笔记:CH9 存储
  • 第101天:CSS3中transform-style和perspective
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • RxJS: 简单入门
  • 使用秘钥登录服务器
  • JavaScript学习(1)之JavaScript基础
  • 依赖倒置原则(Dependency Inversion Principle)
  • 物联网下的工控机产业发展迅速 潜力正不断被挖掘
  • 列表与元组的区别
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 2019.2.20 c++ 知识梳理
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 半理解系列--Promise的进化史
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 小程序测试方案初探
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)shell调试方法
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .axf 转化 .bin文件 的方法
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Micro Framework初体验(二)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net6使用Sejil可视化日志
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • 。Net下Windows服务程序开发疑惑
  • /etc/sudoer文件配置简析
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ C++ ] 继承
  • []常用AT命令解释()
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [android] 手机卫士黑名单功能(ListView优化)
  • [Docker]五.Docker中Dockerfile详解
  • [G-CS-MR.PS02] 機巧之形2: Ruler Circle
  • [Hibernate] - Fetching strategies
  • [IMX6DL] CPU频率调节模式以及降频方法
  • [leetcode] Balanced Binary Tree
  • [PHP] 面向对象
  • [POJ2411]Mondriaan's Dream
  • [PyQt] Pycharm 配置 PyQt 开发环境
  • [Python] 递归返回值 为 None 的问题
  • [SpringCloud] OpenFeign核心架构原理 (一)
  • [SpringMVC] SSM整合-前后台协议联调
  • [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)...
  • [Vue 配置] Vite + Vue3 项目配置 Tailwind CSS