今日读了经典书籍《梦断代码》,读的内容不多,但是感触确是很多。
梦断代码是根据一个实际项目Chandler来介绍软件开发中的一些重大的问题。而在书中开篇便写了该项目中遇到的一些问题,那就是对开发时间把握的不准确。无论是处理一些bug还是开发软件,在当时都是无法对时间进行一个准确的把握,软件开发延期等等甚至都是常事。在他们看来,这就像建筑行业的工期一样,往往是会延期的,如果准时完成甚至还会让人感觉有些不对劲。而对于一个延期的项目,人们往往会向项目中投入更多的人力,然而为了让新人可以更快的融入开发环境,所有人都需要等新人准备就绪后才可以开工,这又会造成项目的延期,于是又投入更多的人力,往复循环。
就像人月神话作者布鲁克斯说的那般:只有在任务能够分配给许多相互之间无需沟通的工作者时,人和月才是可互换品。而什么是人和月呢?所谓的“人月”,是一种科学管理理念,他假定生产力可以被拆分为不连续、无差异、可替换的单元。所以这样就可以用人来换取时间了。假如一个项目需要100个部件来组成,那么如果一个人每天可以完成5个部件,那么这个项目两个人需要十天完成,如果想要两天完成,则把人力投入为10人即可。
然而这一理论在现在看来,我认为并不是那么的适用了,现在已经经济全球化,无论多么小的部件也是多人多地间合作完成的,根据所学数据结构的原理,可知一个项目的时间长度取决于其关键路径,也就是其需要的关键事件,而这些事件往往是不能像那理论一样可以被拆分为不连续、无差异、可替换的单元的吧。