人月神话阅读笔记01
本书作者作为一个经验丰富的软件项目管理者提供给我们很多发人深省的观点。先从书名“人月神话”开始探讨,人月即早期用来度量软件开发工作量的一个单位。具体为将每个人每月的工作量作为一个基本单位。用人月的量来衡量整个项目的规模与工作量。并且早期认为人月的模式简单符合线性关系。即:10人*月的项目等价于5人*2月等价于1人*10月。但是这种看似简单完美的模型却是一个美丽的神话,人员和时间是不能简单替代的。
软件项目的进展并不能用简单的线性关系抽象。软件开发不是一项简单重复的体力劳动。设想如果一个人要扫雪,假设他一个人需要一个小时扫完,但是如果他再找来5个人一起扫,可能只需要十分钟。软件开发比这要复杂的多;如果一个人用十天能做完的一个项目,他做到第五天后想找人来一起做,这就不是找五个人一天就能做完的事情。也许完成项目花费的时间比十天还要多。他要花时间为新加入的队员介绍项目,为他们合理分工,如果有一人没按时完成,所有人都要停下等待……由此引出一系列不可预估的问题。复杂度大大提高。总之:从项目的人数和时间两个维度考虑,都不能以人月作为软件开发度量:1.人数的增加对软件开发的贡献不是线性增长的(队友之间有协作交流的问题)。2每个人在项目开发中的工作量也不是线性递增的(开发的过程中复杂度提高)。他们可能会是log(o)或更复杂的情况。总之,在软件开发中,合理评估参与人数和时间是一项很有挑战并且需要经验性的工作。同时,应该尽量减少或避免人员的改动。