2.3.2 海岸灯塔
方法论的研究者和实践者,总是希望能够找到一种最好的方式,来轻松地开发出高质量的软件。而敏捷方法的支持者,是其中最灵活、最富有反思精神的一群人。
敏捷方法的支持者在理论上是理想主义者,在实践中是实用主义者。他们似乎指出了一个激动人心的方向,但是真正的终点其实还很远。
遗憾的是,敏捷方法的可操作性是很差的。其原因在于,所有的一切都依赖于人本身。想象一下,我们强调对人的关注。可是,谁来对人关注?还是需要依赖某些人——具有特殊权力的人。在敏捷方法的游戏规则中,针对这些特权人本身并没有什么约束。他们可以关注人,可以懂得如何关注人;也可以不这么做,或是不懂得如何做。
此外,敏捷方法还具有一些明显的“漏洞”。
例如,敏捷方法宣称,个人之间的交互要胜过过程和工具。可是,不难想象,这些个人之间的交互可以产生好的化学反应,也可以带来糟糕的后果。
事实上,影响交互的因素有很多。我们在前面提到过不少人的缺陷。这些缺陷在交互过程中可能被成倍地放大。
XP中的结对编程,效果完全取决于结对的人。
我见过争吵带来的创意,也见过争吵带来的失败。
乐观主义者从结对理论中看到创意,悲观主义者从结对理论中看到失败。
另外,无论你是否承认,那些完全依赖于人员素质的敏捷方法是不容易实施的(当然,如果你具有高质量的敏捷能力,则另当别论)。
每天站立10分钟,给你带来的只是理论上的兴奋。我听到过很多抱怨,一些软件开发人员认为,敏捷方法像是在玩一种敏捷的数字游戏。每天汇报进展的压力,只是使团队成员在评估工作量时更加默契。
或许,我们需要更多的培训;或许,我们需要从更多的敏捷方法实践场景中学习真正有用的技巧;或许,问题(本质上)根本就与方法论无关。
无论如何,我们需要一个光明的希望,需要一座海岸灯塔。
相比之下,CMM更加朴实和现实。有时候,我觉得CMM并非完全不关注人的因素,CMM不断地强调软件开发过程,更像是在通过一种间接的方式来影响人。
敏捷方法和CMM之间的差异,使我想到了文化。
英国人类学家泰勒认为,文化是一个复杂的总体,它包括知识、信仰、艺术、伦理道德、法律、风俗,以及作为社会成员的个人,通过学习获得任何其他能力和习惯。
文化通常起源于个人和群体的习惯。当人们的习惯,融入到日常的生活中时,文化就产生了。
在习惯的培养上,CMM更加系统。它似乎更明确地希望,通过制度和约束来造就好的工作习惯。而敏捷方法,则更多地依赖个人,它希望通过一些简单、灵活、人性化的最佳实践,来培育一种良好的文化。这或许是二者之间的本质差异。
对于敏捷方法来说,没有个人技能的支撑,实践通常是失败的。
最后,我想强调,这一节的内容不是在批判敏捷方法。事实上,敏捷方法非常适合于那些做好准备(顿悟)的人。它是我所见到的最高效的方法。