读《人月神话》

为什么中国的程序员总是在不断学习新的开发工具、钻研程序代码,而不能逐步提升自己的视野、思维和经验?
——摘自序

所谓人月(Man-Month),是软件开发中工作量的度量,然而它却不是线性的,10个人10个月可以完成的工作,很多情况下100个人并不能在1个月完成。

以下是我的理解与摘抄(斜体是摘抄):


当人数增多时,平均每个人的效率会降低。甚至,到达一定程度后,随着人数增多总体的效率反而是下降的。因为新增加的人需要进行培训,人员交流存在成本等。
向进度落后的软件项目中添加人手只会使进度更加落后。
首席程序员模型是效率较高的软件开发模型。

巴赫曾被要求每周创作一篇形式严格的歌剧,但这似乎并没有压制他的创造性。

功能和理解上复杂程度的比值才是系统设计的最终测试标准。
当功能相同时,越易用越好。

概念的完整性
设计必须由一个人,或者非常少数互有默契的人员来实现。
设计的一致性。
系统要自洽,要有一致性。

系统要相对简洁,舍弃多余的功能。


工作量 = 常数 x 指令数量^1.5

一方面要对工作进行合理有效的分割,另一方面又要保证人员之间的沟通。

关于完全避免GO TO语句的说法显得有些教条主义,而且似乎有些吹毛求疵。
一次添加一个构件。回归测试,步步为营。


记忆衰退的规律会使用户-作者失去对程序的了解,所以文档和笔记很重要。

我从来没有看到过一个有经验的编程人员,在开始编写程序之前,会例行公事地绘制详细的流程图。
但设计实现这一步还是相当相当重要。

关于自文档化,我想sgi的STL源码做的足够好了。


卓越的设计人员 很重要。
如果主要部分不变,即使次要部分的任务占据了工作的9/10,即使不占用任何时间,也不会给生产率带来数量级的提高。


Soli Deo gloria.

你可能感兴趣的:(其他)