写点什么

敏捷经济学:故事点成本

  • 2010-11-10
  • 本文字数:1689 字

    阅读完需:约 6 分钟

为谁而写?

本文的目标读者主要是那些负责软件开发项目 / 团队的预算和管理的人。当然,其他诸如开发人员,质量保证人员,产品经理或者 CEO,CIO 们也可能对本文感兴趣。

为什么我们需要估算故事点成本

故事点是用来估算工作的。投资必然期望有所回报。如果期望经济上的回报,那么理解工作本身的成本对于获得很好的投资回报率(ROI)是很关键的。即使没有 ROI 的要求,比如潜在的好处只是为了符合法规,那么公司管理层通常也希望搞明白,在公司有限的资金中,到底花费了多少钱来完成这些特定的功能,迭代或者发布。

我们又该怎么做呢?

我们在这里讨论的是一种基于历史参数的方法。这种方法基于先前项目的历史数据。所以在得出一套可靠的模型之前,我们必须有些历史数据的积累 。

RC = 产品某一次发布的总成本(美金)

RSP = 该发布包含的总的故事点

RSPC = 发布的每个故事点的成本

RSPC = RC/RSP

一旦你有了一次发布的数据,你就应该开始对所有历史发布进行计算。接下来一步就是算个平均值:

产品的平均 RSPC = ∑ RSPC?;, RSPC?;………RSPC? / N

如果你想计算所有产品的故事点成本,那么就全部加起来再平均一次就行了。当热,对于大多数计划而言,针对每个产品线做计划是很有用的,而像这样拔高到高层面的成本计算就有点水份了。

  1. 增加功能 X、Y 或者 Z 的成本是多少?
  2. 交付版本 2.1.0 的成本是多少?
  3. 迭代的平均成本是多少?
  4. 我们能在剩余预算之内完成所有的故事点吗?

多久需要更新一次呢?

你将敏锐地发现我们正在使用的是历史数据,然而历史数据只有在没有发生变化的情况下才准确。为了减少整个过程中由于团队规模、能力以及工作复杂度的变化和不同而带来的误差,我们需要定期重新计算。多久重新计算一次呢?那就仁者见仁,智者见智了。我每个月计算一次,因为我在一个快速成长的团队工作,新的产品不断涌现。我需要经常重新评价我的成本。

一个更加稳定的团队和产品可能只需要每 6 个月计算一次。还是那个观点,要力保数据准确。

例子

现在就让我用我最近带领的一个项目做为例子来更好地阐述一下这个观点。这个项目叫做 Patient Kiosk,该项目的主要目的是构建一个集成化的软硬件平台,通过这个平台可以来指导病人,病人也可以通过一个按在臂膀上的临床装置参与到医疗保健活动中去。你可以想象这项工程需要花费很多时间,而且并不是所有部分都跟软件有关。但这个项目还是使用了敏捷技术和故事点来做估算。

我们使用 Jira 来追踪用户故事和故事点,但是 Jira 厂商似乎严格地把他们的产品跟开发人员挂钩,Jira 里面并没有基于故事点成本的财务和预算机制。所以我就通过使用 excel 来追踪故事点成本了。

首先,我给每一个月份都做了一张工作表单:

  • 每个发布的故事点
  • 每个发布的总开销
  • 每个发布的实际用时

通过这 3 个数据,我就可以计算出每个月的成本以及平均值。表 1 展示了这个例子。

表 1

接下来,我把每个月的平均成本加起来,计算出每个月的平均值,从而来追踪一段时间内的变化情况。同时我也画了一些基本的图表来显示趋势。当然你可以准备更多数据或者图表,但这取决于你的需要。表 2、表 3 给我们展示了这个例子。当产品管理层想要知道构建某些功能需要多少成本的时候,我就用表中红色数字乘以团队估算出来的故事点数就可以了。

表 2

故事点成本 - Patient Kiosk

每个故事点所花的小时数 – Patient Kiosk

混合平均

平均值(每小时) $ 45.39

中值(每小时) $ 46.25

