《The Mythical Man-Month》(人月神话)
最早接触到这本书还是在看c++编程思想的时候,里面提到了本书的一个著名论断,没有银弹 ("No Silver Bullet !").看到人,月,银弹,还以为这是本关于狼人的奇幻作品. :P
虽然这本书写的是软件工程方面的一些问题的研究,但我觉得对所有工作乃至生活中的很多事情都有引用意义.
书的起因是ibm的os360系统的失败.在6 7 80年代的那个软件危机里,所有人,所有组织都发疯一样的写程序,并且所有人都相信自己这个2人组合完全可以胜任1000代码行/年的任务.然而事实上,就像这本书的标题一样,如果用人月作为一个软件的工作量单位的话 (比如说,一个软件的工作量是100人月,就是说100个人可以在1个月内完成或者说20个人能够在5个月内完成),工程管理人员很容易在软件的某一个部分发生延期的时候通过增加人手使软件能在规定的时间内完成.但事实上这只是个神话,每当有新的程序员进来的时候,就要花费一定的时间对他进行培训,并且小组的决策过程将更难进行,就想所有其他类型的工程,比如作业,并不是人多才能更快的完成..
年轻人总是些乐观主义者--无论是什么样的程序,结果是勿庸置疑的:"这次它肯定会运行。"或者"我刚刚找出了最后一个错误。"
所以,很多人在软件危机后期意识到,对工程的科学管理是如此的重要.于是.那个时期,ibm提出了一种叫外科手术队伍(The Surgical Team) 的解决方案 , (课本里似乎叫做Chief programmer team) . 主题思想是,主要的工作由一个主治医师和作为后备的副手进行(Chief programmer & backup programmer),并由麻醉师和护士作为辅助(Librarian & Support Staff).最大程度的利用主治医师的想象力,经验和技术优势,并达到很大程度上的权力集中(对于权力过于集中导致的专制,文中有很详尽的论述和反驳) . 可惜的是,这种模型对于一个过于庞大的系统是没有任何意义的.如果一个用1000人工作1年的工作我们用10个人在10年里完成了,很难说我们是否节省了资源.因为:
一个产品在最初设计的10年后才出现,还有人会对它感兴趣吗?或者它是否会随着软件开发技术的快速进步,而显得过时呢?
除了颇有争议的"没有银弹"那章,这本书里我认为最精彩的就是作者对建造巴比伦塔这项"工程"的引用了. 全文摘在这里 :
现在整个大地都采用一种语言,只包括为数不多的单词。在一次从东方往西方迁徙的过程中,人们发现了苏美尔地区,并在那里定居下来。接着他们奔走相告说:"来,让我们制造砖块,并把它们烧好。"于是,他们用砖块代替石头,用沥青代替灰泥(建造房屋)。然后,他们又说:"来,让我们建造一座带有高塔的城市,这个塔将高达云宵,也将让我们声名远扬,同时,有了这个城市,我们就可以聚居在这里,再也不会分散在广阔的大地上了。"于是上帝决定下来看看人们建造的城市和高塔,看了以后,他说:"他们只是一个种族,使用一种的语言,如果他们一开始就能建造城市和高塔,那以后就没有什么难得倒他们了。来,让我们下去,在他们的语言里制造些混淆,让他们相互之间不能听懂。"这样,上帝把人们分散到世界各地,于是他们不得不停止建造那座城市。(创世纪,11:1-8)
Now the whole earth used only one language, with few words. On the occasion of a migration from the east, men discovered a plain in the land of Shinar, and settled there. Then they said to one another, "Come, let us make bricks, burning them well." So they used bricks for stone, and bitumen for mortar. Then they said, "Come, let us build ourselves a city with a tower whose top shall reach the heavens (thus making a name for ourselves), so that we may not be scattered all over the earth." Then the Lord came down to look at the city and tower which human beings had built. The Lord said, "They are just one people and they all have the same language. If this is what they can do as a beginning, then nothing that they resolve to do will be impossible for them. Come, let us go down, and there make such a babble of their language that they will not understand one another's speech." Thus the Lord dispersed them from there all over the earth, so that they had to stop building the city. (Book of Genesis, 11:1-8).
巴比伦塔的管理教训
据《创世纪》记载,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,但巴比伦塔同时也是第一个彻底失败的工程。
这个故事在很多方面和不同层次都是非常深刻和富有教育意义的。让我们将它仅仅作为纯粹的工程项目,来看看有什么值得学习的教训。这个项目到底有多好的先决条件?他们是否有:
1. 清晰的目标?是的,尽管幼稚得近乎不可能。而且,项目早在遇到这个基本的限制之前,就已经失败了。
2. 人力?非常充足。
3. 材料?在美索不达米亚有着丰富的泥土和柏油沥青。
4. 足够的时间?没有任何时间限制的迹象。
5. 足够的技术?是的,金字塔、锥形的结构本身就是稳定的,可以很好分散压力负载。对砖石建筑技术,人们有过深刻的研究。同样,项目远在达到技术限制之间,就已经失败了。
那么,既然他们具备了所有的这些条件,为什么项目还会失败呢?他们还缺乏些什么?两个方面--交流,以及交流的结果--组织。他们无法相互交谈,从而无法合作。当合作无法进行时,工作陷入了停顿。通过史书的字里行间,我们推测交流的缺乏导致了争辩、沮丧和群体猜忌。很快,部落开始分裂--大家选择了孤立,而不是互相争吵。