成功需要一个好基石 ——读《人月神话》有感

历经了前面的种种困难,才懂得“成功”两字的分量是多么的重,不仅仅是来之不易,更是无法复制的。使得一个项目成功需要很多的因素,俗话说:“好的开始是成功的一半”,读了《人月神话》也就明白了怎样让一个项目有一个好的开始。为了呼应主题,我将好的开始称作“基石”。

效率高和效率低的 实施者之间具体差距非常大,经常达到了数量级的水平,这也就产生了一个最基本的问题:如何分工?这个问题看似简单,实则包含了人员数量,工作种类、管理结构、任务分配等,每一个环节或是步骤都需要严格的考虑,否则就会成为成功路上的一块绊脚石。我不禁反问自己:我们是属于效率高的还是没有效率的?

作者一直重复着这样一个观点:需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果,这一点也暗示系统应该由尽可能少的人员来开发。书中的一个例子十分生动的向我们诠释了这个观点,在一个小组里,最好与最差的生产率平均为10:1,在运行速度和空间上具有5:1的惊人差距,因此在一个200人的项目中,选出25个最能干和最有开发经验的项目经理,开除剩下的。一般来说,大家都会有一种人手越多,工作越容易进行的错觉,将一个很大的任务分成很多小部分,将这些小部分在依照功能再分给各个工作的人员。

我曾经看到这么一个故事,讲的是1个工匠搭建一个小房子需要3个月,于是想到的便是增加人手,那么3个人搭建房子就是1个月,依次类推,9个人需要10天,27个人需要3天,81个人需要1天,直到14348907个人就可以1秒建好一个房子,这个事情是在理想的情况,没有交流、没有流程、没有空间限制等,但现实中是不可能有这种理想的情况,如果软件开发像上面的例子一拥而上的方法,那么开发就是高成本的、速度缓慢的、不充分的、开发出的是无法在概念上进行集成的产品。同样“每个硬币都有两面”,面对真正意义上的大型系统,如果采用小型、精干队伍,则会反过来,变得更慢了,这就出现了一个进退两难的境地:对于效率和概念完整性来说,最好由少数干练的人员来设计和开发,而对于大型系统,则需要大量的人手,以使产品能在时间上满足要求。

首先介绍一下“什么是概念的完整性?”,书中用欧洲不同时期的建筑风格做类比,来讲述设计的一致性和一些的独到之处,这个就像我们面向的编程世界一样,每个系统体现出的概念差异和不一致性甚至是超过了时间悠久的历史建筑。简单一点说,就是一个系统的整体风格是否一致,这个就像一个强迫症的人无法容忍一丝的结合不严,也就是最后的产品是否是浑然一体的。作者主张在系统设计中,概念完整性应该是最重要的考虑因素,这句话可以这么理解,人们在系统设计中难免会有一些十分有创意可以让人们眼前一亮的想法和创意,但是这个会导致一系列连贯的设计思路中断,简而言之就是不提倡特立独行,我看到这里便有个问题悠然而生,就是如果这个创意能够大幅度改善一个程序的设计并且能够使得在技术上有一个大的飞跃,那该怎么办呢?于是出现了贵族专制统治和民主政治便由此而生,如果出现了上述的情况就应该抛弃原来的设计对不同基本概念进行合并,在合并后的系统上重新开始,至于是贵族还是民主应该如何选择?这有涉及到了另一个问题,就是团队的组成方法。

Mills提出了一个解决方案,就是以类似外科手术的方式组建团队,首先就是最为主要的外科医生,为首席程序员,亲自定义功能和性能技术说明书,设计程序,编制源代码等,这个人的定义让我想到了自己小组的组长,他好像就是一个项目的外科医生——首席程序员,他的工作如同以上所述,但之后的分工却和书中有所不同是我们按照了项目的功能模块进行分工,书里是按照职能分工,接下来是副手、管理员、编辑、秘书、程序职员、工具维护人员、测试人员、语言专家,说起来我们其他人的职能更像是一个程序职员,回想我们自己的团队,和这个外科团队有一点相像,组长负责总领全局,不会发生在传统队伍中不必要的讨论与妥协,可以达到客观的一致性。

在书中看到了编辑,于是我想到了我们现在用的GitHub代码托管,通过这几个月的接触与使用自己逐渐的理解了GitHub的便捷,和为什么它是如此的受人们推崇,它好像就是自己的一个小编辑,可以记录自己每一次的修改,可以汇总每一个人对于项目的贡献,不必在共享空间的方面浪费资源了,这个工具的强大是每一个使用过的程序员所共认的。

一个好的团队需要一个好的结构,很庆幸可以遇见一个经验丰富的小组长,能够像进行外科手术中的首席程序员带领我们进行项目的完成,这也就是我所说的“基石”,就是一个团队是否真正的能够有“效率”两个字。

原文地址:https://www.cnblogs.com/Whydd/p/9043537.html

时间: 2024-08-14 07:23:15

成功需要一个好基石 ——读《人月神话》有感的相关文章

读“人月神话”有感

在软件工程这门课中我们学到,一个软件的开发过程不是简单的一个选择编程语言编码实现的过程,而是一个要经过可行性研究分析.需求分析.形式化说明.总体设计.详细设计再到编码实现的过程,后期还需要对软件进行维护,整个软件的开发过程需要开发成员之间的密切而有效的合作. 这个学期,经同学的推荐,我读了一下<人月神话>这本书,一开始并不知道这是一本关于软件工程的书,毕竟这书名迷惑性太大,一般的人都会理解为是人跟月亮的神话,完全不会像软件工程的方向靠近.不过当你读了这本书之后会发现,整本书都是在以一种非常幽默

