前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >速度(Velocity)不背这个锅

速度(Velocity)不背这个锅

作者头像
ThoughtWorks
发布于 2020-08-28 09:09:21
发布于 2020-08-28 09:09:21
4710
举报
文章被收录于专栏:ThoughtWorksThoughtWorks

不管是故事点还是理想人天的估算方法,估算的都是用户故事的相对大小,跟实际完成时间没有直接关系。估算是为了更好的计划,不能把估算当做一种承诺;速度是可变化的,可以用来修正计划的误差。


01. 那些对速度的误解

误解1 - 点数跟天数对应?

用户故事的估点跟天数对应,1个点的故事对应2天的工作量;

统计每个用户故事所耗费的天数,如果点数对应的天数到了,先标记为“开发完成”,第二天Desk check就不用增加天数了;

为了赶进度,由结对改为不结对,原来结对的两人并行做不同的task,天数还是按照结对的情况来统计...

问题:

  • 虽然按照故事点来估算,但是每个点都跟天数对应起来,而且不是理想人天,是实际耗费人天;
  • 把这种估算当做一种承诺,要求故事需要在点数对应的天数内完成;
  • 用户故事的只是关注开发完成。

到底该如何估算?点数又该如何使用呢?

误解2 - 做不完了给用户故事涨点?

如果用户故事没有在预定的天数内完成,需要涨点,那么得先说服客户;

列出涨点原因并且跟客户解释不是一件容易的事情,团队有时候宁愿加班加点按照原来的估点完成也不要去跟客户解释...

或者,为了避免以后涨点的各种麻烦,在估算的时候多估一些点,导致估点不准确...

问题:

  • 开发团队的估算不应该受到外部因素的影响;
  • 虚估点导致的估算不准确失去了估算原本的价值和意义。

估算的意义是什么?什么时候需要调整点数进行重估?

误解3 - 速度驱动一切?

周报里的速度保持稳定,每周每对pair在2个点上下;

性能调优,客户觉得目前看不到价值不给点,所以团队就不做了;

技术改进,同样的,客户看不到价值不给点,就不做了;或者团队实在无法忍受想要改进,那就从别的功能用户故事里多估算一些点来留时间给做技术改进;

目前组内开发速度不够,用户故事都做不完了,生产环境的support能给别的组就给别的组做吧,那个太耽误开发进度了!

问题:

  • 一切围绕速度,如果比较顺利,满足了速度要求,团队可能就放松了,不一定会做更多的特性开发;如果不顺利,速度赶不上,那就可能面临着加班或者愁着怎么能给故事涨点以增加速度;
  • 不再是业务价值驱动,不会正常的从价值的角度去考虑工作的优先级,速度被严重的误用。

速度有什么用?又该如何利用呢?

带着这些误解中引发的疑问,我们一起来探讨一下。


02. 两种估算方法

1. 基于故事点的估算

故事点是纯粹对用户故事大小的相对度量,不应该跟任何的天数或者工作量等关联。

用户故事本身的大小属性不会发生变化,基于故事点的估算不会过期,不会受到团队技术能力和业务领域熟悉度的影响而发生变化。比如,一个点数为3的用户故事,它的复杂度相对于那个点数为1的基准故事来说不会发生变化,不管谁、也不管用什么技术来开发这个用户故事。

故事点的大小是指团队所有角色工作加一起的统一估算数值,需要多个角色一起合作讨论才能得出这个估算,因此,故事点的估算方法有利于帮助团队实现跨功能合作的行为。特别注意,不应该按照开发的点数、测试的点数去估算用户故事的大小,需要结合一起给出一个唯一的数值。

2. 基于理想人天的估算

理想人天的估算需要基于这样的假设:

  • 所估算的故事是唯一要做的工作
  • 所有需要的东西在故事开始前都会准备好
  • 故事开发过程中不会被打断。

在不考虑其他因素的情况下,这种理想人天的估算是类似于故事点的估算方法,同样是一种相对大小的估算。

