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