《极限编程》前言及第一章

作者:凯旋网络来源:凯旋网络
加正确的代码。你们的名子按照字母顺序是∶JimBaker,KentBeck,TomBrown,DavidBruhweiler,SeanBurke,chromatic,PhilCooper,WardCunningham,BryanDollery,JeffHaemer,GedHaywood,JoeJohnston,WalterPienciak,ChrisPrather,LweisRowett,MichealSchwern,JeremySiegel和MikeStok。

我还得谢谢这些年来我的导师,他们是∶JonBondy,PeteBonham,DavidCheriton,TomLyon,JimMadden,RichardOlsen,AndrewSchofield和RogerSumner。你们的智慧都星星点点的散布在这本书里面,希望我都正确的掌握了它们。

最后,我还要对PeteBonham的家庭表示最深切的同情。你们让我在如此困难的时候走进你们的生活。Pete的离去是我写这本书的推动力,他一生的工作仍在引导我前进。

生命和工作是一系列的成功。它们每时每刻都在发生,XP只是让它更加易与显现,而你得选择去庆祝它们。

 

第一章

不管客户告诉你什么,那里基本上都是一个问题。—GeraldWeinberg

软件是一种稀有资源,供大于求。我们总是听说要满足需要得增加巨大数量的IT人才。有些人相信通过廉价开发外包可以提高产出。然而这只是把软件开发的问题转嫁给他人,而且这样做只不过增加了和客户无法沟通的程序员的数量,使得问题进一步恶化。

程序员的任务是准确的获得任务的细节。这不像在物质生产过程中,开销主要在于对流水线上每一个产品的复制上。外包对于生产来说很有效,因为细节都在设计阶段已经决定下来。生产过程主要是对已经决定的设计的重复。对于软件来说,拷贝的代价几乎没有,主要是设计阶段决定了产品的代价。便宜和充足的劳动力虽然提高了生产过程的效率,却无法用规模化生产给软件开发过程带来效率。

编程的代价是和网络效应相关的。在你给项目增加程序员数量的过程中,沟通的代价也随之以平方比率增长。因为项目中的细节必须在更多的渠道传播。而且随着客户和程序员之间的距离加大,重要渠道的数目也随着增加。减少客户和程序员之间的沟通代价是使细节得到有效实施的关键。这中间的等待时间会增加成本。为了提高效率,客户需要和程序员及时沟通,而程序员也需要得到客户的及时回应。

这一章区分软件开发和物质生产的不同之处。我们试图解释为什么传统的计划驱动的开发方法会增加项目的风险,为什么直面失败会减少风险。这一章以一个比喻来结束,它展示了需求和实现阶段的风险是如何通过让客户更接近开发过程来得到降低的。

一些统计数据

根据商业软件联盟的报道,软件产业正在以迅速的增长来满足看上去无限增长的需求。从1990年到1998年,美国的软件产业以每年13的速度增长。

  • 广告推荐