敏捷原则
Scrum巧用产品开发的可变性和不可变性来产生创新解决方案。
- 积极采用有帮助的文档
- 采用迭代和增量开发
- 通过检视、调整和透明来利用可变性
- 同时减少各种各样的并不确定因素
可变性和不确定性
积极采用有帮助的可变性
计划驱动开发过程把产品当作制造业,它们避免任何变数,鼓励遵从规程。但问题是,产品开发和制造业完全不同,在软件产品开发行业,我们的目标不是制造产品,而是创建产品的单个实例。单个实例类似于独一无二的配方。我们不希望同样的配方搞两次。
采用迭代和增量开发
计划驱动的顺序开发方式假设我们事先能把事情做对,大多数或者所以产品部件后期集成。
迭代开发:
优点:承认我们在吧事情做对之前都可能做错,在把事情做好之前有可能做坏。迭代开发本身是一种有计划的修改策略。通过对此开发来改善正在构建的特性,逐步得出一个完善的解决方案。
缺点:在遇到不确定性因素时,很难先确定(计划)需求改进多少次。
增量开发:
优点:基于一个古老的原则:先构建部分,再构建整体。我们避免到最后才冒出一个大的活动,集成所有组件和交付整个产品。
缺点:在逐步构建过程中,有迷失全局的风险。
通过检视、调整和透明来利用可变性
计划驱动过程和Scrum过程对比Scrum的核心原则是检视、调整和透明性。在Scrum中,我们不仅要监视正在构建的产品,还要检视和调整构建产品的方式。
为了更好的检视与适应,我们依赖于透明性:参与创建产品的每一个都必须能够得到与WIP相关的所有重要信息。能够让每个相关人员看到并了解正在发生的事情,带来更多的沟通,并在过程和团队成员中建立互信。
同时减少各种各样的并不确定因素
开发新产品是一个很复杂的工作,具有很高的不确定性。这种不确定性可以分为以下两大类:
- 结果不确定性——围绕最终产品特性的不确定性;
- 方法不确定性——围绕产品的开发过程和技术的不确定性;
特性环境或特定产品还有可能有客户不确定性。这种不确定性一定要消除,否则最后可能出现好产品误入错误的客户群。
传统的顺序开发过程事先全部定义需要构建哪些特性,先重点消除结果不确定性,后处理方法的不确定性。
在Scrum中,我们不会限制自己只在处理完一类不确定性之痕才处理另一类不确定性,相反,我们采取更全面的方法,重点关注于同时减少所有不确定性。当然,在任何时刻,我们可能会更侧重于关注某一类不确定性。通过迭代开发和增量开发,并经常性的检视、适应和透明度知道下,可以同时解决多种类型的不确定性。
WIP
WIP(work in process)指的是已经开始尚未完成的工作。在产品开发过程中,必须识别出WIP并进行妥善管理。
- 批量大小要经济合理。
-识别并管理库存资源以达到良好的流动。
-关注闲置工作,而非闲置人员。
-考虑延期成本。
批量大小要经济合理
在产品开发中采用小批量的方式,这听起来有违直觉,但实际上好出多多。
小批量的好处.jpg识别并管理库存以达到良好的流动
库存刚好是产品开发过程中需要管理的关键变量,这在传统开发方式中往往被忽视。传统开发方式中,批量设置得相当大(通常为100%),实际上倾向于制造大量库存。在软件产品开发中,如果出现大量WIP,后果很严重,它会严重影响变更成本曲线。
变更成本曲线.jpg
即将开始开放时,确实需要有一些需求,但并不需要全部需求。如果太多,在需要发生变化时很可能造成库存浪费。但另一方面,如果需求库存不足,又会破坏工作的快速流动,这也是浪费。Scrum的目标是合理地平衡适量库存和过多库存之间的关系。
需求只是产品开发过程中的一种库存。在产品开发过程中,很多地方,很多时间都有WIP。这些库存也需要我们积极主动地识别和管理。
关注闲置工作,而非闲置人员
在Scrum中,我们深信闲置工作比人员更浪费,经济危害也更大。闲置工作指的是有些工作我们想做却由于其他事情的阻碍而无法做。这种停顿也许是因为必须等另一个团队完成之后才轮到我们做。又或者我们要做的工作太多而无法同时完成。这种情况下,一部分工作就会处于停顿状态。人员空闲,指的是员工有能力做更多工作但当前并没有100%投入。
在Scrum中,我们认为:需要找出工作流的瓶颈并集中精力消除它,相较于努力让每个人都100%连轴转,这样做更经济合理。
考虑延期成本
延期成本是工作延期或里程碑延期达成所产生的财务成本。随着处理能力利用率的增加,队列大小和延期也增加。因此,在降低闲置人员浪费的同时,也增加了与闲置工作相关浪费。使用延期成本,我们可以算出哪种浪费的经济危害更大。、
要想做出经济合理的决定,延期成本是一个需要考虑的、最重要的变量。