写点什么

敏捷度量指标争论又起

  • 2009-11-11
  • 本文字数:1402 字

    阅读完需:约 5 分钟

敏捷教练和咨询顾问们经常警告他们的客户:传统的度量指标,诸如收益价值、工作小时数、代码行数,以及代码测试覆盖率等都不能与敏捷项目很好地吻合。但是这样,客户们就会产生下面的问题:什么是好的敏捷度量指标?相对于坏的度量指标,怎么能提出好的度量指标?即使是好的度量指标,在某些环境里是否也会变得不再合适?

XP/Scrum 团队里面经典的度量指标自然是开发速率(Velocity),或者说团队在上一次迭代里面完成了多少开发工作?这个指标起初只是为了帮助团队更好地决定下一次迭代的计划工作量。然而,“开发速率是否可以度量团队的生产率,或者比较两个团队?”——这样的问题却屡见不鲜。 Hiren Doshi 指出开发速率这一参数是与具体团队相关的。另外,敏捷顾问 Peter Stevens 也质疑团队是否会因此在度量上耍花招:这个故事应该是 2 个点,还是 3 个点?这完全依赖于团队的判断。如果团队认为需要交付尽可能多的故事点数,那么他们显然会选择 3 个点,也许更多——5 个点。”

敏捷/ 精益教练 Dave Nicolette 警告大家设计拙劣的度量指标会导致低劣的产出结果。举例来说,如果业务上奖赏修复 bug 和救火的行为——人们就会因此去制造 bug,四处点火。

敏捷教练 Deborah Hartmann Press 和敏捷管理顾问 Robin Dymond 在他们的论文“ Appropriate Agile Measurement ”中给出了好的敏捷度量指标的几个启发性原则:

  • 坚持并强化精益与敏捷原则
  • 度量产出结果,而不是产量
  • 追踪趋势,而不是数量
  • 选取轻量的度量指标和“诊断”方法
  • 易于收集
  • 展示指标的上下文和重要的参数,而不是掩饰
  • 促进有意义的讨论
  • 度量价值(产品)或者流程
  • 鼓励“足够好”的质量

那么,什么是好的敏捷度量指标?

Ron Jeffries 建议使用可工作的经过测试的特征数量(Running Tested Features,简写为 RTF,下同):

  1. 所需的软件被分解为给定名称的特征(需求、故事等),它们组成了需要交付的整个系统
  2. 对于每个给定名称的特征,至少有一个或者多个自动化验收测试,(当它们都通过了),反映了特征已经全部完成
  3. RTF 指标表示了项目在各个时刻有多少特征通过了各自的全部验收测试

Scrum 教练 Peter Hundermark 建议可工作的自动化测试数量(Running Automated Tests)也是度量指标:

在一定条件下,团队拥有更多的可工作的(即通过的)自动化测试,对于软件质量是一个积极的信号。但一旦超出某个水平,该项指标就将不再真实,但我们还没有遇到哪支团队达到了这一点。(我们倒希望遇到呢!)

根据小道消息,在 salesforce.com 向敏捷的大转变中,这项指标就是该公司使用的主要指标之一。

此外,他还提到了“进行中工作量”:

进行中的条目项(故事)是一种生产率指标。它旨在帮助团队跟踪他们的协作状态。在敏捷团队里,这表示对于整个团队而言,只要条件允许,就在单个工作条目上协作直到其“完成”。这样增加了产出率、质量和相互之间的学习,减少了直到 Sprint 结束时条目仍未完成的风险,那样导致了浪费。 跟踪每天有多少任务项处于“进行中”状态,能使团队的协作程度透明化。图表则以天为单位对进行中的故事进行跟踪。它反映出 Sprint 的不可预测性:它应该随着时间逐渐趋近于 1,一旦出现任何大于 2 的数值,Scrum Master 就该行动了。

最后,Deborah 和 Robin 提醒大家在设计指标的时候,不仅应该考虑何时使用,也要考虑何时停止使用,以及可能的利益博弈。

请参阅 InfoQ 之前相关报道: Metrics in an Agile World Agile EVM 查看英文原文: What is a Good Agile Metric?

2009-11-11 20:152964
用户头像

发布了 76 篇内容, 共 27.5 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

模块五总结

竹林七贤

用敏捷扑克做需求评审的3大优势,你get了吗?

LigaAI

高效工作 团队管理 产品思考

数字人民币有望为全球贸易结算开辟新视窗

CECBC

全球案例 | 一家财富500强公司利用 Jira 和 Jira Align 将万人级团队的生产力提高了 30%

Atlassian

管理 DevOps 敏捷 Jira 协同办公

人生算法:涌现,在自己身上发挥群体智慧

石云升

读书笔记 6月日更

Python3 Note 对象初始化

awen

Python 生命周期 对象初始化

webRTC探索音视频的录制的实现

云小梦

JavaScript WebRTC 浏览器API

BoCloud博云微服务平台3.0正式发布:让微服务转型路径更清晰

BoCloud博云

微服务

智慧工厂VR拆解零件——3D虚实现实可视化系统

一只数据鲸鱼

数据可视化 工业互联网 vr 智慧工厂 零件拆解

工业制造业在数字化时代的三大发展方向

CECBC

【LeetCode】包含min函数的栈Java题解

Albert

算法 LeetCode 6月日更

六一儿童节,看我用ModelArts让8090梦回童年

华为云开发者联盟

AI 美食 童年 modelarts 六一

个推CTO谈数据中台(上):从要求、方法论到应用实践

个推

大数据 数据中台 数字化转型 数据智能

苏州源控电子科技怎么样?名副其实的行业新星

Geek_8a195c

从VMWare安装到Nginx配置

wildpig

nginx vmware Centos 7

六一限定,致每一个追光者

白洞计划

安迈云首席战略官于晓晖:去中心化云计算构建Web3.0世界

DT极客

GitHub上收录400余篇任正非的讲话稿

不脱发的程序猿

GitHub 开源 程序人生 任正非讲话

☕️【Java技术之旅】深入学习JIT编译器实现机制(原理篇)

码界西柚

Java 编译器 JIT 6月日更

计算机视觉常用图像数据集标记平台

不脱发的程序猿

人工智能 计算机视觉 图像处理 图像数据集标记平台

Python3 Note __slots__

awen

Python slots

净筹6亿美元:微盟正在加速拉开差距

ToB行业头条

SaaS 微盟

NUCLEO-L432KC实现GPIO控制(STM32L432KC)

不脱发的程序猿

嵌入式 stm32 单片机 NUCLEO-L432KC STM32L432KC

“图发展”与“保安全”:大数据今后怎么玩?

CECBC

Android studio 在外置硬盘运行项目报.lock 的错误

三爻

flutter android Mac Android Studio

Serverless over Storage

焱融科技

云计算 容器 云原生 高性能 文件存储

因为一个字符校对问题,我的大厂面试挂了

华为云开发者联盟

MySQL 字符 字符校对 语句 MySQL5.7

一文带你认识队列数据结构

华为云开发者联盟

Java 数据结构 数组 队列

实现接口幂等性的四种方案!

李阿柯

面试 编程之路 幂等性

mPaaS 月度小报 | 应用上线前都应该检查哪些指标?CodeHub#5回顾:小程序容器加持下的技术架构“提质增效”

蚂蚁集团移动开发平台 mPaaS

小程序 移动开发 mPaaS

Python3 Note 函数注解

awen

Python Function 函数注解

敏捷度量指标争论又起_研发效能_Mark Levison_InfoQ精选文章