项目分工 – 外科手术队伍
“大型项目的每一部分由一个团队解决,但是该队伍以类似外科手术的方式组建,而并非一拥而上。” –《人月神话》
问题
- 大型团队开发,任务过度细分,增加相互沟通交流的工作量和最后集成时进行系统调试的工作量,得不偿失,最后可能是:高成本、速度缓慢、低效、无法集成。
- 小型团队开发真正意义上的大型系统,开发速度太慢,当项目开发完成时已经过时。
由此产生矛盾,系统应该由尽可能少的人员开发但小型团队开发速度过慢。
解决方案
组建10人小团队,团队以类似外科手术的方式组建,并非一拥而上。
在这样的10人小团队中,不必再对项目进行细分,也不是每个人参与项目的全程工作,而是由1~2主力来完成主要的工作。其组建的方式类似于外科手术队伍的模式,结构图如下:
在该10人小团队中,各个角色的划分和负责的工作如下表所示:
名称 | 主要工作 | 描述 |
---|---|---|
外科医生(首席程序员) | 定义技术说明书、设计程序、编码、测试、书写文档等几乎所有工作 | 需要极高天分,过强的专业知识和技能 |
副手 | 外科医生的后备,详细了解所有的代码。设计的思考者、讨论者、评估人员。代表自己小组和其他小组沟通。 | 相对具有的经验较少 |
管理员 | 控制财务、人员、工作地点和办公设备等。充当与其他管理机构的接口。 | 可以为两个团队服务 |
编辑 | 根据外科医生的草稿、口述,进行分析和重新组织,提供各种参考信息和书目,对多个版本进行维护,监督文档生成的机制。 | |
文秘1(管理员文秘) | 负责项目的协作一致 | |
文秘2(编辑的文秘) | 负责形成非产品文件 | |
程序职员 | 维护团队的技术记录,进行归档和编制索引。控制程序的版本和程序的运行。承担代码文件和可读文件的管理责任。 | 从文书等杂事中解放出来 |
工具维护人员 | 保证所有工具服务的可靠性,并承担特殊工具的构建、维护和升级责任。 | |
测试人员 | 搭建测试平台,设计提供测试用例和数据,计划测试的步骤。 | |
语言专家 | 寻找一种简洁、有效的使用语言的方法来解决复杂晦涩或者棘手的问题。 | 需要对技术进行一些研究。可以同时为2~3个外科医生服务。 |
优势
- 传统团队:将工作进行划分,每人负责一部分;在外科手术队伍中:首席程序员和副手了解所有的设计和全部的实现;好处是:节省了任务分配、集成、交流讨论等工作量。
- 传统团队:出现观点差异时,需要讨论、妥协、让步,不同的意见造成策略和接口上的不一致;外科手术队伍中:对问题不分解,观点不一致由首席程序员单方面来统一,达到客观的一致性。
- 外科手术队伍中:其他剩余人员智的分工高效,交流少,交流模式简单。
参考书籍:《人月神话》