效率高和效率低的实施者之间具体差别非常大,经常达到了数量级的水平
需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)
队伍以类似外科手术的方式组建,而并非一拥而上
由一个人来进行问题的分解,其他人 给予他所需要的支持,以提高效率和生产力
成员分类
首席程序员(外科医生)
对整个业务有完整清楚的理解,负责整体的设计、规范、框架的编码和功能划分,对复杂的模块亲自编码
一个人开发应该很难存在,还有很多scut work需要普通程序员完成,
定义功能和性能技术说明书,设计程序,编制源代码、测试以及书写技术文档。
首席程序员需要极高的天分、丰富的经验和应用数学、业务数据处理或者其他方面的大量系统知识和应用知识。
副手
首席程序员的后备,充当外科医生的保险机制,只是经验较少。
帮助首席程序员思考、讨论和评估,能代表自己的小组与其他团队讨论有关功能和接口问题,了解所有的代码
普通程序员
根据首席程序员的任务划分,按既定规则开发指定的功能模块,提供规范的输入输出参数
管理员
控制财务、人员、工作地点和办公设备,负责与组织中其他管理机构的交流,可以为多个团队服务
编辑
很难存在工作枯燥
提供各种参考信息和书目,对许多个版本进行维护,并监督文档的生成机制
框架、整体的文档由首席程序员给出,各个接口模块由响应的开发给出
两个文秘(不明确)
管理员和编辑每个人需要一个文秘。
管理员的文秘负责非产品文件和使项目协作一致。
程序职员(不明确)
他负责维护编程产品数据库中所有的团队技术记录。该职员接受文秘性质的培训,承担机器码文件和可读文件的相关管理责任。
他还负责记录和更新所有小组成员的工作拷贝,并使用自己的交互式工具来控制产品逐步增长的完整性和有效性。
工具维护人员(运维,组件组)
保证所有基本服务的可靠性,以及承担团队成员所需要的特殊工具的构建、维护和升级责任,常常要开发一些实用程序,编制具有目录的函数库以及宏库。
测试人员
负责计划测试的步骤和为单元测试搭建测试平台
语言专家
寻找一种简洁、有效的使用语言的方法来解决复杂、晦涩或者是棘手的问题,比如DBA
他通常需要对技术进行一些研究(2-3天)。通常一个语言专家可以为2-3个首席程序员服务。
如何运作
系统是一个人或者最多两个人思考的产物,因此客观上达到了概念的一致性
外科手术团队中,不存在利益的差别,观点的不一致由外科医生单方面来统一
让 200 人去解决问题,而仅仅需要 协调 20 个人,即那些“外科医生”的思路