TL; DR
截止日期[a]是敏捷吗?... [D]截止日期被认为与[a]敏捷开发齐头并进。
这里的许多答案可能都集中在问题的工程方面。相反,我将从项目管理的角度解决这个问题。
最后期限意味着大量的前期计划,这与敏捷原则不符。取而代之的是,迭代开发模型依赖于包括即时计划在内的时间框,节奏和发布周期,而不是通常与传统项目管理期限相关联的“大型,前期计划”。
仍然可以使用敏捷方法来进行发布计划,但是计划通常基于对达到目标所需的迭代次数的估计,而不是根据法定机构设定的管理目标。这并不是说无法确定交付日期,也不能达到目标,但是定义和实现目标的方式与传统项目管理方法完全不同。
考虑时间框,而不是截止日期
但是,我参加过的每个项目都坚持设定截止日期。鉴于敏捷试图将重点放在适应性计划,灵活性和变更上;截止日期是敏捷的吗?
这是对敏捷原则的普遍误解。诸如Scrum和看板之类的敏捷框架并不关注截止日期,而是关注时间限制和可持续的交付节奏。
例如,在Scrum中,Sprint不是“最后期限”。它是一个时间框,其中充满了团队估计将适合该时间框的工作量,而不会溢出该时间框,然后在该时间框到期时“完成”或“未完成”。一旦走了,时间框就永远消失了。任何未完成的工作都必须在新的,同样短暂的时间范围内根据项目当时(而非历史)的需求进行重新计划和重新估算。
时间框的重要性在于,它既可以为利益相关者创建可预见的节奏来审查进度,也可以为团队提供可持续的节奏以交付可能实现的价值增长。工作是渐进的,遵循节奏。因此,提前的大限期的概念不符合敏捷原则。
基于时间框的发布计划
人们在将敏捷过程映射到传统框架方面最困难的地方是发布计划。发布计划通常涉及固定范围或固定日期的可交付成果。在敏捷框架中,发布计划通常是通过估算过程完成的,其中范围明确定义为可变变量,而发布日期则通过迭代估算。
例如,一个项目可能承诺在20次迭代结束时发布该项目的v1.0。发布版本的范围可能会在项目的整个生命周期中发生变化(因为范围,功能和优先级可能会在每个Sprint的开始时发生变化),但是每个发布的目标日期在项目计划中都是固定的。团队努力为每个Sprint提供可能交付的增量,“完成的定义”包括质量检查,例如持续集成,以确保项目在每个Sprint结束时处于可释放状态。
有时,您会看到敏捷项目的范围是固定的,但是由于范围是敏捷项目中的可变变量,因此随着每次迭代的范围调整,更改或适应项目不断变化的需求,发布日期可能会随时间而变化。 。我当然不建议对敏捷团队(尤其是经验不足的团队)使用固定范围的方法,但是有时它是正确的方法。
也可以看看