• 问题
      • 软件经理很早就认识到优秀程序员和较差的程序员之间生产率的差异,但实际测量出 的差异还是令我们所有的人吃惊。
      • 需要协作沟通的人员的数量影响着开发成本
        • 因为成本 的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果
        • 绝大多数大型编程系统的经验 显示出,一拥而上的开发方法是高成本的、速度缓慢的、不充分的,开发出的是无法在概念上进行集成的产品。
      • 对于效率和概念的完整性来说,最好由少数干练 的人员来设计和开发,而对于大型系统,则需要大量的人手,以使产品能在时间上满足要求
    • 解决建议:外科手术团队
      • 外科医生
        • Mi ll s 称之为首席程序员。他亲自定义功能和性能技术说明书,设计程序, 编制源代码,测试以及书写技术文档。首席程序员需要极高的天分、十年的经验和应用数学、业务数据处理或其他方面的大量系统和应用知识。
      • 副手
        • 他是外科医生的后备,能完成任何一部分工作,但是相对具有较少的经验。他 的主要作用是作为设计的思考者、讨论者和评估人员。外科医生试图和他沟通设计,但不受 到他建议的限制。他甚至可能编制代码,但针对代码的任何部分,不承担具体的开发职责。
      • 管理员
        • 一个控制财务、人员、工作地点安排和机器的专业管 理人员,该管理员充当与组织中其他管理机构的接口
      • 编辑
        • 编辑根据外科医生的草稿或者口述的手稿,进行分析和重新组 织,提供各种参考信息和书目,对多个版本进行维护以及监督文档生成的机制
      • 两个秘书
        • 管理员和编辑每个人需要一个秘书。管理员的秘书负责项目的协作一致和 非产品文件。
      • 程序职员
        • 他负责维护编程产品库中所有团队的技术记录。该职员接受秘书性质的培 训,承担机器码文件和可读文件的相关管理责任。使用自己的交互式工具来控制产品逐步增长的完整性和有效性。
      • 工具维护人员
        • 外科医生则是这些工具、服务可用性的唯一评判人员。他需要 一个工具维护人员,保证所有基本服务的可靠性,以及承担团队成员所需要的特殊工具的构建、维护和升级责任。
      • 测试人员
        • 外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对 整个工作进行测试。
      • 语言专家
        • 外科医生主要是系统设计者以及考虑系统的整体表现。而语言专家则寻找一种 简洁、有效的使用语言的方法来解决复杂、晦涩或者棘手的问题。
    • 运作
      • 要特别注意传统的两人队伍与外科医生——副手队伍架构之间的区别。首先,传统的 团队将工作进行划分,每人负责一部分工作的设计和实现。在外科手术团队中,外科医生和 副手都了解所有的设计和全部的代码。
      • 观点的不一致由外科医生单方面来统一。这两种团队组建上的差异——对问 题不进行分解和上下级的关系——使外科手术队伍可以达到客观的一致性。
      • 团队中剩余人员职能的专业化分工是高效的关键,它使成员之间采用非常简单 的交流模式成为可能。


blog comments powered by Disqus

Published

11 March 2013

Tags