看到大家都对这种轻量级编程方法那么感兴趣,我也从UML的条条框框跳出来,呼吸一下新鲜空气。从大家充满渴望和激情的眼神中可以看出Ken Bech已经不亚于上帝在我们心中的地位了;他带给我们的不仅仅是一种解脱,更是一种超脱----不用看着堆积如山的文档,只用照顾好自己的手指就OK了!
这就是XP的理念,不要文档,不要那么多恶心,复杂的条条框框。大家可以大声地贬低UML了,可以把CMMx当成小孩子的玩具了。
不过,从方法论的角度出发,Extreme Programming强调的并不仅仅是以人为本,并不是倡导抛弃过程。实际上,轻量级的方法往往能够在响应快速需求方面有很好的表现;然而,就我所看到的,很少,极少大型的项目是采用XP方法的。这是因为XP强调拥抱变化,但是大型系统对变化敏感性不那么强烈。XP也是有过程的,只是这个过程不是建立在文档公式上面的,而是建立在程序员个体能力上的,或者说建立在一对程序员的组织能力上的。
XP过程中出现的最多的就是迭代。迭代在任何软件工程方法中都有无可替代的地位,但是,可以说极限编程就是建立在迭代开发的基础上的。每一个进入极限编程领域的程序员都需要做好迭代的准备,所以虽然XP不需要如庞然大物般的项目前期设计,但是在迭代的过程中对设计的重新审视,重构往往会带来一定的风险。这一点说明XP的轻量级并没有减低设计的重要性,反而要求程序员在项目的任何时期都具有设计的敏感性。从这一点出发,参加极限编程的程序员都需要有一定的设计能力。
期待一个从头开始就用XP的项目。更重要的是,极限在我们心中,迭代,重构;沟通(communication),简单(simplicity),反馈(feedback)和勇气(courage)。从手头上的项目开始一项全新的实践,这才是学习的目的。
(文中许多思想来源于:<<Extreme Programming Examined>>)