人月神话阅读笔记—序言及第一、二章
人月神话阅读笔记—序言及第一、二章
初读人月神话这本书的前言和序言,觉得这本书在关于软件体系结构思想层次方面应该是很高的,而且它流传甚广,并且经过了40余年的沉淀,仍然经久不衰,可见此书的影响是相当深远的。
从目录来看,此书说的不是如何进行程序代码的编写,更多的是关于软件工程中的管理问题,从很多的具体事例,和软件工程历史上发生的一些著名事件来引出章节的内容,以及通过这些具体事件,反映了一些什么样的问题和解决的办法。
第一章的标题名为焦油坑,以开发过程中遇到的很多问题来比喻。介绍了编程系统产品所耗费的时间其实是很多的,接着介绍了作为程序员这个职业的乐趣所在,其实是一些简单纯粹的快乐。但是也有很多的苦恼,这本书会提供一些合适的方法。
导致项目滞后或者最终不能完成的一个很重要的原因就是缺乏行之有效的进度安排。其中有很多的原因,不过一个主要的原因是人们对于整个过程过于乐观,认为一切都将正常运行。但是编程是一项思维活动,人在进行思维活动,难免会有缺陷漏洞,所以这种乐观主义本身就是不正确的。
在进行开发时间估计上,对于一些可以分解并且互不干预的工作中,人越多,时间越少,但是软件开发是一项无法分解的任务,不会随着人员的增加,而造成开发时间的缩短,相反会造成时间的增加。
在进行系统测试的时候,需要的时间会不太容易估计的,因为人的思维不知道会在哪里产生错误,所以测试这个环节,需要分配足够多的时间。在进行进度的时间估算的时候,对于时间的估算有时候会非常的不充分。
在开发进度中,如果第一个阶段的进度没有完成的话,可能会产生更多的成本,但是采取增加人手的方法,又是非常不正确的,并且会增加时间成本。所以通常情况会选择削减任务量的方法,会比较可行。
过去的看法:
在开发过程中,如果预期的任务没有完成的话,自然是要增加人手来加快任务进度。
这样为什么不好:
如果只是简单的增加人手,那么很有可能会像书中所说的那样,不但不会加快进度,反而会增加时间成本。
解决办法:
在出现这种情况之前,应该一开始做好任务的进度估计时间工作,如果过程中,出现上述情况,则应该采取其他办法,而不是增加人手。