读人月神话有感

人月神话书如其名一样震撼人心,它引起了许多别的领域的读者对此进行评价. 律师,医生,社会学家,心里学家,和软件人员一样对此书提出评论和建议.人们经常通过比较计算机软件开发生产率和硬件制造生产率来支持这个观点,后者在 20 年内至少翻了 1000 倍.正像第 16 章所解释的,反常的并不是软件发展得太慢,而是计算机硬件技术以一种与人类历史不相配的方式爆发出来.很多年后作者还是会被道“你现在认为哪些在当时就 是错误的?哪些是现在才过时的?哪些是软件工程领域中新近出现的?”很多年来人们对软件生产率和影

读&lt;&lt;人月神话&gt;&gt;

这本书在软件领域知名度很高,每次看到年度推荐的文章里面都有这本书且强烈推荐.出版30年了,可谓经典. 但我在读的过程中并没有那么深的体会.书中很多章节都是基于大型项目或者大型系统的经验总结,至今为止我还没有参与大于30人的项目.只能说自己的境界还不够. 第一章,焦油坑 再也找不到一个词比焦油坑更能形容,软件开发的过程了.我们都在挣扎.计划,计划,不断计划,但还是拖延,拖延,拖延.... 职业的乐趣: 创造性,贡献助人为乐,过程的魅力或者解决问题的成就感或写代码的快感,持续学习新事物,驾驭感. 职

人月神话有感2

关于本书,即使很多没读过的人也能说出其中知名度最高的关于人月神话的观点.之前还在知乎上看过有人举了一个例子:一个人生孩子需要十个月,两个人去生孩子同样需要十个月.这一比喻虽不完全恰当,却也大致说出点内容.事实上,作者在书中这样来描述人月神话:软件开发项目常以人月来衡量工作量,这种度量暗示着人手和时间是可以互换的.这种"人多力量大"的想法是一种一厢情愿的虚妄神话,布鲁克斯法则:向滞后的软件项目追加人手会使得进度更迟缓(Adding manpower to a late software

人月神话有感

初见书名时还在奇怪为什么老师要我们看一本这书,在我刚刚见到这本书时我以为说的是人类登上月球的书籍,后来明白了本书的名字并不是人类和月球之间的神话故事,而是软件工程的一些迷思,人月是一个人一个月的人力单位. 在这本书里作者提出软件工程中各个项目的比例应该如下: 1/3 planning 1/6 coding 1/4 component test and early system test 1/4 system test, all components in hand 初始时心中还在迷惑为什么编程的

人月神话有感3

人月神话-这个色彩斑斓的名字,勾起了童年对神话故事热情的回忆,它像一个巧克力甜品一样吸引着人们去品尝.翻开书目,却大吃一惊,它并非是潘多拉的盒子,也不是达摩克利斯之剑.细细品读,人月神话,这个时间和人力的博弈,描绘了工程项目的美丽神话.我想,这个名字也许是作者对于工程化处理我们面临工程项目的渴望. 在读这本书时,我们不妨站在一个项目经理的角度,我们手上有大大小小的项目要完成,我们有大量工程人员或者我们只有几个员工,我们也没有无限的时间和资金设备,面对那些大大小小的项目,面对这些诸多的人力,金钱,

人月神话

读人月神话给我感受最深刻的是作者以焦油坑为例向我们抛出了大型系统开发的问题,简短的说出了作为程序员的乐趣与苦恼.人月即产品开发的人数和时间,文章指出了人月并不能衡量一项工作的规模,即人与月是不能相互转换的,在程序开发过程中在某个条件下可以通过增加人数来提高工作效率但到一定情况下再增加人数只会使效率越来越低同时给出了作者自身关于软件任务进度的安排1/3用于计划,1/6用于编码,1/4用于构件测试和早期系统测试,1/4用于系统测试,对于项目开发而言提前的计划非常重要会避免进度的拖延,对于一个进度落后

人月神话阅读笔记—序言及第一、二章

初读人月神话这本书的前言和序言,觉得这本书在关于软件体系结构思想层次方面应该是很高的,而且它流传甚广,并且经过了40余年的沉淀,仍然经久不衰,可见此书的影响是相当深远的. 从目录来看,此书说的不是如何进行程序代码的编写,更多的是关于软件工程中的管理问题,从很多的具体事例,和软件工程历史上发生的一些著名事件来引出章节的内容,以及通过这些具体事件,反映了一些什么样的问题和解决的办法. 第一章的标题名为焦油坑,以开发过程中遇到的很多问题来比喻.介绍了编程系统产品所耗费的时间其实是很多的,接着介绍了作为

读《人月神话》所感

<人月神话> 读书心得: 因为现在还是学生,且没有什么真正在应用项目的开发经验,所以读<人月神话>这本书,与其说是在学习这位计算机先驱的经验,不如说是在了解一个大型软件系统的开发过程以及在开发过程中将会遇到的困难.但是,通过一些小项目的练习经验,还是有很多感触. 如果以后工作了,从事软件编程这个行业,在拿起这本书读一读,有了实际的经历,一定会有更多的收获. 读<人月神话>所感,布布扣,bubuko.com