首页 > 其他分享 >《人月神话》阅读笔记3

《人月神话》阅读笔记3

时间:2023-06-09 22:22:15浏览次数:50  
标签:阅读 项目 笔记 开发 时间 模块 人员 神话

今天这篇阅读笔记主要讨论《人月神话》中的“人月神话”以及组建“外科手术队伍”。

      首先介绍一下什么是人月神话。我以前听人月神话的时候总是觉得很玄幻,以为这是一个神话故事之类的。我相信很多刚刚听到这个词汇的人都会这么认为,但是经过阅读发现,人月神话并不是神话故事。这是一种软件开发过程中的度量单位。估计完成一个项目大概需要多长时间,比如需要12人月,则可以理解为需要3个人工作4个月。

      那么怎么又称为神话呢?因为使用人月这种度量方式,在很多情况下衡量一个一项工作的规模是一个危险和带有欺骗性的神话。因为在以上关于人月的介绍中,根据这种计算方式,似乎人和月是可以等价互换,互相补充弥补的,但实际情况并不是如此。并不能用增加人的数量来减少开发的周期,这是一种愚蠢的想法和做法。

      人们在对项目进行估计的时候往往是非常乐观的,这是我们应该保持的一种良好的心态,但是我们更要从实际问题出发,遵循客观规律,不能盲目的乐观。当人月可以互为转化时,这说明这个项目的每个模块的关联性很小,团队成员之间的交流也不会很多,而且交流起来会非常简单,只有基于这种情况下,人月的内涵才能够充分的得到体现,这种度量方式才能很好的阐述人月可以等价互换的理念。但是事实往往并非如此。每一个项目,项目的各个模块的联系都是非常紧密的,而且很多模块之间是由时间先后顺序的,这些因素决定了人月模型并不适合。当人的数量大大增加时,并不能有效的缩短项目的完成时间,相反,还可能会增加项目的时间。

      试想一下,当团队人数比较少时,每个人负责的工作量可能会比较大,但是每个人之间的交流会变得相对来说更加简单,而且交流的时间会比较少,而当人数比较多时,因为各个模块并不是孤立的,要考虑到其他的模块的实现方式,所以交流会变得困难起来,这样无疑就增加了时间开销,而且这种事件开销在一个项目中会占用大量的时间。

      那么关于人月之间存在的这种矛盾,我们该如何解决呢?

      一是,开发并推行生产率图表、缺陷率、估算规则等等,而整个组织最终会从这些数据的共享上获益。

      二是,在基于可靠基础的估算出现之前,项目经理需要挺直腰杆,坚持他们的估计,确信自己的经验和直觉总比从期望派生出的结果要强得多。

      总之,项目的时间依赖于顺序上的限制,人员的数量依赖于单个子任务的数量。 从这两个数值可以推算出进度时间表, 该表安排的人员较少, 花费的时间较长( 唯一的风险是产品可能会过时)。相反,分派较多的人手, 计划较短的时间,将无法得到可行的进度表。

      下面介绍另一种解决方案,组建“外科手术队伍”。这是一种团队模式,通过这个模式,理论上来说能够大大提高团队开发效率,并在一定程度上有效缩减开发时间。

      软件开发过程中存在以下这几种情况:

             优秀程序员和较差的程序员之间生产率的差异。

             一拥而上的开发方法是高成本的、 速度缓慢的、 不充分的, 开发出的是无法在概念上进行集成的产品。

             对于效率和概念的完整性来说,最好由少数干练的人员来设计和开发, 而对于大型系统, 则需要大量的人手。

      对于上述情况和存在的矛盾,我们可以通过组建“外科手术队伍”来进行解决。这个队伍的核心是外科医生,他需要亲自定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档。其他的人要对他进行支持和服务。其他人员还包括:副手(工作和外科医生相同,但不进行实现),管理员(对财务、人员等进行管理)、编辑(整理文档)、秘书(两个,负责项目的协作一致)、程序职员(负责技术记录,类似于构建大师的工作)、工具维护人员(提供特殊工具,保证所需服务可靠运行)、测试人员(设计提供测试案例)、语言专家(解决语言使用上的问题)。

    通过这个队伍,是系统在客观上达到了概念一致性,同时也确保了工作概念上的一致性。同时由于是外科医生和副手两个人建立起来的系统,因此便于交流,减少了不必要的时间开销,同时也是体系结构更加清晰明确。而剩余人员的智能的专业化分工使得他们的工作能够更加高效。

标签:阅读,项目,笔记,开发,时间,模块,人员,神话
From: https://www.cnblogs.com/renliqin/p/17470387.html

相关文章

  • js笔记
    /*1.前提:IDEA需要设置支持ES6语法·usestrict`;严格检查模式2.数据类型2.1字符串1.正常字符串:单引号或者双引号2.;转义字符\'\n\t\u4e2d\u###unicode字符\x41Ascll字符3.多行字符串编写//tab上面,esc下面varmsg=hello......
  • 5月份阅读笔记1
    5月份的阅读笔记为《构建之法》的读书笔记第一章概论在这一章中,作者为我们介绍了一些关于软件工程的基本知识。①软件=程序+软件工程:正是因为对软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的......
  • 5月份阅读笔记3
    第五章团队和流程5.2软件团队的模式主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式5.3开发流程①写了再改模式②瀑布模型(WaterfallModel)是一个项目开发架构,开发过程是通过设计一系列阶段顺序......
  • 5月份阅读笔记2
    第三章软件工程师的成长3.1个人能力的衡量与发展①软件工程包括了开发、运用、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度......
  • 【做题笔记】做题经验总结
    1.int*int会爆int,记得开longlong2.一般情况下,对于一棵树,树根没有父亲3.一定要看输入和输出格式4.多测不清空,爆零两行泪......
  • java 基础面试笔记(一)
    1、对final和static的理解final修饰变量,变量不可修改;final修饰类,类不可继承;final修饰方法,方法不能重写;static方法,不依赖任何对象可以访问;static成员变量初始化顺序按照定义的顺序进行初始化:· 父类静态变量· 父类静态代码块· 子类静态变量· 子类静态代码块· 父类普通变量......
  • 读书笔记——人月神话2
     “人月”指项目预估和进度安排中使用的工作量单位,比如一个项目需要3个人耗费四个月的时间,衡量这个项目的工作量就用12人月表示。在本文中,作者认为“用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话,它暗示着人员数量和时间是可以相互替换的。”人数和时间可以互换的......
  • 读书笔记——人月神话3
    在写项目申请书时,经常会遇到两个问题。其一,不同的人负责项目申请书的不同部分,最后在整合到一起时往往会让人产生项目需求和功能不完全对应的感觉,整个项目明显有拼凑的痕迹,显得不伦不类;其二,在决定产品实现什么功能时,往往会很贪心的把所有功能都往上加,最后产品没有针对性,更没有特色......
  • 读书笔记——代码大全1
    1.       用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况。2.       隔栏:以防御式编程为目的而进行隔离的一种办法,就是把某些接口选定为“安全”的区域边界,对穿越安全边界的数据进行合法性的校验,并当数据非法时做出敏锐的反映。3.    ......
  • 读书笔记——代码大全2
    第一章构建(写代码)是软件开发中非常重要的部分。还引用了一句话,艺术评论家聚在一起总是谈论架构,思想;艺术家聚在一起总是谈论在哪里可以买到便宜的树脂油。)构建的产品即源代码,是软件唯一的、最准确的说明书。(想到了一句话,程序员就是用代码(语言)说服计算机去做一些事情) 构建(作者不......