《人月神话》读书笔记
《人月神话》这本书几年前就听别人说是本很经典的软件开发方面的书,被赞为“神品”。这本书的成功之处在于他思想的前卫性,以至于不只是软件行业的人在读,在印度甚至人手一本。
这本书主要是针对软件开发管理方面的内容,这主要原因可能是因为作者以前就是项目的管理者,他是站在管理者的角度写的。即便这样,对于一个从来没有参与过真实项目开发,更没有领导过团队的我还是有一定的吸引力,这本书中我最喜欢的就是焦油坑、人月神话和没有银弹这三章。这本书里面为了论证某一观点,会举出许多实际的项目作为证据,用了很多的形象的比喻,来阐述项目管理中的一些问题,让人能够比较容易理解。
一:焦油坑
作者在书中介绍了焦油坑的概念,提出在过去几十年的大型系统开发就犹如一个焦油坑。各种团队,大型的、小型的,庞杂的和精干的,一个接一个淹没在焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累计在一起的时候,团队的行动就会变得越来越慢。
这告诉我们有问题要及时解决,不能等问题累计再动手。
二:职业评估
作者从编程系统产品、职业的乐趣和职业的苦恼方面让我们认识了软件开发这个职业以及充满在这个职业中的乐趣与 苦恼。简单的程序已经不能称作系统,编程系统和编程产品称为编程系统产品。它的成本高达九倍。只有编程系统产品才是真正有用的产品,是大多数系统开发的目标。乐趣是任何职业都不能缺少的,只有有了乐趣才会有动力,才会有创造力。虽然现在我们对于软件开发没有很清楚的概念,但是我们也应该充满一种好奇心和一种乐趣,体会其中魔术般的力量。苦恼是必不可少的,但是应正确看待这些烦恼。
三:进度问题
在人月神话这章,作者说进度问题是项目管理最为关注的问题。项目的时间依赖于顺序上的限制,人员的数量依赖于单个子任务的数量。在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要的原因。文章分析了几个原因。乐观主义:所有的编程人员都是乐观主义。人月:用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。系统测试:在早期进度策划时,允许充分的系统测试时间是非常重要的。空泛的估算。重复产生的灾难。
通过此部分,我看到了在软件开发中会出现的一系列问题。这些问题发现了,我们就应该时刻注意,及时解决。而不应该拖拖拉拉。
四:前瞻性
没有银弹这篇文章里作者列举出了当时一些非常先进的技术或思想理念,例如Ada和其他高级编程语言、面向对象编程、人工智能、专家系统、“自动”编程、图形化编程、程序验证、环境和工具、工作站等。虽然这些先进技术在一定程度上提高了软件开发的效率,但是始终没有达到银弹的效果。距离作者的预言已经过去有20多年了,纵观现在的软件开发领域,虽然新技术层出不穷,但是还是没有一种银弹能够让软件开发产生一次革命。另外我真的很惊奇于作者在当时就能够看到编程的热点和技术方向,他所列举的每一个技术都是现代软件编程的重点和将要兴起的技术,前瞻性之强令人叹为观止。
人月神话为什么能畅销30年。的确如书中所说,其实他只是以某个项目为起点来展开软件工程的实际开发中的原理。大学的教科书:软件工程,计算机原理,编译原理等书籍都至少采用了10年,而其他的java语言等只是这2年才开课的。计算机技术的确变化很快,某些原理却并没有发生大的变化。
《人月神话》这本书帮助我们揭开了软件系统这一人类创造中最复杂的事物神秘的一角,读完后让人受益匪浅。