我正在一个团队工作,该团队正在探索采用敏捷开发实践的可能性。
我们遇到的一个问题是决定何时完成迭代(冲刺)。
假设我们已经定义了我们的功能积压,并为它们生成了故事点估计,并且我们已经决定第一个 30 天的冲刺将包括功能 A、B、D 和 F。如果你遇到了你应该怎么做'再次到达 sprint 的终点,您已经完成了 A、D 和 F - 但 B 只完成了 80%。你应该:
按时完成 sprint,但排除功能 B(将剩余工作推迟到未来的 sprint)
将 sprint 延长到完成功能 B 所需的时间,但不要开始下一个 sprint。
将 sprint 延长至完成功能 B 并开始进行下一个 sprint 所需的时间。
使整个 sprint 失败,并将所有工作捆绑为未来版本的一部分。
我在选项 1 中看到的问题是团队没有兑现承诺。在某些情况下,您可能无法在不使整个版本无用(或至少显着降低价值)的情况下排除功能 B。如果没有特征 B,可能很难指导下一个 sprint 的方向。
选项 2 的问题是团队中的一些成员可能会在很长一段时间内处于空闲状态 - 这会影响整体生产力。您可能能够添加更多的单元测试,或润色特性,但它不会增加成比例的价值。在政治上也很难向管理层解释为什么你的大多数团队都处于闲置状态。
选项 3 似乎与敏捷精神背道而驰——您不允许前一个 sprint 的结果指导下一次开发迭代,从而使下一个 sprint 处于危险之中。
选项 4 似乎很严重,并且与选项 1 和 3 有大部分相同的问题。首先,你完全错过了一个承诺。其次,将更多功能捆绑到后续版本中会使与客户进行测试和验证变得更加困难——并且它再次排除了根据之前的反馈来指导未来迭代的能力。