时间盒迭代
2023年4月4日
时间盒迭代是一种划分和安排项目工作的方式,尤其与敏捷软件项目相关。团队将软件的可见功能分解成用户故事,并将时间分解成固定的周期(例如一周),称为迭代。然后,他们通过将故事分配到迭代中来安排故事。故事会被粗略估计,以便团队可以确定一个迭代中可以容纳多少个故事。
迭代是时间盒式的,这意味着没有机制可以推迟迭代的结束日期以完成任何故事。如果一个故事在下一个迭代中没有完成,则认为它没有完成,团队会为完成它而创建一个新的故事。
确定迭代容量的一个好方法是使用昨天的天气。我们将未来迭代的容量设置为我们在上一个迭代中完成的故事数量。在实践中,明智的做法是考虑最后几次迭代,以平滑容量数量的变化。最明显的方法是取最后几次迭代的平均值,但更好的方法是使用*最小值*来提供宝贵的松弛时间。这种机制是一个自然自我校准的反馈回路。
时间盒迭代的另一种方法是持续流。这里没有迭代,当一个故事完成后,团队只需从优先级列表中选择下一个故事。许多人更喜欢这种方式,因为它消除了将故事分配给迭代所需的工作 - 你只需选择下一个。但迭代提供了一种规律的节奏,人们发现这对设定工作节奏很有价值。
迭代最有价值的地方在于它们能够使问题变得可见。迭代的结束是一个自然的停止函数,它提供了一个防止严重超支的检查,并为估计的质量建立了一个反馈回路。如果一个团队经常没有时间完成故事,或者通常在迭代结束时看到繁忙的工作 - 这些都是团队工作方式出现障碍的信号。这种问题信号机制对于那些正在努力采用良好工程实践的团队来说尤其有价值。解决这些问题的最佳方法是在工作中增加更多的松弛时间来处理根本问题,遗憾的是,这种方法的价值被低估了。
延伸阅读
多年来,人们撰写了许多关于敏捷计划的书籍,其中大多数都是基于时间盒迭代的。我目前的推荐是敏捷开发的艺术,这本书详细介绍了如何选择迭代长度、确定容量、跟踪和处理紧急请求。关于任务计划的相关章节可以在他的网站上找到。
我可能还会提到我自己与 Kent Beck 在本世纪初合著的关于极限编程计划的书。虽然我想我们英美西海岸散文的优雅风格永远不会在这个类型中被超越,但如今我会选择敏捷开发的艺术。
致谢
Alexander Steinhart、Ana Lallena、Andrew Thal、David Jetter、Ian Cartwright、James Shore、John Hearn、Kennedy Collins、Kief Morris 和 Premanand Chandrasekaran 在我们的内部邮件列表中讨论了这篇文章