人月神话,只听名字可能以为是讲人类如何登陆月球的。看书之前,我还在想人类登陆月球与编程有什么关系,难道是讲飞船的系统吗?看了书的人月神话这一章,我才知道此月非彼月。这个月说的是时间,讲的是项目开发时间与安排人数的问题。
这一章中首先强调了作为编程人员不能成为一个盲目乐观主义者,想着“这次它肯定会运行”或者“我刚刚找出了最后一个错误”等等。当然,悲观更是不允许的,否则失去了编程的乐趣还怎么创造出令人惊奇的“魔术”呢。
用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。人数和时间的互换仅仅适用于某个任务可以分解并且不需要相互的交流的情况。这在割小麦等工作中是可行的,而在系统编程中近乎不可能。当任务由于次序上的限制不能分解时,人手的添加对进度没有帮助。软件开发本质上是一项系统工作——错综复杂关系下的一种实践——沟通、交流的工作量非常大,它很快会消耗任务分解所节省下来的个人时间。从而,添加更多的人手,实际上是延长了,而不是缩短了时间进度。作为项目负责人,要能够灵活的安排任务,避免多人共同做一项任务却延误了项目开发进度。