浅谈敏捷估算与规划

最近在看《敏捷软件开发实践:估算与规划》,结合自己在工作的中的实践,浅谈一点自己的想法和总结。

总的来说敏捷估算与规划更关注纵向的特性,而非横向的活动。根据“大小/速度=时间”以及“故事点/实际时间=速度”的关系,敏捷项目规划能灵活地结合时间、速度、大小这些变量来规划和调整。产品愿景按照优先级和速率梳理出分层的发布计划或者迭代计划,再按照优先级进入迭代开发。敏捷估算与计划更强调集体合作和响应变化。敏捷计划是具有欺骗性的。在某个层面上,它相当容易——建议一些故事卡片,确定它们的优先级,把它们分配到不同的发布迭代周期,然后添加其他的细节来获得下一轮的迭代计划。

计划对任何敏捷开发项目都是不可缺少的组成部分。首先,敏捷开发小组会进行大量的计划活动,但这些活动被更为均衡地分布于项目的整个开发过程。其次,敏捷开发小组会直接面对不确定性这一被许多非敏捷开发小组所忽视的关键因素。计划重要吗?——当然重要。随着知识的获取和不确定性的降低调整计划重要吗?——当然重要。

敏捷开发方法强调实际交付价值而不是做出一些非凡的但是无法实现计划和承诺。获得适应变化的应用环境的灵活性,与绝对地遵守原始计划——是互相矛盾的。

减少目标不确定性(我们到底要构建什么)和方法不确定性(我们如何构建它)。

计划是基于我们在某个特定时间点上所知道的东西做出的,而不确定性则是对我们所不知道的事情——对目标或者方法——的另一种表述。

1.规划的目的

好的规划过程通过以下活动来支持这种对价值的探求:

♦减少风险(估算能揭示项目中存在的部分黑暗角落,提高对项目中的各项风险认识)

♦降低不确定性(持续的规划能逐步明确项目中的某些不确定性)

♦提供更好的决策支持(项目规划时所作出的许多决策都是折中后的决定,我们经常在功能特性与投入的精力、成本和时间之间进行类似的折中,要做出这些决策,就需要对成本和收益进行估算。)

♦建立信任(频繁地、可靠地交付承诺的功能可以在产品的开发人员和产品的客户之间建立信任。)

♦传递信息(计划可以传递针对项目的期待,并且描述完成项目的可能路径之一。)

2.规划失败的原因

基于活动而不是基于特性进行计划(特性才是客户价值的计量单位。基于活动的计划导致超期的原因包括:活动不会提前完成,延误沿着计划表向下传递,活动不是互相独立的)

♦多任务处理导致更多的延迟

印象最深的是这个图:假设在多任务切换时候对速度没有影响,虽然总时间没变,但是每项任务的时间都更长。更何况,在实际中,多任务切换不可能不影响实际的速度。

♦不按优先级开发特性

♦忽视了不确定性(传统规划方法的第四个缺点是无法意识到不确定性的存在。反映这种不确定性的方法之一是将结束时间表述为一个时间范围。随着项目的进展,项目的不确定性和风险会逐渐减少,估算就可以进一步细化,变得更加精准。)

♦把估算当作承诺(每个估算都包含了一定的可能性,他表示该特定工作在估算的时间长度内完成的可能性,并不能当成承诺。)

3.敏捷规划方法

规划更多的是关于你要学习什么,而不是它(产品)最终是什么。当我们承认在某种程度上不知道结果,也不可能提前知道结果的时候,规划就成为一个设定并修正目标的过程,而这些目标指引我们实现一个更长远的目标。

(1)规划的不同层次

设定和修正目标的时候,重要的是记住我们无法看到地平线以外的东西,而且当我们试图规划的距离超出视线范围越远,计划的准确性降低得就越迅速。


产品规划要求产品所有者超越本次发布以外,为已发布的产品和系统的发展做出规划。资产规划则是选择最合适的产品,来最好地实现公司战略规划所确立的远景。

(2)满意条件驱动发布规划和迭代规划


团队研究产品所有者的满意条件时,会包含常见的黄金三要素,范围,进度,成本。敏捷开发中,质量是不可协商的。

4.使用故事点估算

(1)故事点是相对

故事点是用于表达用户故事、功能或其他工作的总体规模的度量单位,我们给每个故事分配一个点值。分配的原始点值本身并不重要,重要的是值得相对大小。故事点估计是对开发该功能所需的工作量、开发工作的复杂性以及蕴藏的风险等方面的综合。

两种常用的故事点估计:

一、以将要处理的用户故事中,从您认为最小的那些故事里面选择一个,然后设定它被估计1个故事点。

二、选择一个基本处于中等的用户故事,然后给它分配一个大致处于你的取值范围中间的点值。

(2)速度 velocity

要理解为什么没有单位的故事点估计有可能会有效,就必须介绍速度这个概念。速度是对开发小组的进度率的度量。可以通过计算小组在一次迭代中完成的用户故事点数的总和来得到速度。


所有功能的故事点估计值加在一起,就会得到对项目总体规模的估计。如果知道开发小组的速率,就可以通过用规模除以速度来估计出迭代的次数。把这个持续时间映射到日历上,就可以得到进度表。基于故事点的估计把对工作量的估计和对持续时间的估计完全隔离开。

敏捷估计与规划的一个关键原则是先估计出规模然后推算出持续时间。

速度修正估计误差

随着开发小组在项目的用户故事上取得进展,他们的速度在最初几次迭代中就会显示出来。基于故事点的估计方法的美妙之处就在于对速度的使用使得规划误差可以自我修正。

