敏捷开发:理念、成功与失败
发布时间: 2025-08-14 01:31:51 订阅数: 6 


敏捷开发艺术:从理论到实践的全面指南
### 敏捷开发:理念、成功与失败
#### 1. 联系信息与致谢
若有相关问题或建议,可联系出版商:
- 地址:O’Reilly Media, Inc. 1005 Gravenstein Highway North, Sebastopol, CA 95472
- 电话:美国或加拿大 800 - 998 - 9938;国际或本地 707 - 829 - 0515
- 传真:707 - 829 - 0104
- 网页:https://oreil.ly/art - of - agile - dev - 2e
- 邮箱:[email protected]
同时,要感谢众多人士的支持与贡献。包括在敏捷开发领域有重要贡献的 Kent Beck、Ron Jeffries 和 Ward Cunningham 等;O’Reilly 团队的 Gary O’Brien、Melissa Duffield 等众多工作人员;还有众多参与反馈的评审人员,如 Adrian Sutton、Anthony Williams 等。最后,特别感谢妻子 Neeru 的支持。
#### 2. 敏捷开发的起源
在 20 世纪 90 年代,软件开发被认为处于危机之中,即所谓的“软件危机”。软件项目超预算、延期、不符合需求,近三分之一的项目直接取消。为了控制软件开发,大公司创建了高度详细的流程,也就是“瀑布式开发”或“阶段门开发”。这种方法将软件开发分为多个阶段,每个阶段都有严格的文档和审批流程。
然而,这种方法存在诸多问题。它过于官僚化和非人性化,技能的重要性不如对流程的遵循,程序员感觉自己像机器上可互换的齿轮,而且效果也不佳。于是,一些人创造了更简单、更灵活的“轻量级方法”,如“自适应软件开发”“水晶方法”“特性驱动开发”“动态系统开发方法”“极限编程”和“Scrum”等。
2001 年,17 位轻量级方法论的倡导者在犹他州的一个滑雪胜地会面,讨论统一他们的努力。经过两天的讨论,他们确定了“敏捷”这个名称,并提出了四个价值观。随后几个月,通过电子邮件讨论,又确定了 12 条原则,这就是“敏捷宣言”。
#### 3. 敏捷开发的本质
敏捷开发具有两个核心特点:
- **适应性而非预测性**:传统的项目成功定义是按时、按预算完成项目,并满足所有最初指定的功能。但实际上,即使满足这些传统标准的项目,也可能因为无法吸引目标用户或无法为业务增加价值而失败。敏捷团队将成功定义为交付价值,而不是遵循计划。真正的敏捷团队会积极寻找机会通过改变计划来增加价值。
- **以人为本而非以流程为本**:重量级流程试图通过详细定义软件开发的各个方面来防止错误,个人技能的重要性降低。而敏捷认为人是软件开发成功的最重要因素,包括团队成员的协作能力、工作动力等。敏捷团队有自己的流程,但流程是为人员服务的,团队可以根据需要改变流程。
#### 4. 敏捷开发成功的原因
在敏捷宣言发布后的前 10 年,敏捷开发面临巨大批评,但随后批评声逐渐消失,敏捷开发变得无处不在。这并不是说阶段式流程本身有问题,而是大公司使用的重量级方法存在缺陷。
重量级流程过于强调流程控制、文档和审批,导致大量的延迟和开销,需要数年时间才能产生可运行的软件,而且在接近项目结束时才有具体成果。它们不欢迎变更,而是积极防止变更。例如 FBI 的 VCF 项目,花费了 17000 万美元,最终取消,其中 1.045 亿美元无法收回。
而敏捷开发的核心是学习和响应变化。它强调“工作软件是进度的主要衡量标准”,通过尽快让用户使用工作软件,获取反馈并根据反馈改变计划。敏捷团队用工作软件展示进度,而不是文档,这是敏捷开发成功的关键。
#### 5. 敏捷开发的核心概念
敏捷开发包含多个方法,将它们的思想归类后,有五个核心概念:
|核心概念|具体内容|
| ---- | ---- |
|依靠人员|构建理解并适应人性的流程,将决策交给最有资格的人,基于健康的协作关系开展工作。|
|交付价值|寻求反馈、进行实验并调整计划,专注于产生有价值的结果,将部分完成的工作视为成本而非收益,频繁交付。|
|消除浪费|小步可逆地工作,接受失败的可能性并设计快速失败的计划,最大化未完成的工作,追求吞吐量而非效率。|
|追求技术卓越|通过技术质量实现敏捷性,根据已知情况进行设计,而不是猜测,从简单开始,仅根据实际需求增加复杂性,创建易于演变的系统。|
|改进流程|尝试新想法,调整和适应有效的方法,不要认为既定的流行方式就是最适合自己的方式。|
下面是敏捷开发核心概念的 mermaid 流程图:
```mermaid
graph LR
A[依靠人员] --> B[交付价值]
B --> C[消除浪费]
C --> D[追求技术卓越]
D --> E[改进流程]
E --> A
```
敏捷开发虽然由敏捷宣言定义,但宣言只是起点。敏捷开发之所以有效,是因为人们将其理念应用到实际情况中,并不断改进。
### 敏捷开发:理念、成功与失败
#### 6. 敏捷开发失败的原因
敏捷开发最初是一场草根运动,其早期的成功主要由程序员推动,他们希望获得更好的结果和更高的生活质量。然而,随着其成功的扩大,敏捷开发的发展势头从其核心思想转向了炒作。组织领导者不再关注如何通过调整计划和以人为本获得更好的结果,而是说“大家都在谈论敏捷,给我来点敏捷”。
但实际上,并没有现成的“敏捷”可以获取,它只是一系列理念。虽然有像极限编程和 Scrum 这样的具体敏捷方法,但组织必须认同其背后的哲学。对于许多组织来说,这种适应计划和以人为本的哲学非常陌生。
#### 7. 敏捷开发的“ Cargo Cult ”现象
“Cargo Cult”现象源于一个故事:20 世纪 40 年代,美国军队登陆一个偏远岛屿,岛上居民对军队带来的物资和设备感到惊奇。军队离开后,居民们模仿军队建造了简易的跑道、塔楼,让首领戴上类似耳机的椰子壳,但飞机再也没有回来。这是因为他们只复制了表面的元素,却不理解背后的基础设施。
在敏捷开发中也存在类似的“Cargo Cult”现象。人们想要敏捷开发带来的好处,如更好的结果、更高的可见性和更少的业务失败,但他们不理解其背后的哲学,甚至即使理解了也可能不同意。他们购买敏捷开发的外在标志,如站立会议、故事、工具和认证等,却忽略了“适应性规划”和“以人为本”等重要理念。
以下是传统开发与“Cargo Cult”敏捷开发的对比表格:
|对比项|传统重量级开发|“Cargo Cult”敏捷开发|真正的敏捷开发|
| ---- | ---- | ---- | ---- |
|核心关注点|流程控制和文档|外在标志和形式|理念和价值交付|
|对变更的态度|防止变更|形式上接受,实际难执行|欢迎并积极响应变更|
|人员角色|流程的执行者|形式参与者|核心驱动力|
|项目成果|可能交付无价值软件|有活动无实质成果|交付有价值软件|
这种“Cargo Cult”现象导致了大量的活动,但没有实际的结果,敏捷开发的核心部分缺失。以下是一些来自网络的真实评论:
- “在我以前的公司,他们在会议上浪费了大量的人力时间。”
- “敏捷开发让整个团队(30 多人)几乎一年都没产出什么东西,最后丢了工作。”
- “敏捷开发意味着项目变更时,开发者在交付前一天会陷入困境。”
#### 8. 总结与展望
敏捷开发的理念非常强大,它强调适应性、以人为本、交付价值、消除浪费、追求技术卓越和改进流程。但在实际应用中,由于“Cargo Cult”现象的存在,很多组织未能真正实现敏捷开发的价值。
为了避免敏捷开发失败,组织需要深入理解敏捷开发的哲学,而不仅仅是采用其外在形式。以下是一些建议列表:
1. 培训和教育:确保团队成员理解敏捷开发的核心思想和价值观。
2. 领导支持:领导要认同并推动敏捷开发的理念,而不是只追求表面的形式。
3. 持续改进:不断尝试新的方法和实践,根据实际情况调整流程。
4. 关注价值:始终将交付价值作为项目的核心目标。
下面是一个组织实施敏捷开发的 mermaid 流程图:
```mermaid
graph LR
A[理解敏捷理念] --> B[培训团队成员]
B --> C[领导支持推动]
C --> D[持续改进流程]
D --> E[关注价值交付]
E --> A
```
总之,敏捷开发是一种强大的软件开发方法,但只有当组织真正理解并应用其核心思想时,才能实现其带来的好处。
0
0
相关推荐










