Brooks。被认为是“IBM360系统之父,他担任了360系统的项目经理,以及360操作系统项目设计阶段的经理。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。

表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢。

 

编程有什么乐趣。

首先、编程是一种创造事物的纯粹快乐,如同小孩玩泥巴、上帝创造世界。

其次、快乐来自开发对其他人有用的东西。

第三、将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果。

第四、解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。

最后、程序员,几乎仅仅工作在单纯的思考中。

 

编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感。

 

我们只有事先了解一些编程固有的烦恼,这样,当它们真的出现时,才能更加坦然地面对。

首先、学习编程的最困难部分,是将做事的方式往追求完美的方向调整。

其次,是由他人来设定目标,供给资源,提供信息。现实情况中,实际的权威来自于每次任务的完成。

第三、伴随着创造性活动的,往往是枯燥沉闷的时间和艰苦的劳动。

第四、寻找最后一个错误比第一个错误将花费更多的时间。

第五、有时当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时。

 

产品开发所基于的技术在不断地进步。

编程,一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。

 

在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因。

 

所有的编程人员都是乐观主义者。

所以系统编程的进度安排背后的第一个假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。

将创造性活动分为三个阶段:构思、实现和交流。

对于创造者,只有在实现的过程中,才能发现我们构思的不完整性和不一致性。

我们的构思是有缺陷的,因此总会bug

 

用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。

沟通所增加的负担由两个部分组成,培训和相互的交流。

每个成员需要进行技术、项目目标以及总体策略上的培训。

软件开发本质上是一项系统工作。

沟通、交流的工作量非常大。

 

在时间进度中,顺序限制所造成的影响,没有哪个部分比单元调试和系统测试所受到的牵涉更彻底。

向进度落后的项目中增加人手,只会使进度更加落后。

需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果。

对于效率和概念的完整性来说,最好由少数干练的人员来设计和开发,而对于大型系统,则需要大量的人手,以使产品能在时间上满足要求。

 

我们理解的也好,不理解的也好,描述都应该简短精练。

20年前的一本关于30年前软件开发经验的书。