敏捷的原则
1.我们最重要的目的,是通过持续不断地及早交付有价值的软件使客户满意。
2.欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
3.经常的交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
4.业务人员和开发人员必须相互合作,项目中得每一天都不例外。
5.激发个体的斗志,以他们为核心搭建项目。提高所需的环境和支援,辅以信任,从而达成目标。
6.不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
7.可工作的软件是进度的首要度量标准。
8.敏捷过程倡导可持续发。责任人、开发人员和用户、要能够共同维持其步调稳定延续。
9.坚持不懈的追求技术卓越和良好设计,敏捷能力由此增强。
10.以简洁为本,它是极力减少不必要工作量的艺术。
11.最好的架构、需求和设计出自组织团队。
12.团队定期地反思如何能提高成效,并依次调整自身的举止表现。
这些原则可以分为如下几类.
可变性和不确定性
scrum巧用产品开发的可变性和不确定性来产生创新解决方案.下面四个原则与这个主题相关.
1.积极采用有帮助的可变性.
软件产品开发行业是创建产品的单个实例,在产品中构建的每个特性都不同于改产品的其他特性,所以即使在产品层面也存在可变性.
2.采用迭代和增量开发.
迭代开发本身是一种有计划的修改策略.通过多次开发来改善正在构建的特性,逐步得出一个完善的解决方案.缺点是在遇到不确定性因素时,很难事先确定(计划)需要改进多少次.
增量开发基于一个古老的原则:先构建部分,在构建整体.我们把产品分解成更小的特性,先构建一部分,在从中了解他们在目标使用环境中的具体情形,然后根据更多的理解来做调整,构建更多的特性.缺点是逐步构建的过程中,有迷失全局的风险.
Scrum综合迭代和增量这两种开发方式的优点,消除了单独使用其一的缺点.
3.通过检视,调整和透明来利用可变性.
在产品开发中,只要是构建新东西,就必然存在一定的可变性.我们不仅要检视和调整正在构建的产品,还要检视和调整构建产品的方式.Scurm尽早,频繁的反馈过程,可以确保构建的产品是正确的,构建产品的方式是正确的.为了更好的检视与适应,我们依赖于透明性:信息透明,才能进行检视,而检视又是调整的前提.
4.同时减少各种各样的不确定需求.
开发新产品是一个很复杂的工作,具有很高的不确定性.这种不确定性可以分为两大类:结果不确定性;方法不确定性.这种不确定性一定要处理,否则最后可能会出现好产品误入"养在深闺无人识"的境地.在Scrum中,我们采取全面的办法,重点关注于同时减少所有不确定性.通过迭代开发和增量开发,并在经常性的检视,适应和透明度的指导之下,可以同时解决多种类型的不确定性.
预测和适应
在使用Scrum时,经常需要平衡预测性的事前工作和适应性的适时工作的关系。
1.不到最后一刻,不轻易做决定。
这个原则常称为“最后责任时刻”,意思是推迟做出承诺,指导最后责任时刻再做出重要的、不可逆转的决定。再处理重要的或不可逆的决定时,如果决策太早且有错,就会增加决策成本。更好的理解决策之后,决策成本会下降。
2.承认无法一开始就把事情做对。
3.偏好适应性,探索式的方法。
4.用经济合理的方法积极主动的接受变化。
5.在预测性的事前工作和适应性的适时工作之间做出平衡。
经验认知
在使用Scrum时,我们对工作进行组织,快速产生经验认知。最初的假设一旦被确认或推翻最初的,我们就获得了经验认知。
1.快速验证重要的假设。
2.利用多个认知循环并行的又是。
3.组织妥善工作流以获得快速反馈。
WIP
WIP(work in process)指的是已经开始但尚未完成的工作。在产品开发过程中,必须识别出WIP并进行妥善管理。
1.批量大小要经济合理。
2.识别并管理库存资源以达到良好的流动。
3.关注闲置工作,并非闲置人员。
4.考虑延期成本。
进度
在使用Scrum时,不是用既定计划的执行情况来衡量进度,也不是看某个特定期间或开发阶段的工作由多大进展,而是用已交付且验证过的结果来衡量。
1.根据实时信息来重新制定计划。
2.通过验证工作结果来度量进度。
3.聚焦于以价值为中心的交付。
执行
在使用Scrum时,我们期望有一些特定的、与执行相关的特点。
1.快速前进、但不匆忙。
2.内建质量。
3.采用最小够用的仪式。