在不进行“太多”设计的情况下,我们如何在Sprint计划期间提供有效的时间估算?


9

我的团队正在跟上Scrum的发展步伐,但是我们大多数人对非敏捷或“伪”敏捷方法更加熟悉。对我们来说,最大的障碍是召开高效的Sprint Planning会议,在会议中我们将积压的项目分解为任务,并估算工时。(我使用的是VS2010 Scrum模板中的术语;如果我在某处使用了错误的单词,则表示歉意。)

当我们试图确定一项任务需要花费多长时间时,我们经常陷入在代码级设计功能的陷阱(表布局,接口等),以便弄清该任务需要多长时间。 。

我很确定这不是进行这种设计的合适位置。我们应该在sprint期间安排这些设计会议的任务。但是,我们在弄清楚如何为任务提出有意义的估算时遇到了麻烦。

有实践习惯/技术/等吗?在不知道您打算如何实现某个功能的情况下做出判断需要花费多长时间的判断?如果设计完成后我们的时间估算值将发生显着变化,那么我们如何才能提前适当地预算Sprint待办事项?

编辑:

请澄清一下,因为一些评论/答案非常有效,但我认为解决的是错误的问题。

我们知道我们正在做的事情是不正确的,我们应该在此设计的sprint中花费时间。从概念上讲,所有开发人员都明白这一点。如果我们开始进入杂草丛生,我们还将招募具有Scrum经验的团队成员,以保持我们的正常运转。

问题在于,如果不经过这个设计过程,我们将很难为任何事情提供具体的时间估算。我们一直在说这样的话:“好吧,如果我们以此方式设计,可能会花费8个小时,但是如果最终不得不以其他方式这样做,那大约需要32个小时,但是一旦开始尝试编写,它可能不会那么糟糕...”。

我还假设一旦我们有了一定的历史速度,这个过程就会变得更好,但是我们正在使用的许多技术和架构模式对我们来说都是新的。但是,如果潜在的错误估计仅是适应此过程的自然组成部分,那么我们将只需要重新调整自身以接受:)


“适当”是什么意思?
罗伯特·哈维

