对于团队的探讨始于对群体的研究,Meredith Belbin提出了团队的组成理论:团队是指有限的一些人为了共同的目标而在一起工作,每个人分担不同的角色,有独特的贡献,一个组织很好的团队将包含所有团队角色。
斯蒂芬.罗宾斯(1994)认为,团队是指一种为了实现某一目标而由相互协作的个体所组成的正式群体;麦肯锡顾问卡曾巴赫则从团队的任务角度提出团队的含义:团队就是由少数有互补技能、愿意为了共同的目的、业绩目标而相互承担责任的人们组成的群体。以上定义的本质都是从团队目标、结构与要素形成角度对团队进行界定。Katzenbach和Smith在《团队智慧》(The Wisdom of Teams)一书中将团队定义为:一个团队就是为数不多的员工群体,他们在技能上互为补充,并且相互协作以采用相同的方法完成同样的任务,实现同一个目标。
可以认为,项目团队就是在明确的愿景与共同价值观之下的一种特殊形式的团队,是为了完成某个一次性的特定任务(独特的产品或服务)而临时组建起来的团队。其特征在于:是一种临时性的柔性组织,具有明确的生命周期;项目团队的成员是因某项具体的工作而加入团队;项目团队没有冗余成员。软件项目开发团队除了与一般项目团队的共同特征之外,由于团队任务差异等原因,还具有其独特的特征。
1、软件开发项目团队是完全基于内部合作的团队
在软件开发项目团队中合作沟通异常重要,主要表现在两个方面:
第一,项目完成需要多种专业知识。软件产品是一种能够满足用户特定需求的知识产品。软件项目开发团队所要做的工作是独创性工作,所开发的产品是原来没有的、独一无二的产品;软件开发工作从开始到结束都是设计过程。软件本身就是对计算机硬件工作流程的一种设计方案,软件开发工作始终是对这一方案的设计,是知识生产过程。要完成软件产品这种特殊性质的知识生产,需要开发人员具备大量的专门知识。这些专门知识包括:用户需求知识、软件技术知识、项目管理知识,开发人员综合运用这些专门知识相互配合、共同完成软件项目的开发工作。多种专业知识需要多样的专业技术人才,不同专业的技术人才在沟通方式、沟通习惯等方面可能不尽相同,因此要保证开发工作顺利进行,就要在这些专业人才之间形成一定的沟通基础和沟通习惯。
第二是专业知识在开发团队中的不对称存在。知识的不对称性表现在两个方面:一是软件开发团队的每个成员都具有不同的知识背景;二是指软件开发团队中的每个成员对某一知识的掌握程度不尽相同。知识的不对称性的第一个方面决定了不同开发成员的分工协作关系;知识的不对称性的第二个方面决定了不同开发成员之间的领导关系。因此团队中成员之间的协作和信息沟通十分重要。要保证开发质量,开发成员之间就要高度协调一致,在规定的成本与时间范围内完成开发任务,尽可能减少无效劳动和由于缺乏沟通而导致的重复劳动。
2、软件开发项目团队是以特定客户为中心的任务导向型团队
首先,开发任务目标完全以客户需求为中心。每一项开发任务通常要满足顾客独特的需求,而这种独特的需求又是一次性的。因此经验和历史数据虽然重要,但每一次开发任务都需要从头对特定用户的需求进行分析与定义,重新研究开发任务的内容。
其次,开发任务的条件约束以客户要求为准。软件项目的开发任务是在约束条件下进行的,这些约束条件是由客户定义的,主要包括:软件质量、开发成本和开发时间三个方面。软件质量约束要求