在深入研究 Scrum 的机理之前,先理解推动并影响 Scrum 方法的基本原则是很有帮助的。
概述
在介绍 Scrum 基本原则时,如果把这些原则与推动传统计划驱动的顺序开发活动理念进行对比,会得到更大的启发。
纯正而传统的计划驱动开发常常称为“瀑布开发”,不过其实计划驱动开发的类别很广泛,瀑布开发只是其中的一个例子。
计划驱动的开发来源于人们总是希望计划和预测工作内容,确定最佳工作方式。
对于明确定义、可预测且不可能发生任何重大变更的问题,计划驱动开发方式是很适用的。而 Scrum 则奉行另一套不同的理念,该理念很好地处理了高不确定性而导致很难做出宏观预测这个问题。
1. 可变性和不确定性:
1.1 积极采用有帮助的可变性
计划驱动开发过程把产品开发当作制造业,目标是遵循大家都理解的一套顺序步骤,根据一套固定的需求,每次生产出同样的产品。
而软件产品开发行业,目标不是制造产品,而是创建产品的单个实例。在产品中构建的每个特性都不同于该产品的其他特性。
1.2 采用迭代和增量开发
计划驱动的顺序开发方式假设我们事先就能把事情做对,大多数或所有产品部件到后期再集成。
迭代开发承认我们在把事情做对之前有可能做错,在把事情做好之前有可能做坏。迭代开发本身是一种有计划的修改策略。通过多次开发来改善正在构建的特性,逐步得出一个完善的解决方案。
迭代开发最大的缺点是在遇到不确定性因素时,很难事先确定需要改进多少次。
增量开发基于一个古老的原则:先构建部分,再构建整体。
增量开发最大的缺点是逐步构建的过程中,有迷失全局的风险。
Scrum 综合迭代和增量这两种开发方式的优点,消除了单独使用其中任何一种方式的缺点。使用一系列固定时长的适应性迭代来同时利用这两种方法的思想,这种迭代就是冲刺。
对冲刺思想的一种误用是,每个冲刺只集中做一种类型的工作,例如:冲刺1(分析)、冲刺2(设计)。。。这种做法其实就是为 Scrum 披上了瀑布式工作分解结构的皮。
在 Scrum 中,并不是每次做一个阶段的工作,而是每次做一个特性。
1.3 通过检视、调整和透明来利用可变性
Scrum 的核心原则是检视、调整和透明性。
1.4 同时减少各种各样的不确定因素
结果不确定性(不确定做什么)——围绕最终产品特性的不确定性。
方法不确定性(不确定怎样做)——围绕产品的开发过程和技术的不确定性。
传统的顺序开发过程事先全部定义需要构建哪些特性,先重点消除结果的不确定性,后处理方法的不确定性。
在 Scrum 中,我们采取更全面的方法,重点关注于同时减少所有不确定性(结果不确定性、方法不确定性和客户不确定性等)。