人月神话(二) -

sonofdemon 2021-08-06 原文


人月神话(二)


再次拜读此书,我了解到错误的乐观主义,人月之间错误关系和职业的结构组成。
首先,大部分的程序员都很年轻,年轻人都很乐观,认为无论什么程序都是“这次它肯定会运行”或者“我刚刚找出了最后一个错误”。所以系统编程的进度安排背后的第一个假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。
对这种弥漫在编程人员中的乐观主义,理应受到慎重的分析。在单个的任务中,“一切都将运转正常”的假设在时间进度上具有可实现性。因为所遇的延迟是一个概率分布曲线,“不会延迟”仅具有有限的概率,所以现实情况可能会像计划安排的那样顺利。然而大型的编程工作,或多或少包含了很多任务,某些任务间还具有前后的次序,从而一切正常的概率变得非常小,甚至接近于无。
人月是在估计和进度安排中使用的工作量单位。人们总是存在这种谬误的思考方式,成本的确随
开发产品的人数和时间的不同,有着很大的变化,进度却不是如此,用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以相互替换的,但是在系统编程中近乎不可能。因为软件开发本质上是一项系统工作——错综复杂关系下的一种实践——沟通、交流的工作量非常大,它很快会消耗任务分解所节省下来的个人时间。从而,添加更多的人手,实际上是延长了,而不是缩短了时间进度。向进度落后的项目中增加人手,只会使进度更加落后。
因此,如何更好的规划每个人在团队中的作用至关重要。Mills 提出了一个崭新的创造性的建议——外科手术队伍。
外科医生,Mills 称之为首席程序员。他亲自定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档。他使用例如 PL/I 的结构化编程语言,拥有对计算机系统的访问能力;该计算机系统不仅仅能进行测试,还存储程序的各种版本,以允许简单的
文件更新,并对他的文档提供文本编辑能力。首席程序员需要极高的天分、十年的经验和应
用数学、业务数据处理或其他方面的大量系统和应用知识。
副手,他是外科医生的后备,能完成任何一部分工作,但是相对具有较少的经验。他的主要作用是作为设计的思考者、讨论者和评估人员。外科医生试图和他沟通设计,但不受到他建议的限制。副手经常在与其他团队的功能和接口讨论中代表自己的小组。他需要详细了解所有的代码,研究设计策略的备选方案。显然,他充当外科医生的保险机制。他甚至可能编制代码,但针对代码的任何部分,不承担具体的开发职责。
管理员,外科医生是老板,他必须在人员、加薪等方面具有决定权,但他决不能在这些事务上浪费任何时间。因而,他需要一个控制财务、人员、工作地点安排和机器的专业管理人员,该管理员充当与组织中其他管理机构的接口。Baker 建议仅在项目具有法律、合同、报表和财务方面的需求时,管理员才具有全职责任。否则,一个管理员可以为两个团队服务。
编辑,外科医生负责产生文档——出于最大清晰度的考虑,他必须书写文档。对内部描述和外部描述都是如此。而编辑根据外科医生的草稿或者口述的手稿,进行分析和重新组织,提供各种参考信息和书目,对多个版本进行维护以及监督文档生成的机制。
两个秘书,管理员和编辑每个人需要一个秘书。管理员的秘书负责项目的协作一致和非产品文件。
程序职员,他负责维护编程产品库中所有团队的技术记录。该职员接受秘书性质的培训,承担机器码文件和可读文件的相关管理责任。所有的计算机输入汇集到这个职员处。如果需要,他会对它们进行记录或者标识。输出列表会提交给程序职员,由他进行归档和编制索引。另外,他负责将任何模型的最新运行情况记录在状态日志中,而所有以前的结果则按时间顺序进行归档保存。程序职员的专业化分工,使程序员从书记的杂事中解放出来,同时还可以对那些杂事进行系统整理,确保了它们的质量,并强化了团队最有价值的财富——工作产品。上述概念显然考虑的是批处理程序。当使用交互式终端,特别是在没有纸张输出的情况下,程序职员的职责并未消失,只是有所更改。他会记录小组程序和私有工作拷贝之间的更新,依然控制所有程序的运行,并使用自己的交互式工具来控制产品逐步增长的完整性和有效性。
工具维护人员,现在已经有很多文件编辑、文本编辑和交互式调试等工具,因此团队很少再需要自己的机器和机器操作人员。但是这些工具使用起来必须毫无疑问地令人满意,而且需要具备较高的可靠性。外科医生则是这些工具、服务可用性的唯一评判人员。他需要一个工具维护人员,保证所有基本服务的可靠性,以及承担团队成员所需要的特殊工具(特别是交互式计算机服务)的构建、维护和升级责任。即使已经拥有非常卓越的、可靠的集中式服务,每个团队仍然要有自己的工具人员。因为他的工作是检查他的外科医生所需要的工具。工具维护人员常常要开发一些实用程序、编制具有目录的过程库以及宏库。
测试人员,外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对整个工作进行测试。因此,测试人员既是为他的各个功能设计系统测试用例的对头,同时也是为他的日常调试设计测试数据的助手。他还负责计划测试的步骤和为测试搭建测试平台。
语言专家,随着 Algol 语言的出现,人们开始认识到大多数计算机项目中,总有一两
个乐于掌握复杂编程语言的人。这些专家非常有帮助,很快大家会向他咨询。这些天才不同于外科医生,外科医生主要是系统设计者以及考虑系统的整体表现。而语言专家则寻找一种简洁、有效的使用语言的方法来解决复杂、晦涩或者棘手的问题。他通常需要对技术进行一些研究(两到三天)。通常一个语言专家可以为两个到三个外科医生服务。
以上就是如何参照外科手术队伍,以及如何对 10 人的编程队伍进行专业化的角色分工。

