这是敏捷开发绩效管理的第五篇。(之一,之二,之三,之四,之五,之六,之七)

度量敏捷开发的生产率一直是个难题,确切说度量任何开发方法的生产率都是一个难题,但它实际上有答案,这个答案是本文的主要内容。

度量敏捷生产率的目的


真正难以回答的是度量生产率的目的是什么?

很多人都认为是考核绩效,发奖金。根据上一篇文章的内容我们可以知道,这完全是行不通的:客户并不购买我们的生产率,生产率高也并不能证明产品或项目盈利,应该为团队设立外部目标,否则很可能得到一个生产率很高,但是实际上很烂产品——质量上或易用性上很差,抑或其他想象不到但一定遇到的原因。这是我们说为什么用外部目标而非内部目标考核团队的原因。

或许又有人说:“开发得快不快是团队的事情,产品好不好则是产品负责人的事情。”这样也不对,相当于我们在自组织之后,当我们享有勇气,尊重,沟通……这些敏捷的特质之后,我们居然得到了一个只关心自己的开发速度,而置客户价值和企业利益于不顾的团队。“受激励的个体”只被自己小团队的绩效所激励,并不爱也不关心自己的产品,这绝对不是敏捷开发的初衷。

度量生产率的目的不是绩效考核,而是是希望提升生产率绩效。将度量结果进行横向和纵向比较,可以分析造成生产率差异的原因,并进而提升生产率绩效。

微观度量方法-故事点


故事点估算方法

“每月完成的人天数”这个方法不说了,用尺子量尺子,肯定不行的。不过通过统计每月的实际投入天数,可以优化人员利用率,并间接提升生产率。

“每月完成的故事点”这个是比较好的方法。

所谓故事点法,就是提前选择一些大家都熟知的、以往做过的、典型的故事,比如:

1. 对单个表进行增删改查

2. 对父子表的增删改查

3. 为一个已经存在的数据表增加一个复杂报表

4. 修改一个中等难度的BUG

……

(实际上这些故事应该是具体的,而不是像上面例子中一样看起来更像是“分类”)

然后人拿出当年的历史记录,将当时所投入的人天数称为“故事点数”(也有别的做法但这个最简单)。比如“对单个表进行增删改查”当年用了4天,那么标准故事点就是4。

当下次估算时,人们又发现有一个故事也是“对单个表的增删改查”,于是就先选定基数为4,再讨论这次与上次比,到底复杂多少。如果一致认为可能复杂20%,那么故事点就是5。

如果大家的生产率不变,那么这个故事应该5天完成,但是如果结果却是4天就完成了,则表明大家的生产率提高了。当然不是一个一个故事度量,而是把整个迭代内的故事点加起来度量。

通过纵向比较故事点,可以知道大家是否比以前的生产率提高了

横向比较故事点比较有难度,因为每个团队乃至项目都会选定自己特有的标准故事,而且极难说明这个团队和那个团队的标准故事的转换关系。

故事点的局限性

在推广故事点这件事情上笔者有所保留,建议尝试但需注意风险,必要时知难而退。在笔者遇到的这么多做敏捷的企业和人里边,还没有见到有人提到他们的故事点应用是成功的。

原因在于找到大家都熟知的、以往做过的、典型的故事很难,而让所有人记住它们当年的详细情况以便日后对比修订就更难。

04年笔者去做咨询的一家企业有他们的故事点模板(他们并不做敏捷开发,但却使用完全类似的方法),一共有17种标准故事,已经记录了25个项目的故事点数据和实际工作量数据,每个项目从4个故事到上百的故事不等,他们希望笔者能帮他们计算一下“17个标准故事分别对应多少人天”。终于遇到了又有标准故事又有历史数据的情况,这比所有一穷二白想使用故事点的企业可乐观多了。

这是一个所谓“线性规划”的问题,涉及“最小二乘法”“超越方程”这些玄乎的名词,但却在Excel表里有这个功能,不过是10分钟的事情并不费力,真正费力的是解释其结果:求解的答案是——某些标准故事是负数,也就是说如果把这几种故事当作负数对待,那么以往发生的25个项目的预测结果与实际结果最符合。

再换一种直白的解释:用这17种故事预测工作量不准。

或许有人会说他们的17种故事选得不好,或他们的水平很差。怎么说呢,他们是一家1000多人的电信企业,专职做过程管理的人就有5人,还认真地记录了这么多数据,恐怕当年选定故事的过程也是经过思考的。倘若他们都难以建立其故事点,一般的10人团队想自己做一套恐怕更难。

回过头来观察他们公司的失败原因,是在为新的故事找到对应的标准故事后,没有根据其差异进行调整,而是机械地选择了标准故事的故事点,导致误差很大。在采用故事点的时候应该注意。但他们考虑到某些故事的回归结果居然是负数,即使“进行调整”结果也会是血淋淋的,甚至可以说基本扔到了标准故事从头估算,最终放弃了故事点,采用了另外一种方法,就是下篇文章提到的“功能点估算”。


笔者之前的一篇文章有故事点估算方法的更详尽的介绍,但角度不同:敏捷估算:故事点与直接估算天数的差异

故事点为我们提供了一种比较客观度量敏捷生产率的方法,但其局限性限制了其应用。下一篇文章将介绍另外一种广泛应使用的方法:功能点估算法。

点击下载免费的敏捷开发教材:《火星人敏捷开发手册》

转载于:https://www.cnblogs.com/JPAORM/archive/2011/08/26/2510454.html