理想时间跟耗用时间是不同的。比如一场NBA比赛的理想时间为12分钟一小节,但是实际比赛耗用时间需要比这个时间长很多,因为中间有暂停、死球等时间。理想人天的估算是基于理想时间的,在软件开发过程中会有多个因素导致实际耗用时间跟理想时间会有很大的不同,比如开会、讨论等。

理想人天的估算方法很容易让人根据一个故事所需完成的任务多少去估算,而不是从这个故事跟其他故事的相对大小角度去考虑;不同人估算的理想人天也会有不同,导致估算可能会不太准确。这在估算的时候是需要特别注意的。

在团队不熟悉故事点估算方法的初期,理想人天的估算方法更容易开始;理想人天的估算对于团队外部人员更容易解释清楚,也更方便预测速度。

哪种方法更好

从前面的介绍可以看到,两种估算方法各有利弊,都是对于用户故事大小的相对度量,不能跟实际完成天数关联起来。通常,更推荐使用故事点的估算方法,根据团队自身情况也可以选择采用理想人天。


03. 什么情况需要重估

前面提到的误解里对于用户故事没有在预定的天数内完成考虑给故事涨点,也就是重估,这种以进度来驱动重估的做法是不对的。没有在估算天数内做完可能有两个方面的原因:1. 估算不准确,低估了;2. 被其他工作所打断,或者团队技术原因导致进度较慢...

发现估算不准确的情况可能需要调整,但不能是因为做不完赶不上进度而调整。当所有用户故事的相对大小是准确的时候,不需要重估;只有当其中一个或多个用户故事的相对大小不准确的时候,需要调整该部分用户故事的点数大小。

我们来举例解释这个问题:

1. 不需要重估的情况

假设一个团队有4个复杂度相当的用户故事,原本估算均为3,预计能够在一个迭代完成的。在第一个迭代结束后,只完成了其中的两个用户故事,也就是完成了6个点,团队感觉这两个用户故事比预估的要大,想调整为原来点数的两倍,由6变成12;由于四个用户故事的大小相当,剩下的两个用户故事也需要调整为原来的两倍,剩下的工作量也变成了12,同样的可能还需要一个迭代才能完成。这样的重估就没有意义。

因此,如果只是发现用户故事实际耗费时间比原来预测的要多,但是故事的相对大小并没有问题的时候,不需要重估,而是要去回顾和分析耗费时间长的原因,并采取相应的措施去改进。

2. 需要重估的情况

假设团队由A、B、C、D四个用户故事,刚开始给每个故事的估点均为3。在开发故事A的过程中发现A比原来估算的值要大,需要调整为5才合适,另一个类似的故事B也是一样,需要调整为5;但是C和D跟它们不一样,估算值应该是准确的,还可以保持为3。这种情况下对A和B的重估是有价值的,因为相对大小发生了变化。


04. 速度的作用

速度是对团队的进度生产率的度量,可以通过计算团队在一次迭代中完成的用户故事所分配的故事点数的总和来得到。比如,完成5个3个点的用户故事,速度是15;如果完成了2个5个点的用户故事,速度是10。关于“完成”的定义不能只是到“开发完成”,而应该是“交付完成”,开发完成不能说明什么,可能后续测试还不能过关、有很多缺陷需要修复等情况。

速度可以修正计划的误差。估算把对工作量的估算和对工作时长的估算完全隔离开来,将必须完成的所有用户故事的点数总和除以迭代的速度,可以推算出迭代的次数,也就是项目持续时间。我们通过一个例子来看速度如何修正误差:

假设团队估算出项目中包含了200个故事点的工作,一开始认为可以在每次迭代中完成25点,也就是将用8次迭代来完成工作。但是,在项目开始以后,团队发现速度只能达到20点。这样,不用对任何工作进行重估,就可以正确的认识到项目需要10次迭代,而不是8次。

速度不会是稳定不变的。根据团队对技术和业务领域知识的熟悉程度,速度可能会增加;而随着团队人员调整,有新人加入以后,速度可能会下降。在故事点估算准确的情况下,速度正好是反映团队状态的一个参数。不应该为了保持速度的不变去调整估算的结果,而应该根据速度的变化来观察和分析团队的健康程度。


