人月神话3

发布时间 2023-06-02 17:38:16作者: 与孤独对酌

第三章 外科手术队伍

Harlan Mills 对于小型团队的分工建议:

  1. 外科医生,即首席程序员或技术 leader,负责定义功能性能说明书、设计程序、编码、测试、书写文档。需要极高的天分、丰富的经验以及大量的系统知识。
  2. 副手,外科医生的后备,主要作为设计的思考者,沟通讨论方案。
  3. 管理员,也就是老板,负责充当与组织中其它机构部门的接口,在管理人员、薪酬、办公空间等方面具有决定权。一个管理员可以对应多个外科手术队伍。
  4. 编辑,外科医生负责文档的生成,编辑负责进行重新组织、提供各种参考、维护监督。
  5. 文秘,管理员和编辑各自需要一个文秘。管理员的文秘负责非产品文件,以及使项目目标一致。
  6. 程序职员,负责维护编程库中团队的技术记录,类似于文秘,但管理代码和编译后的文件。
  7. 工具维护人员,队伍中存在许多工具,外科医生评价这些工具的可用性和可靠性,工具管理人员负责这些工具的构建、维护和升级。常常需要开发一些实用程序。
  8. 测试人员,负责对外科医生编写的代码片段和工作进行测试,也负责设计测试数据,计划测试步骤,构建单元测试平台。
  9. 语言专家,外科医生主要负责系统设计与整体表现,语言专家则寻找简洁有效的使用语言的方式来解决复杂的问题。需要对技术进行研究。一个语言专家可以为多个外科医生进行服务。

如何运作:

  1. 外科医生和副手了解所有的设计和全部代码,保证工作概念完整性。
  2. 不需要对问题进行分解;队伍中具有上下级属性。

    大型系统:需要一个系统架构师负责体系架构设计,然后每个部分交给一个外科手术队伍。

    我本来以为外科医生是技术 leader,负责协调大家写代码,结果好家伙,十个人的队伍两个人把代码全写了。感觉这种结构分工极其明确,但非常依赖外科医生的专业性。