敏捷开发绩效管理之五:敏捷开发生产率(上)(故事点估算)相关推荐

  1. 《敏捷开发绩效管理》扩展阅读(敏捷开发绩效管理,敏捷团队绩效管理)

    本文长期更新,请常来看看. •    序言 –  从代码行到故事点 敏捷估算:故事点与直接估算天数的差异 –  下一步? •    敏捷团队绩效管理 –  谁来管理团队中的个体? 同行压力(兼谈敏捷团 ...

  2. 敏捷开发绩效管理之六:敏捷开发生产率(中)(功能点分析,FPA,简化的功能点)...

    这是敏捷开发绩效管理的第六篇.(之一,之二,之三,之四,之五,之六,之七) 直接估天数或用故事点估天数,都很"程序员".如果在项目的甚早期,面临与客户相关的报价问题,或高层领导要统 ...

  3. 敏捷开发绩效管理之七:敏捷开发生产率(下)(简化功能点分析,NESMA,两级简化)...

    这是敏捷开发绩效管理的第七篇.(之一,之二,之三,之四,之五,之六,之七) 续前文-- 功能点估算 第一级简化 上次说到只用数据+操作就能准确计算规模,听起来够简单了,但其实还不够. 谁能在刚拿出2页 ...

  4. 敏捷开发绩效管理之三:个体动力之源——同行压力(松结对编程,师徒制度,跨职能团队,绩效考核)...

    这是敏捷开发绩效管理的第三篇.(之一,之二,之三,之四,之五,之六,之七) 如果有10个程序员,笔者相信至少有9个是勤奋的.但是如果有一个10人的程序员团队,其中1个人不是勤奋的,而且仍然拿到与其他人 ...

  5. 敏捷开发绩效管理之一:序言及“敏捷开发是否考核个人”(绩效考核)

    这是敏捷开发绩效管理的第一篇.(之一,之二,之三,之四,之五,之六,之七) "敏捷开发绩效管理"本身是个伪命题,因为敏捷开发本身不想涉及绩效管理,这就像"C++绩效管理& ...

  6. 敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)...

    这是敏捷开发绩效管理的第四篇.(之一,之二,之三,之四,之五,之六,之七) 最近在看德鲁克的书,发现其中很明确地写着"企业的绩效只存在于外部,而企业内部只有成本"的概念和说法,下面 ...

  7. 敏捷开发绩效管理之二:用中医理论管理团队及其绩效(绩效考核,团队管理,自组织团队)...

    这是敏捷开发绩效管理的第二篇.(之一,之二,之三,之四,之五,之六,之七) 团队管理是个由来已久的话题,各式各样的管理理论和方法层出不穷.笔者因为工作原因在过去16年里与100多家企业的团队或团队领导 ...

  8. 敏捷开发绩效管理之九:阿米巴经营之软件团队经营什么(上)

    这是敏捷开发绩效管理的第九篇.(栏目总目录) 若正在为长期没有得到职务提升而感到困惑,下面的内容可能会有所帮助.因为越向上的职位越不像一个打工者,而是像一个企业的经营者. 何为经营 对一个开发团队而言 ...

  9. 敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)

    这是敏捷开发绩效管理的第四篇.(之一,之二,之三,之四,之五,之六,之七) 最近在看德鲁克的书,发现其中很明确地写着"企业的绩效只存在于外部,而企业内部只有成本"的概念和说法,下面 ...

最新文章

  1. Python 快速生成 web 动态展示机器学习项目!
  2. 斯坦福2021版图机器学习课程完结,视频、PPT全放送,大神主讲
  3. 意外的服务器响应_响应式系统reactive system初探
  4. 远程连接MySql数据库
  5. idea修改代码后没有重新编译_SpringBoot中实现代码修改之后的自动更新与热加载...
  6. 百度SEO站长统计后台广告推送引流软件
  7. 保存最大的前20项暴力--Heritage of skywalkert
  8. 存储基础(VG、LV、LP、PV、PP)
  9. 字节跳动面试分享:java从入门到精通第五版答案位置
  10. openlayers4xy坐标转为经纬度坐标
  11. python绘制太阳花,Python turtle学习笔记(包含太阳花的绘制,玫瑰花的绘制)
  12. oracle认证考试试题及答案,Oracle DBA认证考试存储管理试题及答案
  13. 一个字节8位,无符号类型,最大值为什么是2的8次方-1,范围0-255
  14. 能够修改证件照的软件有哪些?分享两种好用的修改工具
  15. 如何把pdf转换成excel
  16. Git 工作常用命令行
  17. Linux设备模型(2)——Kobject
  18. 实战小项目_猜数字小游戏
  19. G120变频器,运动控制程序模板。 西门子1200编程实例
  20. 大学期间,为啥我能学好C语言?只因我做到了这五点!

热门文章

  1. React Native 学习记录
  2. Griffon 1.1 发布,Groovy 开发框架
  3. 高项近5套选择题知识点思维导图
  4. winserver2008/2008R2 AD域控/DNS环境搭建详细步骤
  5. numpy元素特定条件查找过滤
  6. 知乎人均985?Python爬50W数据,BI做出可视化后,我有了答案
  7. 这个工具,可视化分析10W数据后,找到了数据岗位月薪20K的秘诀
  8. java mybatis分页查询语句_mybatis分页查询的实现(一)
  9. html写弹出告警状态,基于日志报警插件 elastalert 实现告警(示例代码)
  10. html5片转为base64,base64和图片的互转(HTML5的File实现)