《人月神话》这本书风行已经很久了,写成于1975年,经历这么久的时间,在当前又重新流行,让我很惊讶。人月神话看上去这么浪漫的名字,原来并不是真的说神话故事,作者阐述的主要观点是在软件开发项目上项目进度和增加人员这两个概念是不能互换。虽然已经时隔20多年了,这本书依然给我震撼,一是让我惊讶的是,美国20年前软件项目所面临的问题,在我们现在依然如此,糟糕的情况没有改变,大家仍旧在焦油坑里挣扎,而且看上去没有解决办法。二是作者对软件项目失败的总结,每一个问题我们依旧再犯,特别读到“是当意识到进度的偏移时,下意识(以及传统)的反应是增加人力。这就像使用汽油灭火一样,只会使事情更糟。越来越大的火势需要更多的汽油,从而进入了一场注定会导致灾难的循环。“三是作者在那个时候,就根据自己的经验提出了对于软件任务的进度安排,以下是作者使用了很多年的经验法则:1/3计划1/6编码1/4构件测试和早期系统测试1/4系统测试,所有的构件已完成我们公司是通过cmm3认证的,理论不用我说,大家好像都明白,实际情况呢,有谁真的拿出那么多时间作计划,又有谁拿出那么多时间作测试,不过令人欣慰的是,大家确实在向这方面改变,比如我们公司测试部现在就是一个很大很关键的部门,所有的程序发布都需要测试人员的签字。当然,也许可以找点客观原因,比如现在国内多数客户不成熟,签单子靠关系,一旦签了又恨不得明天就正式运行,但是本着“没有任何借口”的观点,我们该怎样改进呢,看看能否找到作者所说的银弹呢。
人狼是传说中的妖怪,只有银弹才能杀死他。作者认为软件项目具有人狼的特性,因为软件项目也可能变成一个怪物,一个落后进度、超出预算、存在大量缺陷的怪物。作者通过软件系统的内在特性复杂性、一致性、可变性和不可见性来分析说明了软件天生就没有银弹。
作者试图通过分析软件问题的本质和很多侯选银弹的特征来探究其中的原因。他行动的第一步是将大块的“巨无霸理论”替换成“微生物理论”。这个变化的过程告诉你,进步是逐步取得的,伴随着辛勤的劳动,对规范化过程应。
进行持续不懈的努力,而这个努力的过程相应的就诞生了软件工程。作者对软件工程诞生的原因做出这样的解释,我觉得符合外国思维的特点,这正是国人所缺乏。记得有一位朋友说过,中国妈妈与德国妈妈的区别,他说,如果手里拿的针掉到地上了,中国妈妈的第一反应是估计针掉下去的范围,然后在这个范围里面找,可能很快就找到了,也可能一直都找不到;但德国妈妈不同,她会拿一根粉笔来,把整个屋子画成一个大圈,接着把大圈分成许许多多的小圈,然后再到每个小圈里找,虽然比较慢,但最终肯定可以找到。仔细想象,大多数情况下,中国妈妈都会找到得比较快,这确实符合大多数中国妈妈的思维习惯,每个中国妈妈都这样找,这好象是与生俱来的本事,但为什么德国妈妈没有这个本事呢?是德国妈妈笨吗?为什么中国妈妈也有找不到的情况?而德国妈妈,虽然速度慢了点,却始终能够找得到?如果把这件故事推而广之,多年以后,德国妈妈创建了找针工程,她通过多次找针的实验数据,分析出针掉到整个房间中各个小圈的概率,总结出针在哪个小圈的概率最大,很快就可以找到针,找针速度早已高过中国妈妈,而中国妈妈还在依循与生俱来的本事。你能说德国妈妈笨吗?为什么中国妈妈和德国妈妈会有这么大的区别?是德国妈妈把大块的“巨无霸理论”替换成“微生物理论”吗?我觉得是是,你说呢?作者在后面的论述中用数学和物理的发展为例子也说明了,这种思想的成立。
余下的作者把软件工程按“巨无霸理论”替换成“微生物理论”的过程详细的说明,值得看,我关注的不是具体的内容,具体内容可能有些不合适宜,我关注的是作者的思考方式以及处理方法,这是非常重要的。
在“以往解决次要困难的一些突破”和“银弹的希望”章节,从概念上讲述了软件的发展,其中讲到“专家系统”时,使我想起一部科幻电影,忘了电影名字了,有个情节大致是这样的,一位非常有经验的主管死后,有一名较优 秀的下属接任,但这时出现了一位非常厉害的敌人,这位新主管无论如何也战胜不了敌人,这时想起了以前的主管,心想前主管一定有办法对付这个敌人,而前主管的大脑就存放在系统里。