前 言 在开始之前,我们想请读者注意本书一些非常独特的元素。这不是一本普通的,一般性的计算机科学类的书籍! 我们感觉这样一个主题适合采用讽刺的手法,因此我们下决心赋予它这样的风格。除讽刺之外,还有许多冷静的幽默。我们有时确实变得严肃,并对了极限编程(XP)固有缺陷和危险进行认真的系统分析。 说到这一点,这本书并非完全“抨击”XP的一部著作。正如后面指出的,不是所有XP都是糟糕的。我们打算提供一个中肯的批评,并指出XP中可以被抢救或重构的部分,以更加健壮的方式实现同样敏捷的目标。 XP受到了名不副实的炒作,并且新的XP书籍继续以难以置信的速度出版。围绕XP恶性膨胀的呼声从各方面影响了产业界(有些是正面的,如同我们探求的,但大多数是负面的)。有鉴于此,我们感觉一本逆着XP浪潮,抵制XP的书是重要的。 这里有一个小例子,说明XP如何影响业界。Matt(本书勇敢无畏的共同作者)收到来自一位顾问的电子邮件,这位顾问最近失去了一份重要合同,因为他拒绝在没有首先进行一些详细的需求分析和预先设计之前启动项目。客户通过阅读知道XP编程,他告诉那位顾问:“即然XP认为以那种方式启动项目没有问题,那么我们将找到跳过需求和预先设计而直接启动项目的人!” 虽然一些业务人员听说XP后,立刻陷入疯狂(像上面的顾问故事提示的那样),但仍有一些人立场坚定,拒绝变化。实际上,想要将XP引入其组织的团队面对的一个主要问题是,XP要求在整个组织中有显著的思想改变,从团队的组织方式到公司与客户做业务的方式。本书分析了XP的缺点,并提出一种可选择的实现敏捷性的方法,与XP相比,它对现有组织要求少得多的变化,同时仍然保留了XP的敏捷目标。您能使用这一“可选择的方法”作为蓝本来设定自己的敏捷方法学(本书临近结尾处提供了一些指针,指向我们感觉比XP更为严谨的其它敏捷过程)。 然而,本书最重要的目的是打碎一些紧随XP浪潮开始出现的神话,譬如无需记录工作的神话,一位现场客户和一些自动化测试足以替代书面需求规范的神话,以及个人的需要和舒适是项目次要元素的神话(即,“和我们结对编程或另谋高就”)等。并且我们打算以娱乐和幽默的方式来实现我们的目的,因为……很好,因为相关的主题要求这样。 读者对象 XP经常由程序员引入组织。这毫不奇怪,因为XP是“对程序员非常友好的”方法。它提升了程序员的作用(本质上不是一件坏事),并把他们置于与客户齐舞的水平。因此,如果您是经理或客户,正被兜售在下一个项目中使用XP的想法,本书提供了一个颇有价值的反面观点。 如果您是将XP引入组织的程序员,本书应该对您有所帮助,因为它概述了XP的许多危险,它们可能是潜在的项目杀手,而这些危险在其他有关XP的书籍中倾向于被一带而过。 如果您正在考虑剪裁XP以提取它的所有长处,但又想避免“多末诺骨牌”效应,也就是说,避免过程的一个小的变化引起整个过程崩溃,这本书提供了一些可贵的指导。 此外,如果您是位软件开发者,只想要读些古老、精彩,令人捧腹的讽刺,这本书应该投您所好!