我对“没有银弹”的看法

Fred Brooks的《没有银弹》http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html引起了很大的争议,很多人纷纷从各种角度批驳软件业没有银弹这一观点。有些人则用该文观点否定软件工程中当前和未来一切技术和方法。

我个人认为,软件开发是将人力和资本转化成软件产品的过程,它类似于物理学中的能量转换过程。能量转换的过程不能创生新的能量,也即不存在永动机的事实,可以帮助我们理解软件生产的效率不可能无限提升的论断。

某些人相信的一些能够革命性提高软件生产效率的技术或方法,绝大多数是一种幻觉。举个我亲身经历的例子。我曾经分别在两个实施敏捷开发的公司从事软件开发,一个是私企,一个是外企。在私企时,我确实感觉软件开发的速度非常快,而个人的工作强度也非常大。当时我以为原来所谓敏捷开发就是加班。但当我到了第二家公司,才知道完全不是那么回事,敏捷是反对加班的。而另一方面,就效率而言,我个人的感觉是,在第二家里,并不比采用传统模式来的高。

敏捷开发有许多条件。而很多人相信它能提高开发效率,原来需要半年才能完成的产品,3个月就出来的,但根据我个人的经历和JavaEye里许多人对敏捷项目的描述,所谓速度快多数是基于加班的一种幻觉,每天工作12小时,一周7天,实际上并没有提高生产率,只不过每天4个小时和每周两天的剩余时间不需要老板付工资而已。但员工事实上是在付出的。

但我们也不能虚无的否定我们在软件开发技术和开发流程上的探索和努力。因为历史证明永动机的研究并非毫无意义,它提供了数以百计的机械装置,很多迄今还在造福社会,并为人类认识能量转换规律提供了经验。所以我相信,对软件工程的研究也一样,它能够提高资本到软件产品的转换效率,从而提高软件生产率。

“没有银弹”则是警告我们不要在软件界追求“永动机”。

相关推荐