1.2 从危机中诞生

大公司把流程定义得非常详细。角色、责任、文档模板、建模语言、变更控制委员会……关于软件开发的每一个方面都被严格定义和控制。如果一个项目没有成功(根据 “CHAOS报告”,只有不到六分之一的项目成功了),那是因为这个过程需要更多的细节、更多的文档、更多的验收环节。这就导致产生了巨量的文档。Martin Fowler将其称为“全能的砰砰声”[Fowler1997]

这并不是一个好的工作方式,很不人性化。在这种情况下,遵守流程似乎比拥有技能更重要。程序员们觉得他们只是一个没有人情味的机器中可替换的齿轮。这种工作方式其实没有那么好的效果。

因此,有几个人创造了更简单、更精炼、更少规则的软件开发方法。这些方法被称为“轻量级方法”,与大公司使用的重量级方法形成对比。这些新方法的名称包括“适应性软件开发”“水晶开发”“功能驱动开发”“动态系统开发方法”“极限编程”和Scrum。

到20世纪90年代末,这些方法引起了人们大量的关注。尤其是极限编程,在程序员中掀起了一股关注底层开发的热潮。2001年,17位轻量级方法论倡导者在犹他州的一个滑雪场会面,讨论如何统一他们的成果。