写点什么

敏捷经济学:故事点成本

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

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

关注

评论

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

web前端培训:js算法面试es6实现

@零度

JavaScript ES6

加入XTransfer,和技术大咖一起大展身手!

XTransfer技术

程序员 招聘 跨境支付

Android编译优化系列-kapt篇

字节跳动终端技术

android 字节跳动 编译优化 火山引擎 火山引擎MARS

推荐学java——SpringMVC第一课

逆锋起笔

springmvc java框架 Spring Java 3月月更

恒源云(Gpushare)_UNIRE:一种可以共享标签空间的方法

恒源云

OpenCV 计算机视觉 服务器

推荐 10 本 Go 经典书籍,从入门到进阶(含下载方式)

AlwaysBeta

Go golang 编程语言 书单推荐 Go 语言

编程和英语,数学到底什么关系

北极的大企鹅

思维转换 编程思想

编程术语的类比(一)

北极的大企鹅

思维转换 编程思想

不会Netty,你永远是个Java菜鸟

博文视点Broadview

你真的会 i++吗

爱笑的小雨

性能测试中过滤异常的响应时间

FunTester

性能测试 HTTP 接口测试 响应时间 FunTester

java培训:多个线程同时访问一个类是否有问题方法

@零度

JAVA开发

福昕软件与中国船级社签署框架合作协议,共建数字船舶发展新高地

联营汇聚

Web 键盘输入法应用开发指南 (5) —— 实战技巧

天择

JavaScript 键盘 实战 输入法 3月月更

大数据培训:Kafka存储结构及Log清理机制

@零度

大数据 kafka log

NFT卡牌盲盒游戏系统开发搭建

薇電13242772558

NFT

45个 GIT 经典操作场景,专治不会合代码

程序员小富

git

Apache Flink 在移动云实时计算的实践

Apache Flink

大数据 flink 开源 编程 实时计算

烂书!《气候经济与人类未来》

懒时小窝

烂书

编程术语的类比(二)

北极的大企鹅

学习 思维转换 编程思想

Docker原理——数据包怎么发出去

kof11321

容器 原理 容器网络方案

OceanBase 推出全新品牌 slogan

OceanBase 数据库

数据库 oceanbase 品牌slogan

深度剖析数仓CN增量备份技术

华为云开发者联盟

华为云 备份 GaussDB(DWS) 备份容灾 CN增量备份

不联网的情况下,使用 electron-builder 快速打包全平台应用

编程三昧

Electron 3月月更 electron-builder

注入语句详解(get注入,cookie注入,搜索型注入等)

喀拉峻

网络安全

深入分析沙箱逃逸漏洞

网络安全学海

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

数字化时代,银行如何建设管理小程序平台促进线上金融业务发展?

FinClip

小程序 银行

千万级学生管理系统的考试试卷存储方案

阿卷

架构实战营

教你3种Kafka的指定副本作为Leader的实现方式

华为云开发者联盟

Leader Kafk 副本 AR顺序

别再用 Redis List 实现消息队列了,Stream 专为队列而生

CRMEB

ZStack 与龙蜥操作系统完成兼容性认证,共同打造安全可信的云+OS技术生态

OpenAnolis小助手

云计算 开源 操作系统 云平台

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