第5章 软件项目团队管理 5.1软件项目团队管理概述 项目团队是软件项目中最重要的因素,成功的团队管理是软件项目顺利实施的保证。本章将讲述软件项目团队管理的相关内容。 5.1.1软件项目团队 项目是软件产业的普遍运作方式。对于一个软件项目而言,其开发团队是通过将不同的个体组织在一起,形成一个具有团队精神的高效率队伍来进行软件项目开发的。软件项目团队包括所有的项目相关人,项目相关人是指参与项目和受项目活动影响的人,包括项目发起人、资助者、供应商、项目组成员、协助人员、客户、使用者、甚至是项目的反对人。一个软件项目要想不失败乃至获得巨大的成功,就必须有效地管理项目团队。 与一般意义上的人力资源相比,软件项目团队具有以下的特征: ①软件项目团队是一个临时性的团队; ②软件项目团队是跨职能的; ③在软件项目不同阶段中团队成员具有不稳定性; ④软件项目团队成员具有极大的流动性; ⑤软件项目团队年轻化程度较高; ⑥软件项目团队属于高度集中的知识型团队; ⑦员工业绩难以量化考核; ⑧软件项目团队成员非常注重自我。 高效的软件开发团队是建立在合理的开发流程及团队成员密切合作的基础之上的,团队成员需共同迎接挑战、有效地订制计划、协调和管理各自的工作直至成功完成项目目标。 5.1.2软件项目团队管理 1. 软件项目团队管理的定义 软件项目团队是由软件从业人员构成的,因而从软件项目管理诞生的时刻开始,软件项目团队管理就随之出现了,并作为软件项目管理的重要组成部分在项目管理的过程中起着非常重要的作用。 美国项目管理协会(Project Management Institute,PMI)是目前国际上两大项目管理知识体系之一。它卓有成效的贡献之一就是开发了一套项目管理知识体系——《项目管理知识体系指南》(Project Management Body of Knowledge,PMBOK),它对项目人力资源管理的定义为: 最有效地使用参与项目人员所需的各项过程。人力资源管理包括针对项目的各个利益相关方展开的有效规划、合理配置、积极开发、准确评估、适当激励等方面的管理工作,目的是充分发挥各利益相关方的主观能动性,使各种项目要素尽可能地适合项目发展的需要,最大可能挖掘人才潜力,最终实现项目目标。 综合来看,软件项目团队管理就是运用现代化的科学方法,对项目组织结构和项目全体参与人员进行管理。在项目团队中开展一系列科学规划、开发培训、合理调配、适当激励等方面的管理工作,使项目组织各方面人员的主观能动性得到充分发挥,以实现项目团队的目标。 2. 软件项目团队管理的任务 软件项目团队管理主要包括团队组织计划、团队人员获取和团队建设三个部分,如图51所示。 图51软件项目团队管理工作结构 组织计划指确定、记录与分派项目角色和职责,并对请示汇报关系进行识别、分配和归档。人员获取是指获得项目所需的并被指派到项目的人力资源(个人或集体)。团队建设,既包括提高利害关系者作为个人做出贡献的能力,也包括提高项目团队作为集体发挥作用的能力。个人的培养(管理能力与技术水平)是团队建设的基础。团队的建设是项目实现其目标的关键。 3. 软件项目团队管理的重要性 软件项目团队管理是软件项目管理中至关重要的组成部分,它是有效地发挥每个参与项目人员的作用的过程。对人员的配置、调度安排贯穿整个软件开发过程,人员的组织管理是否得当,是影响软件开发项目质量的决定性因素。如果企业希望在软件开发项目上获得成功,就需要认识到项目人力资源管理的重要性,了解项目人力资源管理的知识体系及范畴,并将有效的管理理论和方法引入项目管理的过程中,充分发挥项目人员的积极性与创造力来实现企业的目标。 5.2软件项目组织计划编制 5.2.1项目组织计划编制概述 软件项目的组织计划编制可以参照传统项目的组织计划编制方法。在大多数软件项目中,组织计划大部分是在最早的项目阶段编制的。然而,应在整个项目过程中定期审查这一过程的结果,以保证其连续的适用性。如果初始的组织编制不再有效,应及时修正。 1. 项目组织计划编制的输入 组织计划编制主要包括以下几方面: ①项目界面; ②人员配备需求; ③制约。 2. 组织计划编制的方法和技术 组织计划编制的方法和技术主要包括以下几方面: ①样板; ②人力资源惯例; ③组织理论; ④项目相关人分析。 3. 组织计划编制的输出 组织计划编制的输出主要包括以下几方面: ①组织结构图; ②角色和责任分配; ③人员配备管理计划; ④支持细节。 软件项目组织结构设计和项目角色与职责分配是项目组织计划编制的主要内容。 5.2.2项目团队的角色分类 软件开发团队中的每个成员在项目中充当着不同的角色,典型的项目角色一般有以下几种。 1. 软件项目经理 软件项目经理作为软件企业最基层的管理人员,负责分配资源、确定优先级、协调与客户之间的沟通,尽量使项目团队一直集中于实现正确的目标。项目经理还要建立一套工作方法,以确保项目工作的完整性和质量。这就要求项目经理拥有领导、决策、组织、控制和创新等方面的能力。 2. 系统分析员 在一个研发项目中,系统分析员主要从事需求获取和研究的工作。他们是项目中业务与技术间的桥梁,其工作是通过与客户进行交流,了解客户的业务以及客户对系统的需求和期望,围绕新的系统,协助客户建立新的业务流程。然后,根据新的业务流程,设计系统的功能,编写软件需求说明书,详细描述系统的功能。最后,利用各种手段和方法,使客户理解即将建立的系统,并予以确认。担任系统分析员的人员应该善于简化工作、善于协调,并且具有良好的人际沟通和书面沟通技巧。担任系统分析员的人必须具备业务和技术领域知识,需要熟悉用于获取业务需求的工具,同时还要掌握引导客户描述出需求的方法。 3. 系统设计员 系统设计员的工作是根据软件需求说明书进行构架设计、数据库设计和详细设计,负责在整个项目中对技术活动和工件进行领导和协调。构架设计要确立每个构架视图的整体结构,视图的详细组织结构、元素的分组以及这些主要分组之间的接口。数据库设计工作包括定义表、索引、视图、约束条件、触发器、存储过程、表空间或存储参数,以及其他在存储、检索和删除永久性对象时所需的数据库专用结构。详细设计则是详细定义系统每一个功能的实现方式和方法。 4. 软件开发人员 软件开发人员 负责按照项目所采用的标准进行单元开发与测试,依据数据库设计和详细设计进行单元模块的代码编写和测试,然后将各单元模块集成到更大的子系统中。项目研发团队的开发人员需要能够迅速并准确地理解系统设计员的设计文档,并能快速地进行代码开发和单元测试。 5. 系统测试人员 系统测试人员是测试中的主要角色,该角色负责对测试进行计划、设计、实施和评估。测试人员依据系统分析员编写的软件需求文档和系统设计员编写的软件设计文档来编写测试计划和测试案例,然后测试人员根据测试计划和测试案例对开发人员提交的经过初步单元测试的系统进行各种更严格的测试,最后形成测试报告并反馈给开发人员进行修改。 6. 软件配置管理人员 软件配置管理人员负责策划、协调和实施软件项目的正式配置管理活动的个人或小组。 7. 质量保证人员 质量保证人员负责计划和实施项目质量保证活动的个人或小组,以确保软件开发活动遵循软件过程标准。 5.2.3项目角色与职责分配过程 定义和分配工作的过程是在项目启动阶段开始运作的,该过程是重复进行的。一旦项目组决定了采用的技术方法,他们将建立一个工作分解结构图(WBS)来定义可管理的工作要素。接着,指定活动定义,进一步确定WBS中各个活动所包含的工作,最后一步就是指派工作。 图52给出了定义和分配工作的一个框架。这个过程包括四个部分: ①确定项目要求; ②定义工作如何完成; ③把工作分解为可管理的部分; ④制定工作职责。 图52定义和分配工作的一个框架 项目经理和项目组将工作分解为可管理的要素之后,项目经理就可以将工作分配到各个组织单位。项目经理分配工作任务通常是根据组织的哪个部门合适做这项工作,他们还常使用组织分解结构来构思这个过程。OBS(组织分解结构)就是一种特殊的组织结构图,它建立在一般组织结构图的基础上,根据公司各部门的具体单元或者子公司的组织单元将一般组织结构图再进行更详细地分解。 在建立了OBS之后,项目经理还要建立一个责任分配矩阵(RAM)。RAM就是将WBS中的每一项工作指派给OBS中的执行人而形成的一个矩阵。对于大型项目,可在不同层次上编制责任分配矩阵。 5.2.4项目组织结构设计 自从20世纪80年代以来,项目管理被运用于软件行业并大获成功。但软件开发环境的不断变化,如外包的盛行和管理理念的更新、供应链管理等对项目管理提出了新的要求,同时项目管理的内容也日趋丰富。如何将各项内容通过项目的组织结构建设来协调统一,并保证项目的顺利进行也是一项重要的课题。 在前面介绍的组织计划编制的基础上,此处将讲述软件项目组织结构的设计。同样,软件项目组织结构的设计也可以参照传统的项目组织。 1. 项目组织结构定义 项目的组织结构,是具体承担某一项目的全体职工为实现项目目标,在管理工作中进行分工协作,在职务范围、责任、权力方面所形成的结构体系。 这一定义说明: (1) 组织结构的本质是员工的分工协作关系。 (2) 设计组织结构的目的是实现项目的目标。所以,组织结构是实现项目目标的一种手段。 (3) 组织结构的内涵是人们在职、责、权方面的结构体系。所以,组织结构又可简称为权责结构。这个结构体系的内容主要包括: 职能结构,即完成项目目标所需的各项业务工作及其比例和关系。 层次结构,即各管理层次的构成,又称为组织的纵向结构。 部门结构,即各管理部门的构成,又称为组织的横向结构。 职权结构,即各层次、各部门在权力和责任方面的分工及相互关系。 2. 软件项目的基本组织结构及其比较 软件项目组织的结构决定了项目管理班子实施项目获取所需资源的可能方法与相应的权力,不同的项目管理组织结构对项目的实施会产生不同的影响。在理论上有许多项目组织结构,但在实际的项目管理中,主要有三种基本的项目组织形式——直线型、职能性和矩阵形。 1) 直线型组织结构 直线制是组织各级领导人员凭借自己的知识经验和能力亲自履行管理职能,按隶属关系直线指挥所属部下和单位的工作,并逐级向上全权负责的组织形式。 直线型组织最大的优点在于可以防止多重指令和防止双头管理现象的出现,对于一个部门来说可以避免出现接收多个相互矛盾指令的情况。 2) 职能性组织结构 在职能性组织结构中,工作部门的设置是按照专业职能和管理业务来划分的,职能性组织结构和线性组织结构具有不同的特点。 职能性组织结构由于按职能进行专业分工,管理工作部门对管理的专业范围负责,专业化程度高,业务领导关系清楚,有利于发挥职能部门的专业管理作用和专业管理专长; 专业化管理和专业化领导水平高,能适应生产技术发展和间接管理复杂化的特点。但如果多维指令产生冲突,则将使得下级部门无所适从,容易造成管理混乱。出现问题以后责任又难以分清楚,造成人人有份,但又人人无责任的局面,不利于责任制度的建立。同时,如果指令来自不同的管理层面,接受指令的部门往往是谁的职位高就听谁的,容易形成家长制的组织形态。 3) 直线型组织职能结构 把上述两种组织结构的优点结合起来,可以形成一个新的结构,这就是直线型组织职能结构。它是在职能组织结构的基础上引入线性组织结构在命令源上的单一性和一致性的优点,可以防止组织中出现矛盾的指令,同时,在保持线性指挥的前提下,在各级领导部门下设置相应的职能部门,分别从事各项专门的业务。 职能部门只起到业务上的指导作用,并不具有直接命令指挥的权力,只能是作为各级领导的参谋或者在授权下进行相关的活动。工作职能部门可以拟定计划、制作行动方案、提供解决问题的方法,为领导部门的决策服务,并最终由领导部门决策后批准下达。通常,职能部门都会由线性结构的领导部门授予一定的控制权和协调权,对下属部门的专业业务进行一定的控制。 这种项目的组织结构对项目管理也有不利之处,如不利于项目目标的控制。因为各职能部门的经理往往首先考虑本部门的利益,所以使得项目的协调往往会比较困难。直线型组织职能结构将项目分解后置于各个职能部门之中,再由职能部门的负责人来协调处理,其专业分工和管理的优点是现代企业发展所必需的,因而许多其他的项目组织结构都吸收了其合理的一面,通过强调目标控制和界面管理来保证项目的实施。 4) 矩阵形组织结构 传统的直线型组织结构模式已难以适应现代软件项目管理上的需要,矩阵形组织结构越来越受到软件行业的重视,并得以研究应用。矩阵形组织结构将组织的工作部门分成两大类,一类按纵向设置,另一类按横向设置,两者结合形成一个矩阵。 矩阵形组织结构的主要特点是按两大类型设置工作部门。正因为如此,矩阵形组织结构的命令源是非线性的,出现了两条指挥线和一个交叉点,因而在矩阵形组织结构中,必须明确横向管理部门和纵向管理部门各自负责的工作和管理内容。要确定某一工作的主体负责部门,即应确定以纵向管理部门为主,还是横向管理部门为主,否则容易造成责任不清、双重指挥的混乱局面。因此,矩阵组织能有效运作的关键在于两大职能部门的协调,两类职能部门的分工应明确。 矩阵形组织结构是一种比较适合项目管理的组织结构,项目经理可以负责项目的总体工作,有权调动企业的各种力量为实现项目目标而集中精力工作。项目部门是临时的,完成任务以后就可以撤销,并不打乱原来的职能部门及其隶属关系,具有较大的机动性和灵活性。这种结构加强了各职能部门之间的横向联系,便于信息沟通。组织内部有两个协调层次: 首先,由项目负责人和职能部门的负责人进行协调,当问题无法解决时可以由更高层的领导进行协调或处理。根据矩阵形组织的特点,它能更好适合规模比较大的软件项目产品的开发过程。 5) 三种组织结构的优缺点及比较 对于现有的项目管理,没有一种组织是万能的,不论是职能化组织、项目化组织、线性化组织还是不同的矩阵化组织,都各有其长处和不足。 直线性组织结构特点: 反应迅速灵活; 运营成本较低; 指令唯一且责任明确; 低正规化和高度集权度的结构会导致高层信息超载; 随着规模的扩大制定决策变得非常缓慢; 高层经理会陷入日常经营活动中而无法做好长期性的资源配置工作。 职能性组织形式特点: 在人员利用上有较大的弹性和适应性; 个别专家可被不同项目利用; 部门中的专家可以被组织起来共享知识和经验; 在个别人离开项目甚至上级组织时仍可以保持技术上的延续性; 职能部门有自己的常规工作,这些工作常常优先于项目考虑,客户常被忽略; 职能部门中没有一个人对项目全权负责,不能引起对项目的高度责任感; 协调性差; 不易形成对项目的系统化管理系统。 矩阵形组织形式特点: 项目管理强调的重点是,项目经理个人负责管理项目以保证项目在规定费用之内按期完成; 由于项目组织覆盖于职能部门之上,因此人力资源管理方便,且项目可充分利用职能部门的技术优势; 对客户反应迅速; 项目决策权力需要在项目组织和职能部门两者之间平衡从而会带来一定困难; 多个项目之间优化项目目标是矩阵制的一个优点但也由此带来项目之间的资源竞争从而互相影响; 由于项目人员至少有两个上级(项目经理和职能部门经理),所以容易造成上级命令的不统一,从而带来管理上的混乱。 在实际应用中,软件项目采用何种组织形式需要考虑项目的不同情况。项目的目标、项目所处的环境、项目的规模都会对项目组织结构的选择产生影响。当然,三种不同的项目管理组织形式对项目也会产生不同的影响。 5.3软件项目团队人员的获取 通过组织计划编制过程决定了软件项目所需的人员之后,需要做的就是确定如何在合适的时间获得这些人员。 5.3.1项目经理的确定 确定与指派项目经理是项目启动阶段的一个重要工作。项目经理是项目组织的核心和项目团队的灵魂,将对项目进行全面的管理。他的管理能力、经验水平、知识结构、个人魅力都对项目的成败起着关键的作用。项目经理的工作目标是负责项目保质保量按期交付。在项目决策过程中,项目经理不仅要面对项目班子中有着各种知识背景和经历的项目管理人员,又要面对各利益相关方以及客户。 对项目经理的主要要求包括: 在本行业中某一技术领域中具有一定权威,技术要过硬; 任务分解能力强; 注重对项目成员的激励和团队建设,能良好地协调项目小组成员之间的关系; 具备较强的客户人际关系能力; 具有很强的工作责任心,能够接受经常加班的要求; 应更注重管理方面的贡献,胜过作为技术人员的贡献。 5.3.2项目团队人员的确定 在项目经理确定之后,项目经理就要与公司相关人员一起商讨如何通过招聘流程获取项目所需的人力资源。这种招聘过程可以是面向内部员工,也可以是面向社会人力资源。对软件项目团队中成员的主要要求包括: 具备特定岗位所需的不同技能,这可能是设计、编码、测试、沟通等能力; 适应需求和任务的变动; 能够建立良好的人际关系,与小组中其他成员协作; 能够接受加班的要求; 认真负责、勤奋好学、积极主动、富于创新。 很有影响力并富有谈判技巧的项目经理往往能很顺利地让内部员工参与到他的项目中来。当然,组织必须能确保分配到项目工作的员工是最适合项目需要的,同时也要确保分配给他的工作是最能发挥他技术特长的。在大多数情况下,可能得不到“最好”的资源,但项目团队必须确保获得的资源满足项目的需要。当执行组织缺少完成项目所需的内部人员时,需要执行对外招聘流程以获取项目开发所需的人员,这些项目成员可能是全职、兼职或流动的,他们的工作目标是保质保量地完成项目经理赋予对应岗位的工作任务并报告任务进度。 5.4软件项目团队建设 5.4.1软件项目团队的组建 软件项目团队的组建工作包括团队成员的到位和搭建项目组内部的组织结构、角色分配和任务分工。团队规划主要有人数要求、技术能力要求、业务能力要求以及各类人员的比例。需要强调的是必须明确技术能力和业务能力的要求,以及各类人员是否需要通过培训以达到技术能力或业务能力的要求。 即使成功地招募了很熟练的人员参加项目,也必须保证让他们组成一个团队一起工作以实现项目目标。许多项目都有不少非常有才能的员工,但项目要获得成功必须依靠整个团队的努力。组建项目团队需要将项目目标确立为团队的共同目标,按照项目任务明确角色的任务分配。有效的团队应该具备良好的内外沟通关系,能够做到彼此之间相互支持。 在组建优秀的项目团队时,项目经理的作用十分重要。项目经理对项目进行全权管理,对项目目标的实现负有全部的责任,他所扮演的角色起到的作用对项目而言是至关重要的,是任何人都难以取代的。Boehm在他的《软件工程经济学》一书中指出: 一支领导能力出色、管理水平上乘的程序员和分析员队伍的生产效率是一般队伍的四倍。这个结论证明了领导才能和项目管理技能对取得高效软件开发成果的重要性,没有有效的项目管理就不会有项目的成功,而没有合格的项目经理就不会有高效的团队,就不会有软件开发项目的成功。图53所示为Microsoft Windows 2000的开发团队和Web Matrix开发团队的组建情况。 使合适的人才加入到项目中来只是项目团队建设的第一步。项目经理还必须懂得怎样用人,并且留住人才,为以后的项目开发工作打下良好的基础。软件开发项目组的主要成员是具有一定专业知识的技术人员,为了更好地发挥这些人员的作用,项目的管理人员应遵守以下几个原则: ①人尽其才; ②公平原则; ③透明原则; ④给项目成员提供尽可能多的培训机会; ⑤正确处理人力资源的风险问题。 除了遵循上述用人原则,尽量做好人员稳定的工作外,以较低的代价进行及早的预防是降低这种人员风险的基本策略。具体来说可以从以下几方面对人员风险进行控制: ①保证开发组中全职人员的比例,且项目核心部分的工作应该尽量由全职人员来担任,以减少兼职人员对项目组人员不稳定性的影响; ②建立良好的文档管理机制; ③加强项目组内技术交 Windows 2000开发团队 Web Matrix开发团队 内部IT50程序经理2 市场人员100开发组长/架构师1 文档人员100开发人员7 本地化人员110测试组长1 培训人员115测试人员13 程序经理450合计24 技术支持人员600 技术传播人员1120 开发人员900 测试人员1800 合计5345 图53微软项目开发团队举例 流; ④对于项目经理,可以从一开始就指派一个副经理在项目中协同项目经理管理项目开发工作,如果项目经理退出开发组,副经理可以很快接手,一般只建议在项目经理这样高度重要的岗位采用这种冗余制的策略来预防人员风险,否则将会大大增加项目成本; ⑤为项目开发提供尽可能好的开发环境。 5.4.2团队合作 团队意识就是团队成员为了团队的整体利益和目标而相互合作、共同努力的意愿与作风。其内涵主要包括以下几方面: ①在团队与其成员的关系方面,团队意识表现在团队成员对团队的强烈归属感与一体感; ②在团队成员之间的关系上,团队意识表现为成员间的相互协作从而形成有机的整体; ③在成员对团队的事务上,团队意识表现为团队成员对团队事务的尽心尽力和全方位投入。 培养了团队成员的团队意识,还要遵循团队合作的指导方针来促进团队合作。这些指导方针如表51所示。 表51团队合作的指导方针 团 队 领 导团 队 成 员 作为一名团队领导: 作为一名团队成员: (1) 避免团队目标向政治问题妥协(1) 展示对于个人角色和责任的真实理解 (2) 向团队目标显示个人的承诺(2) 展示目标和以事实为基础的判断 (3) 不用太多优先级的事物冲淡团队的工作(3) 和其他团队成员有效地合作 (4) 公平、公正地对待团队成员(4) 使团队目标优先于个人目标 (5) 愿意面对和解决与团队成员不良表现有关的问题(5) 展示投身于任何项目成功所需的努力的愿望 (6) 对来自员工的新思维和新信息采取开放的态度(6) 愿意分享信息、感受和产生适当的反馈 (7) 当其他成员需要时给予适当的帮助 (8) 展示对自己的高标准要求 (9) 支持团队的决策 (10) 展示直接面对重要问题的勇气和信念 (11) 以为团队的成功奋斗的方式体现带头作用 (12) 对别人的反馈做出积极的反映 5.4.3团队成员激励 激励是用人的艺术,它通过研究人的行为方式和需求心理来因势利导地激发人的工作热情,改变人的行为表现,提高个人或组织绩效。 软件项目团队中,激励是组织成员个人需要和项目需要的结合。一方面必须考察了解项目成员的需要,进行有针对性的激励; 另一方面,必须符合项目发展的需要,进行有目的的激励。马斯洛把人的需求分为五个层次: 生理需要(衣、食、住等)、安全需要(稳定、身体安全、经济安全)、社交需要(亲情、友情、归属感)、尊重需要(地位和自我尊重、认可和感激)、自我实现需要。对于软件人员这类知识型员工来说,他们是位于这个层次体系中的最高层,是追求自我实现需要的群体,学习机会、创造是对他们主要的激励因素。对于企业来讲,软件企业的成长需要员工不断学习、永远创新,并且进行充分的团队合作。 5.4.4团队的学习 团队学习是提高团队绩效,保持其先进性的重要举措,也是项目开发团队成员及其所在组织的共同需要。 软件行业是一个知识迅速更新、开发过程难以管理的高科技行业,对员工进行培训,让他们学习到新的知识具有非常重要的意义。培训不仅可以给公司带来巨大的经济效益,也能够提高员工的自身能力,所以,在这个不学习就会被社会淘汰的时代,员工希望通过自己的努力工作不断战胜自己,也希望自己的组织能够给予支持,以实现其职业目标和职业规划。所以,培训也是提高员工工作热情和效率的重要一环。还可以采用学习型组织的形式来进行学习。所谓学习型组织,是指通过培养弥漫于整个组织的学习气氛、充分发挥员工的创造性思维能力而建立起来的一种有机的、高度柔性的、扁平的、符合人性的、能持续发展的组织。这种组织具有持续学习的能力,具有高于个人绩效总和的综合绩效。 5.4.5软件项目团队成员绩效评估管理 绩效评估的根本目的是完善工作,为了员工更好地发展。按照绩效评估的目的划分,绩效评估可分为以下几种类型: 奖金分配评估; 提薪评估; 业绩评估; 人事评估; 职务评估; 晋升评估。 晋升考核是企业人事考核中最重要的工作。晋升工作关系着企业干部队伍的形成,关系到企业发展前途,历来为企业高度重视。晋升评估也是对职工的全面评价。 绩效评估遵循以下原则: ①公开性原则; ②客观、公正原则; ③及时反馈原则; ④敏感性原则,又称区分性原则; ⑤可行性原则; ⑥多层次、多渠道、全方位评价的原则; ⑦绩效评估经常化、制度化的原则。 5.5案 例 分 析 以微软项目团队管理案例为例。微软是软件行业的巨头,通过对成功与失败教训的不断总结,微软形成了一种经过实践证明极为有效的、科学的软件开发项目团队的组建模型(以下简称“微软团队模型”)。通过对该模型的探讨可以总结出其在成功的项目组中组织人力资源、安排工作任务的基本原则和方法,该模型定义了项目组内的角色分工、任务分配和人员职责,并为项目组成员提供了有关在项目生命周期中如何实现特定目标的指导性建议。实际的软件开发项目应借鉴这个模型,建立有利于项目成功实现的开发团队。 微软团队模型可以描述为: 项目组都是小型的、多元化的团队(在微软,即便是那些大型项目组,也都依照类似原则组建,从逻辑上仍可以被划分为若干个小型的团队),这些项目组拥有严格的产品发布期限,项目组成员分工协作、各司其职,扮演着相互依赖、相辅相成的不同角色,共同完成项目的开发工作。项目组成员在特定的技术或业务领域具有专业技能,在统一的项目指导思想指引下,他们对各自的工作目标负责,每一个成员都参与项目的设计和讨论,并从过去的项目实践中吸取经验。项目组成员在同一地点办公,共同管理项目过程、制定相关决策。 微软团队模型的成功之处在于它明确了项目的组队角色和项目的目标,并在角色和目标之间建立了一一对应的关系。同时它充分利用了小型项目组的优势。 5.5.1MSF团队角色和责任分配 在MSF(微软解决方案框架)团队小组内部,每个角色通过对小组本身负责(也对他们各自所属的组织负责)实现该角色的质量目标。在这种意义上,每个角色都对最终解决方案质量的一部分负责。小组成员之间共同承担职责(根据不同小组角色指派)。角色之间是相互依赖的,有以下两个原因: 首先,就其必要性而言,把每个角色的工作分隔开是不可能的; 其次,出于优先的原因,如果每个角色都了解全局情况,那么小组的效率会更高。这种相互的依赖性会鼓励小组成员对由他们负责的直接区域以外的工作做出评论和贡献,以确保小组所有的知识、能力和经验能够被应用到解决方案里。项目的成功属于所有的小组成员,他们共同分享一个成功的项目所带来的荣誉和回报,他们也同时希望,即使是一个不太成功的项目,也能做到全心投入并从中吸取教训以完善他们的专长。 根据MSF团队组建模型可以将项目组中的所有职能划分为六种角色,分别是产品管理角色、项目管理角色、开发角色、测试角色、用户体验角色和发布管理角色,如图54所示。 图54MSF团队组建模型 这六种项目角色处于对等的项目组结构中,各自完成特定的职能。在六种角色构成的环形结构里,沟通占据了核心地位,这是因为交流和沟通是促使六种角色协同工作、共同完成项目目标的关键因素。所有成功的项目组都拥有顺畅的内部和外部沟通渠道。项目组成员之间、项目组与客户之间、项目组与其他项目组之间都能够随时保持信息的正常交流和反馈。 5.5.2微软项目团队结构 微软项目团队结构是以“三驾马车”架构为核心的矩阵式组织结构,其中体现了一种三权分立的思想。微软的项目团队由程序经理、开发组、测试组组成。团队成员各司其职,充分沟通,开发出符合用户需求的高质量产品。项目开始,由程序经理到开发组、测试组选择相应的成员,组成开发团队,程序经理对团队成员没有领导权,所有成员的领导权还是在各个团队中。当程序经理发现开发人员工作有问题的时候会提交问题到开发组进行解决,当在同一层面上问题无法进行达成一致的时候,可以将问题上升到产品单元总经理。 图55所示的组织结构图反映微软项目团队组织中的层级关系、隶属关系、汇报关系。在组织结构图中上下级之间的管理和汇报关系是最重要的部分。而在MSF模型中,六个角色的定义并未给出角色之间的隶属、管理或者汇报关系,项目组内的各个角色之间是对等、协作的关系,相互配合、共同完成项目目标。 图55微软团队模型的结构 5.5.3微软VSTS工具 VSTS(Visual Studio Team System)是一套高生产力的、集成的、可扩展的生命周期开发工具,它扩展了Visual Studio产品线,增强了软件开发团队中的沟通与协作。利用VSTS,开发团队能够在开发过程的早期以及在整个开发过程中确保更高的可预见性和更好的质量。使用VSTS,微软可以帮助不同的软件开发小组开发更健壮的软件系统。 5.6本 章 小 结 本章讲述了软件项目团队管理的概念、特点、过程、方法及其在软件项目管理中的作用与重要性。软件项目团队管理主要包括团队组织计划、团队人员获取和团队建设三个部分。软件企业是知识密集型的技术企业,其有没有市场竞争力、能否快速发展,关键在于是否拥有一支具有高素质的软件人才队伍。本章最后介绍了微软团队管理的MSF团队角色、产品开发团队结构并介绍了Windows 2000开发团队的案例和VSTS团队开发和管理工具。 5.7复习思考题 1. 什么是软件项目团队?它与其他企业的人力资源有什么不同? 2. 什么是软件项目团队管理?它是怎样出现的? 3. 软件项目团队管理主要包括哪些方面? 4. 简述如何进行软件项目的组织计划编制。 5. 在软件项目中,对项目经理有哪些要求? 6. 团队的学习对团队的建设有哪些作用? 7. 学习完微软项目团队管理案例后,你有哪些收获?