posted on
2019-02-21 20:48 
 
阅读(88
评论(0
编辑 
收藏 
举报

 

版权声明:本文为sonofdemon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sonofdemon/p/10415152.html

人月神话(二) - 的更多相关文章

  1. 解决Eclipse代码提示消失的方法 – 岚之山

    解决Eclipse代码提示消失的方法 注意:首先要做的是windows->preferences-> […]...

  2. Java基础学习笔记(六) – 数据结构和集合

    Java基础学习笔记(六) – 数据结构和集合 一、认识数据结构 1.数据结构有什么用?  合理的 […]...

  3. 树莓派入门笔记1-树莓派基本配置 – 夜owl

    介绍初次开箱,安装系统,连接树莓派和基本配置 安装Noobs系统 noobs是适用于新手引导系统,官方建议初始 […]...

  4. Jmeter(四) – 从入门到精通 – 创建网络测试计划(详解教程)

    1.简介 在本节中,您将学习如何创建基本的 测试计划来测试网站。您将创建五个用户,这些用户将请求发送到JMet […]...

  5. 小车红外循迹基本控制 – MyAutomation

    小车红外循迹基本控制 红外对管模块 红外对管模块由发射管接收管和配套电路组成,工作时发射管发射红外线,接收管接 […]...

  6. 结对编程–基于android平台的黄金点游戏(2.0版本) – RayShea

    结对编程–基于android平台的黄金点游戏(2.0版本) 在昨天上传完博客之后发现一个重大的bu […]...

  7. 京东/淘宝的手机销售榜(前4名 — 手机品牌 –手机型号*3 –手机分辨率 — 手机操作系统 –安卓版本号)(android / IOS)

    此文转载自:https://blog.csdn.net/weixin_45819693/article/det […]...

  8. Android 系统稳定性 – ANR(一)

    文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任。很久之前写的了,留着有点浪费,共享之。编写者:李文 […]...

随机推荐

  1. 使用 JavaScript 截屏

    使用 JavaScript 截屏 经常在微博上看到很多内容使用的什么长微博截图,并且截图上还附加了很多其他的信 […]...

  2. ThinkPad BIOS – BadBoy-XCC

    ThinkPad BIOS ThinkPad-BIOS    如有问题请指出 ~谢谢 ...

  3. linux服务器—安装swat

    安装swat       swat是一个图形化的samba管理软件,可以帮助不熟悉的人去灵活的配置samba服 […]...

  4. 数据管理:业务数据清洗,落地实现方案

    分析业务通常都是要面对全局数据,如果出现大量的上述情况,就会导致数据在使用的时候难度非常大,随之也会带来很多问 […]...

  5. 简版在线聊天Websocket

    序言 What is Webscoket ? websocket 应用场景 简版群聊实现 代码例子 小结 We […]...

  6. 给项目添加Tomcat时找不到项目

    在project structure里给项目添加Web...

  7. 大前端工具集 – 生活费

    大前端工具集   目录 前端组织/前端博客 博客搭建 HTML CSS 浏览端 JS Project Buil […]...

  8. 宝塔+腾讯云主机 部署添加https免费证书

    效果 https://www.mehaei.com   前言 最新想搭建个博客网站, 但是http的网站不安全 […]...

展开目录

目录导航