表 3

你可能会问:“如果故事点是你的成本动因以及估算工具,你又为什么去追踪小时数呢?”我和我的团队对于故事点以及速率这些概念都很熟悉,但公司的其他人则不了。把速率这一概念转换成小时数,对帮助那些熟悉了传统估算方法的利益关系人理解我们的做法是很重要的。

故事点成本把一个相当抽象的、以开发人员为中心的概念和现实商业世界联系起来了。这是很有必要的。如果我们试图在我们的开发领域中使用故事点,那么它们必须要跟商业部门使用的表单、帐目一脉相承。

查看英文原文: Agile Finance: Story Point Cost


感谢石永超对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-11-10 00:003568
用户头像

发布了 114 篇内容, 共 36.7 次阅读, 收获喜欢 2 次。

关注

评论

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

运维服务体系架构

阿泽🧸

10月月更 运维服务

docker学习笔记(二)

Studying_swz

Docker 10月月更

基础结构:链表 回文链表

芯动大师

Python 10月月更 回文数

一文搞懂CAN和CAN FD总线协议

不脱发的程序猿

汽车电子 通信协议 CAN总线 CAN和CAN FD总线协议 CAN FD总线

cstdio的源码学习分析11-格式化输入输出函数fprintf---format解析跳转表逻辑分析

桑榆

c++ 源码刨析 10月月更

公司没钱了,工资发不出来,作为员工怎么办?

石云升

离职 职场经验

Pixel系列还能打,靠的是什么?

脑极体

人工智能

CAN与CAN FD通信之间存在的问题

不脱发的程序猿

汽车电子 CAN总线 CAN FD总线 CAN与CAN FD通信问题 CAN与CAN FD通信

区块链架构的层级:第 0、1、2、3 层介绍

devpoint

区块链 10月月更

聊聊 K8S:K8S集群搭建实战

老周聊架构

k8s 10月月更

什么是IP路由?思科与华为在IP路由配置上有啥区别?

wljslmz

路由器 动态路由 静态路由 10月月更 IP 路由

一份经过时间检验的 Laravel PHPUnit 测试经验分享

乌龟哥哥

10月月更

Feign的整体流程

急需上岸的小谢

10月月更

利用Babel自动生成“Attribute”文档

小鑫同学

前端 markdown 插件开发 babel 10月月更

深入理解java中的自动装箱与拆箱

乌龟哥哥

10月月更

【愚公系列】2022年10月 Go教学课程 033-结构体方法重写、方法值、方法表达式

愚公搬代码

10月月更

Centos7 搭建Jupyter NoteBook教程

Yeats_Liao

后端 虚拟机 10月月更

数据中台坠落神坛,数据服务平台闪亮登场,阿里、快手又整烂活?

雨果

数据中台

2022-10-19:一个数组如果满足 : 升降升降升降... 或者 降升降升...都是满足的 给定一个数组, 1,看有几种方法能够剔除一个元素,达成上述的要求 2,数组天然符合要求返回0 3,剔

福大大架构师每日一题

算法 rust 福大大

docker学习笔记(一)

Studying_swz

10月月更

Windows Update MiniTool 20.12.2016 控制Window更新下载及使用教程

Yeats_Liao

工具 windows 10月月更

ZooKeeper基本架构

穿过生命散发芬芳

zookeeper 10月月更

nginx快速入门

Studying_swz

10月月更

【内网渗透】一次简单内网靶场渗透

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

Centos7 搭建单机Spark分布式集群

Yeats_Liao

后端 虚拟机 10月月更

feign的动态代理

急需上岸的小谢

10月月更

RefectiveFeign

急需上岸的小谢

10月月更

Spring Boot「09」Property 高级特性

Samson

Java 学习笔记 Spirng spring-boot 10月月更

如何进行项目管理?

老张

项目管理

如何监测MySQL是否命中索引?

乌龟哥哥

10月月更

敏捷经济学:故事点成本_研发效能_Christopher R. Goldsbury_InfoQ精选文章