我的意思是,我认为团队不应该在sprint计划中花费25-30分钟来进行功能的技术设计,但这只是我的直觉(这会使我们的计划会议进行
得很

你是对的迈克尔。我刚刚想到了其他一些要添加到下面的答案中的内容。本质上,如果您是在没有某种商业赞助商的情况下进行冲刺计划,那么您实际上并不知道该优先考虑什么。下面更多。
伊恩

1
您有两种选择。您可以延长设计阶段的时间,以便获得足够的估计,或者可以在自己施加的时间限制内生存并接受疯狂的猜测。您还可以将时间花在设计的sprint中(无论如何都必须这样做),并在设计阶段完成时修改工作估算。
罗伯特·哈维

我想“修改您的工作估算”部分对我们来说是一个艰苦的工作;有些团队成员比其他团队成员更加坚持认为,如果我们不知道他们是对的,我们就不会给出工时估算。我也希望并期望随着时间的推移我们会变得更好,但是很明显,“其他所有人”都能做到这一点,所以我觉得我显然缺少一些东西。
KutuluMike 2012年

Answers:


14
  1. 安排一个定期的“修饰”会议,在这里进行这些设计讨论。我所在的团队在计划前一天,每个sprint都有一次。这样做的目的是使设计足够明确,以使团队可以就整个故事的时间估算达成一致。您可以考虑在本次会议中进行任务分解,以便计划纯粹是决定要筹集多少资金的一种练习。换句话说,在开始实际工作之前,应该先在sprint中进行设计。

  2. 考虑使用计划扑克,即“努力”的点数/单位,而不是工时来估算任务。还请尝试尽可能地分解故事。故事越长/越复杂,估计的准确性就越小。

  3. 在计划中,Scrum主管应通过停止任何超出“解决”范围的讨论来使计划保持正确。那时,团队成员需要迅速就估算达成一致,通常给出一个上限/最坏情况的编号。如果任务最终比您计划的要容易得多,那么接手更多的工作要容易得多,这比处理由于任务花费比计划更长的时间以及故事滚动成多个冲刺而导致的计划延误要容易得多。

  4. 讨论在冲刺结束时回顾中如何得出估算值。特别是如果有任何相距遥远的地方。团队是否从故事的进行以及他们对故事的预期中学到了什么?Scrum主管应始终专注于可对您的设计/估算过程进行的可行更改。


我将其标记为答案,因为它似乎可以解决问题的根源:在计划会议之前,我们需要做更多的前期工作以便一旦到达那里,我们就更好地了解积压项目和涉及的任务。
KutuluMike 2012年

10

我认为问题在于您正在尝试估计时间。别。

估计复杂度。查看需求(希望是用户故事),并评估团队认为相对于其他需求或用户故事而言,如何构建和测试需求的复杂程度。有时您会错,但通常您会对某些事情会变得多么困难有个好主意。您还会发现,复杂程度大致相同的项目往往需要花费相同的精力才能完成。

因此,复杂性排名成为与产品积压中的用户故事相关的“故事点”。在完成了一些冲刺之后,您将了解在一个冲刺中可以通过多少个故事点,这就是您的速度。届时,您将对每个项目花费多长时间有了更好的了解。

我强烈推荐Mike Cohn的“ 应用用户故事”


这是有道理的,但是我们试图遵循VS2010 Scrum模板,其理论是许多知道自己在做什么的聪明人都想到了它。如果我们不估算时间,我们如何跟踪诸如在任务上的剩余工作或生成燃尽图的事情?
KutuluMike 2012年

您不会跟踪任务上剩余的工作。要么完成,要么没有完成。在冲刺开始时,团队致力于根据其优先级,复杂程度以及团队能够处理的复杂程度的最佳猜测来完成一定数量的故事。在Sprint计划会议中,他们应该确定完成故事所需的任务。这些任务构成了sprint的待办事项-您可以说它们对于sprint来说各是1分。完成每个步骤后,就可以将它们检查完成。
马修·弗林

产品积压工作中的复杂性点与Sprint积压工作中的任务点之间不需要有任何关系。您每天更新sprint积压,检查任务。当您演示完完整的故事后,您可以在sprint末尾更新产品积压。
马修·弗林

嗯,那我们真的做错了。我知道做Scrum的方法不止一种,但这是我们正在使用的指南,它说来跟踪任务的剩余工作:msdn.microsoft.com/zh-cn/library/ff731574.aspx。那不对吗?
KutuluMike 2012年

3
啊啊 我知道了。这样做没有错,但显然对您没有特别的帮助。《 Scrum指南》说:“随着工作的执行或完成,估计的剩余工作也会更新”,因此MS模板很有意义。就像我说的那样,它实际上并不是一个有用的指标-没人能很好地估计任务的剩余工作量,而您会浪费时间这样做。使您的任务小而二进制(0 =完成或1 =不),您就可以衡量已完成的工作和剩余的工作,而不必考虑它。
马修·弗林

6

我知道您的问题是关于在规划中避免设计的。但这有点像XY问题

我去过你那里 我想给您提供一些中间状态,而不是给您可能会逐步改进的内容。

我们的团队在做与计划和执行工作特别相关的三件事。这些帮助我们避免了设计混乱,并避免了不正确的时间估算。

自动化验收标准

我们的故事是通过他们的自动接受标准的数量来指出的。这意味着,如果我们要编写自动化测试来确认故事已完成,那么它们将是什么?

例如,“当用户在运行iOS 6+的iPad上单击“播放”时,视频开始播放。” 实际上可能很难自动执行此测试,但这是故事的接受标准(AC),并且贡献了一点。

我们使用斐波那契标度,并且我们总是四舍五入。因此,如果一个故事具有四个可自动接受的条件,那么它就是一个五点故事。

我们最大的故事点数是8分,但我们很少有。如果故事具有五个以上可自动化接受的条件,我们将找到一种将它们拆分的方法。

美容前

我们在星期一举行开工会议,但是在进行团队整理的时候进行了美容会议。在进行修饰之前,团队成员将通过描述结果并按可自动接受的标准进行刺探来预先整理一个故事。

整理使团队的专业知识能够处理预先整理的故事,提出未指定的要求,分解故事等。

除接受标准外,有时我们还会列出任务,但这些任务不是时间估计的。我们从不估计时间。任务只是支持标准需要完成的工作陈述。

限制在制品

传统的Scrum尝试将工作时间限制为冲刺持续时间。我们发现,这是人为地导致我们急于赶紧冲刺的截止日期,因为冲刺在星期五结束,导致我们的周末丧命。

另一种方法是在任何给定时间限制正在进行工作。我们已经迁移到后者,并为此感到非常高兴。

一旦故事从待办事项移至进行中,我们将其描述为处于以下几种状态之一:

  • 暂停-无法进行团队合作,因为我们正在等待一些团队以外的活动
  • 开发中-努力达到验收标准
  • 需求测试-我们认为我们已经遇到了审核委员会,正在等待其他人进行验证
  • 在测试中-正在根据交流评估故事,正在解决错误
  • 准备部署-在下一个可用的机会上线

然后,我们使用每个州的故事数量来推动团队关注。例如,开发人员可能会接受新的故事,但是如果我们有很多故事正在测试中,那么最好是帮助他们解决现有故事。


3

首先,要认识到在这种情况下不可能进行准确的估计。如果做错了,请不要紧张。但是,您仍然需要一个粗略的想法来进行计划,并且真正解决完全不确定性的唯一方法是在估计中添加更多的故事点。如果您不知道它是5还是13,请使用13。

将故事分解得尽可能小也很有帮助。我们经常有一个研究/设计故事,其唯一目的是做足够的工作以更好地了解如何进行功能,然后功能故事本身进入后续冲刺。考虑一下为什么这样做。即使您不知道某件事情会有多困难,通常也可以从过去的经验中准确地知道要花多长时间才能找到答案。


2

您可以在这里做两件事。

首先有一个Scrum主管,他的角色是监视讨论并在出现问题时说“嘿,您正在重新设计”。这比想象中的要难,每天轮流让人们加入其中,最初让每个人都成为Scrum的主人,以便任何人都可以使用。

其次,如果要在sprint计划中进行设计,则需要能够区分两种情况:对任务持续时间的了解不足以进行呼叫,或者只是因为这样做比较有趣而只是在进行设计。

同样,Scrum管理员应该在这里介入,并告诉您将其放回原处,直到您知道足够的时间来安排它,或者让您停止设计并回答原始问题(需要多长时间)。

因此,如果您正在进行冲刺计划,那么有一个商业赞助商在那里与您一起审阅积压订单并优先考虑他们希望首先完成的工作就很有意义。如果这样做,您会发现在会话期间进行设计变得更加困难,因为它们会变得焦躁不安,并最终不想来。


实际上,我们正在添加一个Scrum管理员(具有Scrum经验的人,受雇为我们担任此职务),希望对您有所帮助。但是我们大家都认识到这是一个问题,我所苦恼的是如何做得更好
KutuluMike 2012年

好了,您已经确定了问题所在。您在会议中设计。如果您发现自己正在设计,那么下次开会时,请停下来,说“我们不够了解”或“我们知道不够”。如果您不了解,请将其搁置,直到获得更多信息为止(计划会议之外的设计会议)。如果您有足够的信息,请安排(或不安排)并继续。
伊恩

我应该补充一句话。雇用Scrum管理员时要小心。对于所有敏捷方法,关键是要灵活。采用有效的方法,更改无效的方法。对于喜欢将程序记录在案并计划计划的公司而言,这是一个巨大的变化。
伊恩

0

我们仅根据一些有限的讨论来估计在sprint计划过程中的故事“冷”。尽管组建了重点相对狭窄的团队,但估计的确是非常不准确的……主要是由于存在大量未记录,未注释的遗留代码,对实际发生的事情并没有真正的全面了解。自原始文档撰写以来已发生重大变化的人员。

我们现在正在尝试的是在计划调查每个故事之前花一些时间-在这里,只有一个开发人员将调查一个故事...我们希望这将意味着调查的开发人员将能够为您提供一些澄清和见解。帮助估计。到目前为止,这在尝试过的场合有所帮助。

我尚未确信,额外的调查确实可以使估算值更加准确,足以证明费用合理,但我们将尝试一下,以期数分钟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.