05. 估算与计划

估算是为了更好的做计划,通过估算推算出的持续时间是一种可能性,而不是对交付时限的一种承诺。估算的是用户故事固有的属性,其大小不应该受到交付时长的干扰。老马在文章《WaterfallProcess》里讲到敏捷开发里的计划应该是适应性的,而预测性的、承诺性的计划不属于真正的敏捷。我们需要认真做好估算,尽量的准确,利用速度并根据团队状态和其他项目因素来适时地调整、修正计划。

客户都会希望更短的时间交付更多的功能,但是不要让客户只把目光关注到进度上,要引导客户更多的关注交付的业务价值。因此,在考虑任务的优先级的时候,需要以价值为导向,而不是进度为导向。比如,重构等技术改进、性能调优、生产环境的支持,这些可能比新的特性开发带来的价值更大、有着更高的优先级。


06. 小结

  • 不管是故事点还是理想人天的估算方法,估算的都是用户故事的相对大小,跟实际完成时间没有直接关系。
  • 不能因为用户故事没有在预期的时间内完成而进行重估,只有相对大小发生变化的时候需要重估。
  • 估算是为了更好的计划,不能把估算当做一种承诺;速度是可变化的,可以用来修正计划的误差。
  • 始终要以价值为导向,更多的关注质量而不仅仅是进度,计划应该是可适应性的。

参考文献

  • 《敏捷软件开发实践:估算与计划》,作者:Mike Cohn,译者:金明
  • 《点之殇》,作者:冉冉,https://insights.thoughtworks.cn/story-point/
  • 《WaterfallProcess》,作者:Martin Fowler,https://martinfowler.com/bliki/WaterfallProcess.html

