读《人月神话》也有了一段时间了,现在也理清了一些自己的思路了,这次主要是针对里面的《没有银弹》这一话题,提出自己的看法。
我认为,在现有的所有体系中,都没有所谓的“银弹”,“银弹”只是人们想拥有一个一劳永逸的解决办法而针对一个具体事件想出来的临时的可行的某一个措施,它的效用时间是有限的,并且解决方法本身并不是一成不变的,而是随着时间与经历的增长在变化的。
用哲学的观点来看,运动是永恒的,我们不能将问题的处理定格于某一时刻或者某一阶段或者某一特定问题的问题处理。软件工程也是变化的,就好像当我们拥有了瀑布模型外,发现它并不能满足我们一些特定的需求,又出现了增量模型、螺旋迭代模型、敏捷开发等新的模型,且还在持续的更新中。从这个角度来看,我们永远没有办法采用一个已知的问题解决模式处理最新的问题。这个就如同我国在发展社会主义的时候不能照搬苏联模式,只能自己去根据国家实情去探索新的道路,新的发展方法。
这些变化都是因为人们的需求发生了变化而产生的,然而人们的需求不会满足,这就决定了软件需要时刻的变化,也决定了有银弹的希望不大。计算机硬件上人们采用微电子器件、晶体管、大规模集成带来了生产力的数量级增长,这看似已经是银弹了,但是这并不是所谓的“银弹”,不是以后所有的硬件生产就是这样进行流水线生产就能解决一定问题了,硬件生产技术一定会发生变革更新的。如果这样的流水线生产硬件设施就是“银弹”的话,那么现在的软件生产应该也算的上了吧,比起最初的命令行,现在拥有的丰富的编程库以及部分的图形化编辑界面,软件的生产量不知道已经是原来的多少倍了。
当然,不可否认上面的那些先进技术给软件的发展带来了巨大的福音,但是这也是在发展过程中,我们所知道的一种解决问题的有效技术、手段,它将会在以后的某一时刻被淘汰掉。说到底,现在的软件、硬件以及其他的大部分技术,都是人们在社会的生产生活中所使用的工具,当它们的发展与社会生产力不匹配的时候,它们终将被淘汰。
所以,“银弹”并不实际存在,存在的只是人们的一种期望,一种解决某一特定问题的短时间内有用的技术或者说手段。