敏捷幻象

原文首发在敏捷中国讨论组,后进行修改。

“敏捷的开发速度快。”我已经不是第一次听到这个说法了,每一次我都会做解释,但是每次对方都觉得我多余解释,很不耐烦的去做其他事情了。这从我用agile这个词汇做推广的时候就开始了,只不过今天几乎我遇到的每一个新来的敏捷者都在说:“敏捷就是速度快啊!”我觉得一个头脑正常的软件从业人员就不该有这个想法。不管这个人年纪多大,地位多高,身份多显赫,都应该被开除出这个行业。

《没有银弹》,我曾经一个晚上写了1万多字的博客,来解释和介绍它的观点。费这么大的力气,其实就是因为有个人,耍小聪明,非要说银弹是可以存在的。今天其实类似的人,还是不少,虽然他们可能也声称自己是敏捷了。

于是有这些不知道来路的所谓敏捷者,再加上一些市场人员和推广人员,就形成了现在的气氛。他们总是在说或是早暗示敏捷的开发速度是快的,比其他任何方法都快。客户们兴奋了,觉得敏捷好啊,是个宝贝,拿回家至少可以对付一年半载。到处都在说我们要敏捷起来,我们一定能敏捷起来。过了一段时间,单元测试也做了,持续集成也做了,重构也搞了,故事也用了,也scrum了,也站立开会了,可是速度还是不能达到要求。那一日到来的时候,自然这些人就会说敏捷不行,至少在“我们”这里不行。

当然跟这些人想的不一样,敏捷的快,不是开发速度快,而是反映速度快。开发速度和反映速度,就好比人跑步时候的直线速度和拐弯的速度。非洲猎豹是直线速度最高的动物,但是他们对付善于转弯的羚羊时,完整不站上风。可以说敏捷的这种快速反应的能力,不仅仅不会增加开发的速度,还会稍许降低速度。这个就跟你只要弯道多,就不可能发挥出最大速度的道理一样。那么我们实际看到的情况怎么解释呢?或者说敏捷如果是一种慢速度的开发方法,怎么会流行起来呢?

敏捷的推出,是面向软件危机的。软件危机是我们开发的时候,遇到的最大问题是我们会失败,也就是我们不能按照预先的设想完成软件开发。而我们今天面对的情况是,我们虽然可以开发出一个软件,但是开发速度太慢了。因为敏捷,那些本来就会失败的项目,在早期被结束了;那些需求不明确的项目,在早期就已经开发有一个工作的东西了,虽然这个东西还没有完全达到当初的预想;有些项目客户的想法有问题,在早期通过实际的开发他们变得理性了;在项目结束的时候最终达到了一个目标,虽然这个目标并不是开始设定的那个,但是这个很可能比那个还好些。于是人们就形成一个错觉,那就是敏捷的开发速度更快。

实际上敏捷不能直接的给你提供更多的代码行,更多的模块,更多的设计。他仅仅是减少了你犯错误的可能,和降低了你改正错误的成本。

但,是不是说只有敏捷有这个能力,其他方法就没这个能力呢?根本不是这样,关键还是要靠谱的人。是不是就没有办法提供更高的开发速度了呢?当然不是,靠谱的开发者是唯一的真正能提高速度的开发方法。也就是说虽然没有银弹,但是确实存在人狼杀手。敏捷至少当初是被一群靠谱的人使用的方法。现在大家都来用敏捷,是不是大家就都靠谱起来了?我看这个事情未必,靠谱的继续是靠谱的,不靠谱的还是不靠谱。也许敏捷能让开发者更能提高自己的开发能力,并最终靠谱起来。但是这也仅仅是一种可能性的存在,而不是一个充分条件,而是这也需要时间。

所有的方法,几乎都是为了一个目的而开发的,那就是提供目标的重现性实现,提供更大的可操控性。即使是敏捷也是这样。当你要开发一个软件的时候,你自己的能力是唯一决定你能否成功的指标。而方法则仅仅是提高了你成功的概率。方法今天不会成为一个保障,估计明天也不可能,后天也不可能,在我看得到的日子里都不可能。

猜你喜欢

转载自ozzzzzz.iteye.com/blog/1829995