本文版权属ThoughtWorks公司所有,如需转载请在后台留言联系。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ThoughtWorks洞见 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
敏捷开发并非一味的追求交付速度
自2001年《敏捷宣言》发布以来,敏捷开发(Agile Development)逐渐成为软件工程领域的主流方法论。然而,许多人对敏捷开发的认知仍停留在“快速交付”、“压缩时间”的层面,甚至将其等同于“加班赶工”或“牺牲质量的短期冲刺”。
JanYork_简昀
2025/05/20
1410
敏捷开发并非一味的追求交付速度
【敏捷5.3】敏捷计划的概念与估算
我们已经准备好了用户故事,也了解到了用户故事的一些相关的知识。这个时候,就要开始敏捷计划的制定。我们将学习到一系列的概念和方法用于敏捷中计划的制定。或许他们和 PMP 中关于计划的概念和形式有很大的不同,但这也是敏捷和传统项目管理最典型的区别。
硬核项目经理
2023/03/03
3770
【敏捷5.3】敏捷计划的概念与估算
点之殇|TW洞见
今日洞见 文章作者、部分图片来自ThoughtWorks:冉冉。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本网协议授权的媒体、网站,在使用时必须注明"内容来源:ThoughtWorks洞见",并指定原文链接,违者本网将依法追究责任。 作为BA,估算会议是我目前所在项目的日常工作之一,其目的是对近期即将开发的story进行大小的预估。组织了几次估算会议后,我发现会议常常超时很久,
ThoughtWorks
2018/04/20
7560
点之殇|TW洞见
TW洞见 | 敏捷开发中的故事点数
什么是故事点数? 故事点数是敏捷团队估算用户故事使用的一种主观的计量单位。 故事点数代表了什么? 故事点数代表了完成一个用户故事所要付出的工作量。一些敏捷开发人员认为,它是一种衡量复杂度的方式。不过,只有把故事开发过程中的复杂性和风险量化并计入估算中时,这种观点才能成立。 估计的故事点数包含哪些部分? 它应该包含了完成这个用户故事的工作量。当然,它不仅应该包含完成用户故事的开发工作量,也应该包含该用户故事在类产品环境中的测试工作量。 为什么用点数比用小时和天数更好? 故事点数是通过对比以前开发过的大小相似的
ThoughtWorks
2018/04/20
3.1K0
敏捷开发之“燃尽图之谜”
我们在进行敏捷开发的时候,一般都要画燃尽图,在我们理想的思维里面,燃尽图很明白易懂的,而实际使用的时候,你慢慢发现不是这么一回事,这究竟是怎么回事呢?
源哥
2018/08/28
1.2K0
敏捷开发之“燃尽图之谜”
深入核心的敏捷开发
如何破局? 正如《管理3.0:培养和提升敏捷领导力》所说,所有变革最后的失败都是管理的问题。应该把绩效考核这种管理手段当成『敏捷铁三角』中一角来对待,那就是调整约束
yeedomliu
2021/03/16
1.4K0
深入核心的敏捷开发
浅谈软件项目规模估计——怎么估?
做事所花费的时间总是比你预期的要长,即使你的预期中考虑了侯世达定律。 —— 侯世达,哥德尔、埃舍尔、巴赫 周三的下午,我像平常一样,写着代码听着歌,突然从天而降一份莫名其妙的故事列表,说让我给个人天,用来投标用。作为一个技术异常牛逼的高端程序员,这对我来说岂不是 A Piece Of Shit…哦不,Cake。拿着列表,打眼一看就知道是做什么 — 又是个审批流系统。注册、登录、忘记密码…这些也需要时间?!哦,还要做个SSO,可能要做点数据集成,给个15人天吧!又是一堆CRUD... CRUD
ThoughtWorks
2018/04/13
1.3K0
浅谈软件项目规模估计——怎么估?
TW洞见 | 是否使用故事点,并不是重点
我曾经连续做过三个项目,没有对用户故事估点,而仅是简单的计算用户故事数量。我非常倡导这种方法,接下来我来解释下为什么。 我也算是一个“估算通”,有十年以上的估点经验,使用过功能点,用例点,构造性成本模型(COCOMO),故事点等进行过估算。随着时间流逝,我渐渐感觉到 在早期估计的越多,反而估计的越不准确。除此之外,耗时的、所谓的“科学”的估点实践,往往会对需求的确定性产生错误的期望。下面这个场景是否很熟悉? PM:你原来的范围是100个点,但是现在变成130个点了,所以你们要砍掉30个点以确保能够按照原定
ThoughtWorks
2018/04/20
4730
TW洞见 | 是否使用故事点,并不是重点
Scrum 流程应用反思 - 我们的团队
    这篇文章和《PDA感悟》一样,是对一年前学习到的相关知识的一个应用反思。     写它,是为了完成每月反思,也是为了完成我这个月的目标,更是为了积累项目流程经验。     之前已经看过刚进公司的时候,由于项目组需要使用 Scrum 作为流程来进行软件开发,所以当时看了一遍《Scrum and xp from the trenches》,主要目的是了解 scrum 中的主要内容,以促进早日融入项目组,并写了一篇介绍 Scrum 的入门级别的文章:《Scrum 大白话总结》。     至今,时间过去了也
