Agile 你如何在“之间划清界限?”;“敏捷开发”;及;范围蠕变;?

Agile 你如何在“之间划清界限?”;“敏捷开发”;及;范围蠕变;?,agile,Agile,在迭代开发环境中,比如敏捷环境中,如何在常规迭代和范围扩展的开始之间划清界限?在什么时候你会告诉客户,“不,我们不能做那个改变,因为?”这在scrum方法中是非常简单的。在Scrum中,您可以设置您的冲刺时间,例如2周,然后将项目放入其中。当客户机需要添加某些内容时,它会被放入待办事项列表中,并将在未来的迭代中完成。如果他们现在想要,你就必须向他们解释,为了适应迭代,会放弃一些东西。敏捷最主要的弱点是,大多数做“敏捷”的人都是凭直觉行事。事情不应该在一次迭代中改变,但你应该允许在迭代之外的改变。

在迭代开发环境中,比如敏捷环境中,如何在常规迭代和范围扩展的开始之间划清界限?在什么时候你会告诉客户,“不,我们不能做那个改变,因为?”

这在scrum方法中是非常简单的。在Scrum中,您可以设置您的冲刺时间,例如2周,然后将项目放入其中。当客户机需要添加某些内容时,它会被放入待办事项列表中,并将在未来的迭代中完成。如果他们现在想要,你就必须向他们解释,为了适应迭代,会放弃一些东西。

敏捷最主要的弱点是,大多数做“敏捷”的人都是凭直觉行事。事情不应该在一次迭代中改变,但你应该允许在迭代之外的改变。

对于我来说,当添加新函数而没有明确调整计划时,范围会发生蠕变

使用敏捷方法,用户可以深入地决定哪些故事具有优先实施权。因此,一件式功能与另一件式功能的权衡更为清晰


我不会称之为范围爬行,让用户按照他们影响的顺序获得他们选择的功能。

敏捷迭代有固定的范围;客户同意在迭代期间不更改范围(尽管他们可以取消当前迭代并重新开始)。在迭代之间,范围可能会发生巨大的变化


鉴于上述情况,敏捷项目中不可能出现定义上的范围扩展。范围蠕变的概念是一个遗留的瀑布概念,它假设整个范围是预先知道的,并且在项目期间不会改变。只要每次迭代都有一个固定的目标,这个概念就不适用于敏捷方法。

如果客户愿意支付,为什么你要说不?如果只有一个客户为这一切买单,那么他几乎完全有能力开发什么(“如果你不这么做,我会拿我的钱告诉别人去做”)。但是,当然,如果产品有大量的受众,那么你需要对产品应该做什么有一个明确的关注点,因为添加不必要的功能可能会降低其可用性


我想到了一些情况,开发团队可能会建议客户机不要实现某些特性。在那之后,如果客户想实施它,这是他的责任。如果该功能与其他更重要的功能冲突,那么最好不要添加它。如果与实现该功能的成本相比,该功能没有给客户端带来太多价值,那么在其上花费大量资金可能并不明智。此外,在某些情况下,将某些功能作为一个单独的程序来实现可能更有意义,如果它们的用途与原始程序大不相同-最好有许多小型应用程序,每个应用程序都能做一件事,并且做得很好,而不是一个庞大的应用程序,它什么都做,什么都不做。

你为什么要说不?我不知道您使用的是哪种风格的敏捷开发。 Scrum是最具规范性的/有明确的规则来满足这种情况

  • PO(产品负责人)维护(待办事项列表)积压工作。他决定哪些项目进入待办事项列表及其优先级。采购订单可在任何时间点向待办事项添加更多项目。但是,他不能自由地更改sprint积压工作(即团队在未来几周内已经开始工作的事情)
  • 在紧急情况下(一些新知识),采购订单可以选择放弃sprint,并使用不同的积压项目启动一个新的sprint

  • 范围爬行不应该再发生了——除非你改变规则。你有一辆卡车可以装载500个箱子(发布计划),要在计划中添加100个箱子(新功能),采购订单必须首先从其原始套件中移除(描述)100个最不想要的箱子

    我认为有两种范围蔓延:

    1.)在不增加开发商可用付款/预算/时间的情况下扩大项目范围。这可能发生在敏捷过程中,当pm/scrum大师或其他任何人不坚持这些数字,并将另一个特性挤进项目/迭代/冲刺时,我们和其他任何过程一样

    2.)软件范围的扩展,超出其可用范围。我认为敏捷过程实际上可能有助于解决这类问题,因为特性的成本非常直接地传达给项目所有者,因此成本应该非常透明。但是,对付这种范围蔓延的主要工具在任何地方都是一样的:对于你必须检查的每个特性:我们真的需要它吗?我们在这个软件中需要它吗?还是它属于其他地方?或者在管理方面:建造成本是多少,维护成本是多少(经常被遗忘),它能增加多少收入。

    你在什么时候告诉客户“不,我们不能做那个改变,因为”的答案取决于的价值

    通常没有很好的理由说“我们不能做这个改变”。有些事情你可能会说:

  • 我们可以这样做,但这将意味着X、Y和Z从冲刺目标中消失
  • 我们可以这样做,但这将意味着推迟发布时间表
  • 我们可以这样做,但它需要额外的测试
  • 我们可以这样做,但首先我们需要X小时的重构
  • 我们可以这样做,但首先我们需要稳定或恢复正在进行的特性X
  • 我们可以做到这一点,但我们可以更快地实现X,并且仍然提供大部分相同的价值
  • 我们也许能做到这一点,但我们需要在估算之前把它解决掉
  • 我们也许能够做到这一点,但我们需要花X天的时间做一个峰值,然后才能确定
  • (1) —(5)可以归结为“编写代码需要时间”——随时间而变化