5.使用理想日估计

理想时间(ideal time)是某件事在剔除了所有外围活动之后所需要的时间。

耗用时间(elapsed time)是时钟(也许是日历)上显示出流逝掉的时间。

两种对持续时间的度量分别有自己的用途。

用理想时间而不是耗用时间来预测某件事的持续时间总是更准确,而且要容易得多。

当不考虑机构性开销的时候,理想日可以被看作另一种对规模进行估计的方法,就像故事点一样。可以用速度把以理想日的数量表示的规模估计转换成对持续时间的估计。如果选择使用理想日进行估计,就应该为每个用户故事分配一个总的估计值。

6.估计方法

收益边界渐减法则:即回报的增长幅度随着投入的增加而减小


无论投入多少工作量,估计的准确度都不会达到坐标轴的顶点。只需要很少的工作量就可以让估计的准确度从基线显著上升。开始规划时,就应该考虑,需要达到哪个准确度是有利的。

(1)共同估计

最佳的估计是由包括将要做此工作的人在内的小组合作得到的。原因一:敏捷开发中,往往不知道一项工作将有特定的哪个人来完成。原因二:某个人的估计其他人可能有别的考虑。

(2)估计的尺度

●1、2、3、5、8 斐波那契数列

●1、2、4、8 每一个数都是前一个的两倍

0有可能会作为估计范围中的一个有效值,如果我们想把所有功能都保持在一个10倍的范围内,那么极小的功能分配非零值会限制最大功能的规模。且如果工作确实更接近于0而不是1,开发小组可能也不希望在计算速度时考虑完成这些功能的贡献。

离最近几次迭代更远的用户故事或者其他对象可以被当做史诗用户故事或主题。为了估计这些大对象,可以在后面添加大的数字:

●1、2、3、5、8、13、20、40、100

(3)得到估计值的方法

●专家意见

●类比

●分解

(4)规划扑克

更小规模的会议

开发小组需要在两个不同时期打规划扑克。首先,在项目正式启动前或者在它的第一次迭代中。对用户故事的初始合集进行估计需要开发小组进行两到三次1-3个小时的会议。其次,小组需要在开发过程中对在迭代中发现的新用户故事进行估计。

规划扑克会有效的原因:首先,规划扑克做估计时把多条专家意见放在了一起,形成了跨功能的小组,比任何单独的个人更适合做估计。其次,规划扑克期间会进行活跃的对话,规划者会被要求证明自己的估计的正确性。第三,对个人估计的平均可以引向更好的结果,对估计进行团体讨论也可以得到同样的效果。最后,规划扑克起作用也因为它很有趣。

7.重估的情况

始终牢记故事点和理想日是对规模的估计,就会发现只需要在我们确信一个用户故事的相对大小发生了变化的时候,才需要重新估计。

8.在故事点和理想人天之间进行选择

选择故事点的优势

●故事点有助于驱动跨功能的行为

●故事点估计不会过期

●故事点是对大小的纯粹度量

●故事点估算通常更快

●我的理想人天不等于你的理想人天

有利于理想人天的考虑因素

理想人天在团队以外更容易解释

♦ 理想人天估算更容易开始

♦ 理想人天便于预测速度

9.为价值做规划

要建立产品功能(范围)、进度和成本的最佳组合,需要对发布的产品中将要包含的用户故事和主题的成本和价值进行深远的考虑。

(1)确定主题的优先级

即使我们有时间,也很少会有足够的时间来做所有的事。所以要确定优先级。尽管确定优先级的责任由整个开发小组共同承担,但成果由产品所有者享有。估计少量的功能往往是很困难的。我们将单个的用户故事和功能聚集到一些主题中。然后,根据用户故事和主题之间的相对关系,确定它们的优先级,来满足建立发布计划的需求。选择主题的时候应该让它们都能都能分别独立地定义一组对用户或是客户有价值的功能。

确定优先级时的因素:获得这些功能带来的经济价值;开发所需的成本;所产生的学习和知识的量及重要性;减少的风险。

(2)确定经济优先级

收入的来源:新收入、增量收入、留存收入和操作效率

经济指标:金钱的时间价值、净现值、内部收益率、投资回收期、贴现回收期

(3)确定渴望度优先级


阈值功、线性功能、兴奋点

阈值功能是产品要成功就必须具备的那些功能。它们常常也称为必需的(must-have)功能。改善阈值功能的性能或者增加阈值功能的数量对客户满意度没有多少影响。

线性功能就是一个处于“越多越好”状态的功能。这些功能称为线性功能的原因是客户满意度与功能的量线性相关。一个这样的功能表现得越好(或者它越多),客户就会觉得越满意。因此,产品价格常常和线性特性相关。

最后,兴奋点和惊喜点是那些提供了很高的满意度,并常可以为产品增加额外价格的那些特性。但是,缺少兴奋点和惊喜点并不会让客户满意度降到中性以下。

实际上,兴奋点和惊喜点也常称为未被了解的需求,因为客户或用户在看到这些特性之前并不知道自己需要它们。

用Kano模型评估主题(依赖问卷调查)



如果对20-30个用户进行调查问卷,就可以集中他们的答案并确定分布情况


相对权重:另一种方法(依赖于专家判断)


相对权重方法提供了一种使用一个值来对实现一个功能所带来的的收益、不实现它所带来的的惩罚和实现它的成本进行评估的方法,这个值就代表了这个功能的优先级。价值优先级=价值百分比/成本百分比

平时工作中,可能调查问卷的方式更广泛一些,对用户进行分类分组,能得到广泛的数据支持。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容