1990年初,软件工程业面临着来自于内外两方面的变化。从内在的方面来看,面向过程(Procedural Programming)的编程方式逐渐被面向对象(Object-oriented Programming);而在外部,随着“.com”经济的繁荣和大批IT企业的涌现,如何改进开发过程,以尽快缩短产品到达市场的时间,也成为最受瞩目的热点之一。XP正是在这样的外部环境下诞生的。
XP的许多方法和理念,都在此前的项目中有所体现。比如,“测试优先”的方法,最早运用于美国太空署首个载人航天计划(Mercury,1959-1963)中,而“代码重构”等概念,也在1984年Leo Brodie的书中有所论述。1996年,克莱斯勒公司启动了3C综合薪酬系统的开发计划,同时力图通过该项目来熟悉对象编程方法,特别是Smalltalk。于是,他们邀请了这方面的专家,Kent Beck,来优化整个开发过程。而Kent Beck利用了这个机会,把自己的开发理念编制成规范并运用其中。这是XP作为一个独立的开发方法,首次面世。时至今日,XP已经拥有不少变种,这使得它拥有更强的生命力,在很多开发环境与当年迥异的项目中,都有优异表现。
因此,XP从它诞生之日起,就不是以教条的面孔出现的。它的出现,是适应环境的结果;它的基础,是以往的编程实践;而它所要解决的,则是怎么在当时的竞争中活下去的问题。
而今天,我想知道的是:是否有一种团队开发的方式,在用户需求不明确、技术不明确、开发人员基础参差不齐、没有条件坐班(只能网络交流)的情况下,却能在合理的时间范围内下,完成一个需要相当创造力、且拥有不少新技术亮点的中小型项目?
目前的XP开发方案,显然不能解决全部问题,但可以解决一部分问题,所以应该是一个好的蓝本。接下来所要尝试的,就是推陈出新,以适应时代的变化,找到一种行之有效的XP网络协作开发方式,例如:如何有效地进行队员培训,如何利用发达的网络条件进行协作的等等。考虑到中国所特有的庞大程序员人群和开发潜力,这些尝试和探索,其意义应当不局限于市场价值而已。
(注:第1-2段内容,主要来源于英文版Wikipedia对于XP的介绍)