外科手术队伍(The Surgical Team)

效率高和效率低的实施者之间具体差别非常大,经常达到了数量级的水平

需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)

队伍以类似外科手术的方式组建,而并非一拥而上由一个人来进行问题的分解,其他人 给予他所需要的支持,以提高效率和生产力

成员分类

首席程序员(外科医生)

对整个业务有完整清楚的理解,负责整体的设计、规范、框架的编码和功能划分,对复杂的模块亲自编码

一个人开发应该很难存在,还有很多scut work需要普通程序员完成,
定义功能和性能技术说明书,设计程序,编制源代码、测试以及书写技术文档。

首席程序员需要极高的天分、丰富的经验和应用数学、业务数据处理或者其他方面的大量系统知识和应用知识。

副手

首席程序员的后备,充当外科医生的保险机制,只是经验较少。

帮助首席程序员思考、讨论和评估,能代表自己的小组与其他团队讨论有关功能和接口问题,了解所有的代码

普通程序员

根据首席程序员的任务划分,按既定规则开发指定的功能模块,提供规范的输入输出参数

管理员

控制财务、人员、工作地点和办公设备,负责与组织中其他管理机构的交流,可以为多个团队服务

编辑

很难存在工作枯燥
提供各种参考信息和书目,对许多个版本进行维护,并监督文档的生成机制
框架、整体的文档由首席程序员给出,各个接口模块由响应的开发给出

两个文秘(不明确)

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

程序职员(不明确)

他负责维护编程产品数据库中所有的团队技术记录。该职员接受文秘性质的培训,承担机器码文件和可读文件的相关管理责任。
他还负责记录和更新所有小组成员的工作拷贝,并使用自己的交互式工具来控制产品逐步增长的完整性和有效性。

工具维护人员(运维,组件组)

保证所有基本服务的可靠性,以及承担团队成员所需要的特殊工具的构建、维护和升级责任,常常要开发一些实用程序,编制具有目录的函数库以及宏库。

测试人员

负责计划测试的步骤和为单元测试搭建测试平台

语言专家

寻找一种简洁、有效的使用语言的方法来解决复杂、晦涩或者是棘手的问题,比如DBA
他通常需要对技术进行一些研究(2-3天)。通常一个语言专家可以为2-3个首席程序员服务。

如何运作

系统是一个人或者最多两个人思考的产物,因此客观上达到了概念的一致性

外科手术团队中,不存在利益的差别,观点的不一致由外科医生单方面来统一

让 200 人去解决问题,而仅仅需要 协调 20 个人,即那些“外科医生”的思路