用户1172223
2018/01/29
8630
Scrum 流程应用反思 - 我们的团队
BA都在忙些啥 - 写给新人的BA工作说明书
在一个不熟悉的人眼里,BA的工作看起来就是不停的沟通、写写用户故事、主持一下会议什么的。最风光可能是在showcase(产品展示会议)的时候,产品受到了用户和客户的肯定;最落魄可能是在IPM(迭代计划会议)的时候,被开发们不停地挑战需求的合理性和完整性。除此之外,有时BA自己也感觉忙忙碌碌、但却又不知道在忙些什么。
ThoughtWorks
2019/05/05
1.4K0
BA都在忙些啥 - 写给新人的BA工作说明书
良好的开发习惯在于节奏感
一个高效的程序员,必须要保持良好的开发节奏感。作为一名程序员,培养你的节奏感吧!这个姿势真的很重要!
张逸
2019/06/19
7472
良好的开发习惯在于节奏感
项目负责人必读:软件项目估算永远不准怎么办?
“ 软件的估算是世界难题。完成一个任务实际花费的时间总会超过计划花费的时间。但是作为客户、用户或业务,他们需要我们提供估算,以便确定一个项目的预算和交付时间。一方面我们面对一个项目,里面充满着巨大的不确定性,另一方面客户、用户或业务需要确定性,这对矛盾如何破解?如果这对矛盾无法破解,是否可以转移矛盾?”
Criss@陈磊
2019/09/27
8980
项目负责人必读:软件项目估算永远不准怎么办?
(十五)什么是敏捷估算?
估算是对交付计划产品所需的成本、进度、投入或者技能进行的预测。对项目的可行性、商业案例的投资回报进行评估非常有必要。
砖家认证
2020/01/09
3K0
(十五)什么是敏捷估算?
敏捷业务实践之计划游戏
敏捷发展至今已经有无数分支,这些分支的发展有些是为了应对不同项目增删改了一些实践和规则,使得敏捷能够应用在一些特殊的项目上。而另一些则是一些人想接敏捷之手宣传自己的思想与实践,强行在敏捷中加入了自己的想法。这些原因使得如今的敏捷五花八门,甚至出现两人在谈论完全不一样的敏捷。
Teobler
2021/02/25
6260
敏捷业务实践之计划游戏
《硝烟中的Scrum和XP》第4章 我们怎样制定sprint计划
第4章 我们怎样制定sprint计划 sprint计划会议非常关键,应该算是Scrum中最重要的活动。只是它执行得不好,整个sprint甚至都会被毁掉 举办sprint计划会议,是为了让团队获得足够的信息,能够在几个星期内不受干扰地工作,也是为了让产品负责人能对此有充分的信心 sprint计划会议会产生一些实实在在的成果 sprint目标 团队成员名单(以及他们的投入程度,如果不是100%的话) sprint backlog(即sprint中包括的故事列表) 确定好sprint演示日期 确定每日scrum会
yeedomliu
2020/04/01
5560
《硝烟中的Scrum和XP》第4章 我们怎样制定sprint计划
如何用"燃尽图"做进度管理?
很多时候,我们感觉什么都没干一天就过去了,但对领导者来说,事情最好已经提前做完了,而且是越快越好。聪明的管理者知道,“时间”是需要花大功夫去把控的限制因素,只有掌握了更多关于时间和工作的数据,我们才能更好地执行计划,在预算范围内按时完成项目。
Worktile
2019/06/03
1.8K0
如何用"燃尽图"做进度管理?
创业公司如何实施敏捷开发
说起敏捷开发,并不是因为敏捷而敏捷。这几年的敏捷开发已经被很多敏捷咨询服务商神话了,这个东西并不是神器,实施了就可以解决所有软件公司的问题,而是要结合自己公司的特点和问题摸索出适合自己的一套模式。
用户1212940
2022/04/13
4100
创业公司如何实施敏捷开发
敏捷项目管理介绍及实施
敏捷开发 Scrum Scrum就像你的丈母娘,不断支出你的问题在哪,错在哪 Scurm只是不断的暴露你的问题
Freedom123
2024/03/29
2740
敏捷项目管理介绍及实施
【软件工程】
定义 软件  =  程序  +  数据  +  文档  程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。    数据:使得程序能够适当地操作信息的数据结构。  文档:描述程序的研制过程、方法和使用的图文资料
devi
2021/08/18
1.2K0
敏捷估算
在介绍敏捷估算的方法之前,我们先来回顾一下基于人天的传统估算的思路。传统的工作量估算是估计一个绝对值,单位是人天或者人时。
PM吃瓜
2020/07/31
6450
敏捷估算
相关推荐
敏捷开发并非一味的追求交付速度
更多 >
目录
  • 误解1 - 点数跟天数对应?
  • 误解2 - 做不完了给用户故事涨点?
  • 误解3 - 速度驱动一切?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档