1 第三章 软件协同中的角色与目标 3.1为什么团队中需要区分角色? 国内软件企业的开发模式多为“大拿领衔制”,通常公司十多个技术人员中间有一个技术“大拿”,剩下人辅助他,把这个产品的所有代码写完,则软件就算完成了。“大拿领衔制”脱不去小作坊的味道,虽然保证了“技术大拿”的创造性,却失去了软件研发过程应有的规范。 为什么在一个 TSP 开发团队中团队成员需要区分角色呢?角色提供了一套已定义和可接受的工作框架。有了角色,团队成员就能专注于特定的目标,把注意力放在工作的特定层面上;有了角色,每名成员都可以支配整项工作的特定子集,他人无需为此担心。当然,为了整体的高效,每名团队成员不仅要了解自己的角色,也要熟悉所有的其他角色。 不论是足球、篮球、棒球还是橄榄球,运动员在上场前总会被安排在特定的位置。与之相类似,在 TSP 进程的初始,团队成员被安排担任不同的标准角色,在所有成员之间将主要团队职责进行了划分。通过将占据每项关键领域的团队成员确定下来,确保了运营团队的过程中,一般问题能够迅速高效的解决。团队之中没有真正的“权利大小(谁管谁)”,只有成员紧密沟通。总体而言,角色满足了人类的需求,加速了团队组建过程,有助于处理迫切的团队任务。 补充阅读 :分工的善与恶 笼统地说,正如其他人类制度一样,分工自身也同时具有益处和代价。如果允许一个空泛的概括,分工的优点至少有:1)集中特定的知识、技能——想想自己左右手、左右脑的分工,我们也许就可以理解这对提高生产率的重要性;2)职责明确,不同职责的人为自己做出的决定负责;3)增进交流:各个角色之间为确保顺畅的协作,必须要求高质量的交流,这也就能使很多原本不言而喻的事情书面化、明晰化。 但分工也有其自身的弊病。 首先,不少人天性追求完满,要让他们接受分工,只完成整个工作的一个枝节部分,可能是非常痛苦的事。我记得自己刚刚参加工作后参与开发的一个系统,直到开发接近尾声,项目经理才在一次每周例会上说:“大家开发了这么久,对整个系统的用途可能还不很清楚,今天我们简单谈谈”——这时我才知道自己参与的是整个店铺系统的销售子系统的订货部分的一个底层数据模块。 另外,分工往往导致等级制度和不同角色间的疏离。既然分工的要义是把高要求的工作集中在少数人手中,在少数和大多数之间,不同的工种之间,必然会导致等级差异和隔阂。《人月神话》中也谈到,在区分了产品设计和技术实现之...