写点什么

敏捷度量指标争论又起

  • 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:152985
用户头像

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

关注

评论

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

科创人·优锘科技COO孙岗:错误问题找不到正确答案,求索万物可视的大美未来

科创人

Taro小程序跨端开发入门实战

京东科技开发者

小程序 taro 开发 移动端

如何用精益敏捷组合管理,提升研发效能?|ONES 研发管理大师课

万事ONES

写给 Java 程序员的前端 Promise 教程

CRMEB

mysql进阶(二十九)常用函数汇总

No Silver Bullet

MySQL mysql常用函数 8月月更

如何让您的wiki内容更高级?

Geek_da0866

Java泛型的继承场景

Geek_163f36

2022纯手工打造1700道Java高级工程师面试宝典(含面试题解析)

Java工程师

Java 面试 八股文

Netty入门 -- 什么是Netty?

Bug终结者

Netty 8月月更

运筹帷幄决胜千里,Python3.10原生协程asyncio工业级真实协程异步消费任务调度实践

刘悦的技术博客

Python 协程 Async Python3 协程原理

开源一夏 | RuntimeException 子类

六月的雨在InfoQ

开源 8月月更

LeaRun模型驱动开发框架 重塑企业生产力

力软低代码开发平台

基于华为云弹性云服务器ECS(搭载openEuler的鲲鹏通用计算增强型)完成鲲鹏代码迁移工具实践【华为云至简致远】

科技云未来

鲲鹏服务器 弹性云服务器ESC

基于华为云ModelArts的水表读数识别开发实践【华为云至简致远】

科技云未来

水表读数识别项目

QCon 回顾 | Data Fabric:逻辑统一、物理分散

网易数帆

大数据 数据湖 降本增效 Data Fabric

APICloud AVM 封装日期和时间选择组件

YonBuilder低代码开发平台

安卓 低代码开发 多端开发

企业“数字化转型”成功的2个必备条件!

优秀

数字化转型

2022年中国全民健身发展白皮书

易观分析

行业分析 健身

它们不一样!透析【观察者模式】和【发布订阅模式】

掘金安东尼

前端 设计模式 8月月更

基于ECS实现一分钟自动化部署【华为云至简致远】

科技云未来

自动化部署

深度解读 | 关于SBOM最基础元素,你需要知道的(Part I)

安势信息

开源 漏洞 SCA SBOM 最基础元素

Go-Excelize API源码阅读(四)——Save()

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

EMQ畅谈IoT数据基础软件开源版图,引领本土开源走向全球

EMQ映云科技

开源 物联网 IoT emq 8月月更

用完华为云会议解决方案,我直接卸载了之前的会议软件【华为云至简致远】

科技云未来

云会议产品

以数治企,韧性成长,2022 年中国 CIO 数字峰会成功举行

金蝶云·苍穹

国内部分手机游戏开始显示用户IP属地

郑州埃文科技

游戏 手游 IP归属地

急了,Mysql索引中最不容易记的三个知识点通透了

知识浅谈

8月月更

永续合约交易所系统开发逻辑详情

开发微hkkf5566

Qt下异步使用C++调用Python文件

Geek_163f36

Grid 布局介绍

CRMEB

调研阶段复盘

Geek_XOXO

复盘

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