极限编程 (XP)

2013年7月11日

极限编程 (XP) 是一种软件开发方法,主要由 Kent Beck 开发。XP 是最早的 敏捷方法 之一,实际上 XP 在 90 年代末和 00 年代初是主流的敏捷方法,直到 Scrum 在 00 年代后期占据主导地位。许多人(包括我自己)认为 XP 是促使人们关注敏捷方法的主要催化剂,并且作为敏捷开发的起点,它优于 Scrum。

Jim Shore 对敏捷软件开发的描述很大程度上基于极限编程的原则,并且是我学习 XP 方法的首选指南。

Kent 在 80 年代末和 90 年代初为 Smalltalk 项目提供咨询的过程中开发了 XP。后来被称为 XP 的全套实践首次一起使用是在 C3 项目中(我在那里与 Kent 一起工作并了解了它)。“极限编程”这个名字是后来才出现的,当时这种方法被描述出来,首先是非正式地在 WikiWikiWeb 上,然后是在一系列书籍中。各个团队采用了 WikiWikiWeb 中的描述并自行实施了 XP,从而复制了该方法并表明它可以在其最初的家之外使用。

Kent 通过从广泛而抽象的价值观到原则,再到具体实践的思想发展来描述 XP——我发现这种发展在许多其他情况下都很有用。它推广了许多后来在软件开发中得到广泛应用的实践,包括:持续集成重构测试驱动开发 和敏捷计划。我特别喜欢它将技术和管理实践相结合,这使得它非常适合于达到 敏捷流畅度 [1] 的交付区域。

“白皮书”是对极限编程的权威描述,值得在任何程序员的阅读清单上占有一席之地。

虽然像大多数 XP 爱好者一样,我认为根据团队是否在做 XP 来评判他们并不是很有用;但我认为大多数 Thoughtworks 项目的运作方式主要受 XP 的影响。

延伸阅读

对极限编程的权威描述是 Kent 的白皮书。(请注意,许多早期的 XP 从业者是通过第一版学习这种方法的,并且两者之间存在相当多的差异。)

虽然白皮书是对 XP 的最佳定义,但现在我推荐 James Shore 的 敏捷开发的艺术 作为学习 XP 方法的指南。尽管 Shore 的研究范围比 Kent 对 XP 的研究更广,但他的书牢牢地建立在 XP 的关键特征之上。

注释

1: 与 Scrum 的对比,Scrum 故意只包含管理实践,因此容易变成 松散 Scrum