敏捷的第一个成功案例是极限编程(XP),这种方法的口号是“拥抱变化”。极限编程强调把对软件开发的哲学思考和对改变现状的实际工作结合在一起,正如第一本关于极限编程的书中序言所说:
简而言之,极限编程承诺减少项目风险,提高对业务变化的响应能力,在系统的整个生命周期中提高生产力,并在团队中增加构建软件的乐趣。所有这些都是同时发生的,这是真的,你可别笑。 [Beck2000a]
——《解析极限编程》( Extreme Programming Explained )
有些人确实笑了,但也有人尝试了极限编程,他们发现极限编程确实做到了它所承诺的一切,这与人们普遍认为的软件开发方法相反。因此,尽管有嘲笑声,极限编程还是成长起来了,敏捷也随之而来。
极限编程是敏捷的“最初代言人”,它提供了至今仍在使用的思想和术语。敏捷社区的优势在于它一直是一个“大帐篷”,敏捷并不局限于任何一种方法,它在不断扩展,以吸纳新的人和想法。精益软件开发、Scrum、看板、精益创业、DevOps,以及很多其他方法,都为人们今天所认识的“敏捷”做出了贡献。
如果你把这些方法归类,就会出现五个核心概念。
· 以人为本。构建能够理解基本人性并与人合作的流程。把决定权交到最有资格做出决定的人手中。将你的工作建立在健康、协作的关系上。
· 交付价值。寻求反馈,进行试验,并调整计划。专注于产生有价值的结果。将部分完成的工作视为成本,而不是收益。频繁交付。
· 消除浪费。以小的、可逆转的步骤工作。拥抱失败的可能性,制定计划,以便快速试错。最大化未完成的工作,追求产量而不是效率。
· 追求技术卓越。通过技术实现敏捷性。对已知的东西进行设计,而不是对推测的东西进行设计。从简单的开始,只在实际需要时增加复杂性。创建系统,使其易于演进,甚至在意料之外的方向发展。
· 改进流程。用新的想法进行实验。调整和适应有效的东西。永远不要认为既定的、流行的方式就是最适合你的方式。
敏捷之所以有效,是因为人们使它有效。
“敏捷”的内核是由《敏捷宣言》定义的,但《敏捷宣言》仅仅是一个起点。敏捷之所以有效,是因为人们使它有效。人们采纳敏捷的理念,使其适应自己的情况,并不断改进。