2. 预测和适应
2.1 不到最后时刻,不轻易做决定
对于需求或设计,计划驱动的顺序开发方式要求在当前阶段就做出重要的决策并进行审批。
Scrum 认为,不该单单因为通用过程要求此时作出决定,我们就做出不成熟的决定。他们倾向于“不轻易做决定”这个策略。这个原则通常称“最后责任时刻”。
2.2 承认无法一开始就把事情做对
计划驱动的过程不仅要求有完整的需求和全面的计划,还想当然地认为事先就能“把事情做对”。
在 Scrum 中,我们承认自己不可能事先确定所有需求或计划。
2.3 偏好适应性、探索性的方法
使用现在已知的东西并对未知的东西进行预测,这是计划驱动的顺序过程关注的终点。
Scrum 更倾向于恰当运用探索式方法,在此基础上采用适应性的试错法。
探索指的是通过某些活动来获得知识。换句话说,面对不确定,我们通过探索来获取更多可用信息。
2.4 用经济合理的方法积极主动接受变化
使用顺序开发方式时,后期变更成本比早期变更成本高很多。为避免后期变更,顺序开发过程的做法是设法提高预测的准确度,澄清系统需求及其实现过程,再加以严格控制,力求最小化需求和设计变更。
在 Scrum 中,我们认为变更是很正常的。必须准备好主动迎接变更,只是在变更出现时,我们希望能比传统开发更经济的方式来处理。因此,我们的目标是要让变更成本曲线尽可能长期保持平稳——即使在后期接受变更,开销也是经济合理的。
我们可以通过对 WIP 数量和工作流进行管理来实现这个目标。
2.5 在预测性的事前工作和适应性的适时工作之间做出平衡
计划驱动开发有一个基本的理念:事先得到详细需求和计划是至关重要的,并且做事情要有先后。
在 Scrum 中,我们相信前期工作有帮助,但不宜过度。要找平衡点,即取得平衡预测性的前期工作和适应性的刚好及时工作的平衡。
究竟怎样才算平衡?这在一定程度上由几个因素推动:所建产品的类型、待建产品(结果不确定性)和产品构建方式(方法不确定性)的不确定程度以及开发中的限制。