人月神话阅读笔记02

外科手术队伍

问题

矛盾的产生:

       大型团队开发,任务过度细分,增加相互沟通交流的工作量和最后集成时进行系统调试的工作量,得不偿失,最后可能是:高成本、速度缓慢、低效、无法集成。所以系统应该由尽可能少的人员来开发。

       但是,对于真正意义上的大型系统,一个小型团队的开发速度太慢,当项目开发完成时已经过时。

       由此产生一个矛盾,那该如何来解决这个矛盾呢?

Mills的建议

    解决方案:组建10人小团队,团队已类似外科手术的方式组建,并非一拥而上。

  外科医生(首席程序员):定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档。

  副手:主要作用是作为设计的思考者、讨论者和评估人员。

  管理员:控制财务、人员、工作地点安排和机器,充当组织中其他管理机构的接口。

  编辑:根据外科医生的草稿或者口述的手稿,进行分析和重新组织,提供各种参考信息和书目,对多个版本进行维护以及监督文档生成的机制。

  两个秘书:管理员和编辑每个人需要一个文秘。管理员的文秘负责项目的协作一致和非产品文件。

  程序职员:维护编程产品库中所有团队的技术记录。

  工具维护人员:保证所有基本服务的可靠性,以及承担团队成员所需要的特殊工具(特别是交互式计算机服务)的构建、维护升级责任。

  测试人员:各个功能设计系统测试用例的对头,同时也是日常调试设计测试数据的助手。负责计划测试的步骤和为测试搭建测试平台。

  语言专家:寻找一种简洁、有效的使用语言的方法来解决复杂、晦涩或者棘手的问题。

    

外科手术队伍和传统队伍的不同

区别一:
传统的队伍:将工作进行划分,每个人负责一部分工作的设计和实现。
外科手术团队:首席程序员和副手都了解所有的设计和全部的代码。

区别二:
传统的队伍:成员是平等的,出现观点的差异时,不可避免地需要讨论和进行相互的妥协和让步。
外科手术团队:不存在利益的差别,观点的不一致之处可以由首席程序员单方面来统一。

优势

(1)传统团队:将工作进行划分,每人负责一部分;在外科手术队伍中:首席程序员和副手了解所有的设计和全部的实现;好处是:节省了任务分配、集成、交流讨论等工作量。

(2)传统团队:出现观点差异时,需要讨论、妥协、让步,不同的意见造成策略和接口上的不一致;外科手术队伍中:对问题不分解,观点不一致由首席程序员单方面来统一,达到客观的一致性。

(3)外科手术队伍中:其他剩余人员智的分工高效,交流少,交流模式简单。

 

原文地址:https://www.cnblogs.com/xiaoxt/p/5588856.html