《人月神话》-阅读笔记4
这部分讲述人力和时间并不呈现线性关系。指出以大量人员和较短的时间,并不能缩短软件的开发进度。一窝蜂的作业方式无助于软件生产,且会制造麻烦,产生出更差的软件。向进度落后的项目追加人力,只会使进度更加落后。因为新进的人员需要时间了解整个项目,而增加额外的沟通消耗。当有N个人必须在这群人之中进行沟通时(无阶级关系),当N增加,其输出M将抵消其效益,甚至倒退(最后几天所完成的进度,远不如刚开始几天所完成的进度。像是发现了许多错误)。
用“人月”来衡量工作规模的大小是危险的,使用人月的前提必须是在人力和工时可以互换的情况之下:当一份工作因具有连续性的限制而不可切分时,就算投入再多的人力,也不会对时程有所影响,生小孩就是需要十个月,多少个母亲一起生都一样,软件工程就是像这样的工作,因为它必须调试,而调试本身就具有连续性的本质。
所有的编程人员都是乐观主义者。可能是这种现代魔术特别吸引那些相信美满结局的人;也可能是成百上千琐碎的挫折赶走了大多数人,只剩下了那些习惯上只关注结果的人; 还可能仅仅因为计算机还很年轻,程序员更加年轻,而年轻人总是些乐观主义者——无论是什么样的程序,结果是勿庸置疑的:“这次它肯定会运行。”或者 “我刚刚找出了最后一个错误。”所以系统编程的进度安排背后的第一个假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。
对这种弥漫在编程人员中的乐观主义,理应受到慎重的分析。Dorothy Sayers 在她的 “The Mind of the Maker”一书中,将创造性活动分为三个阶段:构思、实现和交流。书 籍、计算机、或者程序的出现,首先是作为一个构思或模型出现在作者的脑海中,它与时间和空间无关。接着,借助钢笔、墨水和纸,或者电线、硅片和铁氧体,在现实的时间和空间 中实现它们。然后,当某人阅读书本、使用计算机和运行程序的时候,他与作者的思想相互沟通,从而创作过程得以结束。
计算机编程基于十分容易掌握的介质,编程人员通过非常纯粹的思维活动—— 概念以及灵活的表现形式来开发程序。正由于介质的易于驾驭,我们期待在实现过程中不会 碰到困难,因此造成了乐观主义的弥漫。而我们的构思是有缺陷的,因此总会有 bug。也就 是说,我们的乐观主义并不应该是理所应当的。
本文来自博客园,作者:suN(小硕),转载请注明原文链接:https://www.cnblogs.com/liushuosbkd2003/p/18042126