敏捷开发的艺术(原书第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 敏捷为什么成功

在《敏捷宣言》发表后的前十年,“敏捷”这一理念面临着很多批评。批评者说它是“没有纪律的”“它不可能成功”。在那之后的十年里,批评者都沉默了。敏捷无处不在,至少是名义上的无处不在。重量级的瀑布式方法实际上已经消亡,一些年轻的程序员很难相信有人会用这种方式工作。

这并不是说基于阶段的流程本身就有问题。它们当然有缺陷,但如果你让它们保持精简,并在一个被充分理解的领域中运作,瀑布式方法仍能发挥作用。问题在于那些大公司使用的重量级方法。具有讽刺意味的是,那些旨在防止问题发生的流程实际上造成了组织所面临的许多问题。

学习和应对变化是敏捷的核心所在。

在实际使用软件之前,很难想象它将如何运行,而要想出软件需要做的每一件事,更是难上加难。这对那些很少参与软件开发的人来说更是如此。因此,尽快将可工作的软件呈现在人们面前是至关重要的。你需要得到哪些部分有缺失、哪些部分有问题的反馈,然后根据接收到的反馈改变计划。正如《敏捷宣言》中所言,“可工作的软件是衡量进度的主要标准”,学习和应对变化是敏捷的核心所在。

那些繁重的流程过于强调流程控制、文档和验收,由此造成了大量的延迟和开销。遵循这一原则的人花了好几年的时间来制作可工作的软件,而直到最后也没有什么具体的成果可以展示。他们不仅不欢迎变化,反而努力地阻止变化。实际上,他们有一个专门的流程,即变更控制委员会,其主要目的是对变更请求说“不”,或者更准确地说,是“可以,但它会增加成本”。

所有这些致使项目在开发过程中花费了数年时间才有成果。当开发完的时候,再做修改已经太晚了,而且成本太高,导致最终交付的软件并不是客户需要的。

一个典型的重大失败

2005年2月3日,美国联邦调查局(FBI)局长罗伯特S.穆勒三世(Robert S. Mueller Ⅲ)出席了参议院小组委员会的会议,解释联邦调查局是如何浪费1.045亿美元的。[4]

这不可能是一个舒适的场景。2001年6月,联邦调查局启动了VCF项目,该项目旨在取代该局的案件管理软件。四年后,这个项目被取消了,一共耗费了1.7亿美元的总成本,其中1.045亿美元完全无法收回。

VCF的时间线讲述了一个我们非常熟悉的故事。该项目于2001年6月启动。17个月后,即2002年11月,确认了“固定需求”。软件交付在一年后,即2003年12月,但联邦调查局“立即发现VCF的一些缺陷,以至于无法使用”。开发VCF的承包商同意修复这些问题,但需要额外的5600万美元和一年的时间。最终,联邦调查局拒绝修复这些问题,放弃了多年的工作。

尽管有各种敏捷方法,但是其中一些方法更多的只是采用这个流行的名字,而不是遵循实际的敏捷哲学。这些不同的敏捷方法有一个共同点,那就是专注于使进展清晰可见,并允许利益相关者在过程中进行纠正。这似乎是一件小事,但它的影响却令人难以置信,这就是为什么我们不再听到关于软件危机的说法。尽管软件交付仍然延期,预算仍然超过预期,但是敏捷团队从一开始就用可工作的软件而不是文档来显示进展,它的影响将会是巨大的。

敏捷团队用可工作的软件而不是文档来展示进展。

敏捷不仅仅是提供可见性,还有更多的东西。但仅是提供可见性这一点已经非常有效了,这就是为什么所有人都想要实现敏捷方法。