如何组建开发团队-谈谈团队组成

 最近忙着公司搬家,搞得鸡飞狗跳。现在终于可以安顿下来,接着写这个系列的文章。

什么样的团队是合格的团队?什么样的团队最有战斗力?如何安排团队中各种人员的身份和比例?这里问题向来都是项目经理比较头疼的问题,也是仁者见仁智者见智的问题。我想这种问题也不会有个类似银弹的解决方案,所以下面我就我个人的经验和感受谈谈如何组建团队,并安排团队组成的。

一、橄榄法

主要是为了解决项目质量控制,项目组间资源共享等问题。其基本思路是:

1、 项目的入口同一起点,即:所有项目售前、需求分析阶段由“专家”团队承担。

2、 系统的设计保证质量,即:系统的设计要汇聚公司的优秀资源,既要考虑系统的需求,又要考虑开发成本,还要结合公司现有的开发技术能力和已有的技术资源。

3、 系统的开发并行实施,即:系统的开发和编码阶段,由开发部门进行全盘考虑和统一安排,根据项目的进度要求灵活组建开发团队。

4、 系统的出口归并统一,即:系统测试必须严格把关,由测试部门承担,保证所有系统质量的一致性。系统的发布通过统一的出口,包括包装(如果需要)和各种附加文档(如:使用手册、系统说明书)。

下图是传统项目开发方式和橄榄法开发方式的比较

传统方法是以项目组为单位,项目组人员基本上从开始到最后基本上是固定的,橄榄法是以项目的不同阶段来组织不同的团队,其人员的数量和成员本身随着项目的进程不停的调整。

二、项目角色:

有效的项目团队由担当各种角色的人员所组成。每位成员扮演一个或多个角色,常见的一些项目角色包括:

角色

描述

项目经理

项目管理人员,要求具有良好的沟通能力和管理能力

客户经理

市场人员

技术经理

开发过程中负责技术管理的人员

售前工程师

知识全面、表达能力优秀

需求分析师

业务专家

系统构架师

技术能力突出,有丰富的项目经验

界面设计师

具有一定的业务知识,能快速设计用户界面

系统设计师

设计人员

数据库设计师

数据库设计人员

数据库管理员

DBA

技术支持工程师

硬件、网络支撑

程序员

包括:界面开发工程师、业务逻辑开发工程师、数据库开发工程师等

质量保证工程师

质量管理和质量控制人员

测试人员

对业务非常熟悉,能从功能和性能方面测试系统

以上每个角色都应该有清晰的工作定位。并要求具有相应的技能,能在项目的各个阶段出色完成任务,这些称为人力资源,是保证项目成功的最基本的条件。

三、项目前期的组织:

项目前期主要指的是项目业务需求调研、包括配合用户制定项目建设方案、技术规范书、配合市场人员进行售前技术交流等环节,此阶段应该组织由售前工程师、需求分析师(业务专家)以及系统构架师等组成一个临时小组,负责跟踪项目。这个小组根据项目的大小和客户的要求确定小组成员,一般由3—5名成员组成。根据客户的要求,既可以是全职的,也可以是兼职的。

项目前期小组的工作是项目的开始,这个小组工作成绩的优劣、工作质量的高低,将直接影响项目的成败。因此,从管理层的角度,一定要重视这个环节。

项目前期小组需要完成的工作包括以下方面:

1、 客户的各种项目前期要求,如:方案介绍、业务需求编写等

2、 提交项目可行性分析报告,包括成本/效益分析

3、 提交项目建议方案

4、 提交业务需求说明书或需求分析说明书

四、系统设计阶段

系统设计是决定项目或软件系统“怎样做”的过程,这个过程回答了系统应该如何实现的问题。从软件工程的角度,设计阶段大约是整个项目开发成本的25%,所以,设计团队以及该团队的工作成绩对于整个系统来说至关重要。

设计团队一般由3—8名设计人员组成,从这个阶段起,项目需要一名项目经理,行使项目组的各种管理职能。设计团队的成员具体包括:

1名项目经理

包括1—2名项目前期成员

1名系统构架师

2—4名设计人员

1名数据库设计人员

1名用户界面设计人员组成

设计团队需要完成的工作包括:

1、 项目开发计划

2、 确定系统软硬件配置最佳方案

3、 确定系统开发平台以及开发工具

4、 确定系统软件结构

5、 确定系统功能模块以及各个模块之间的关系

6、 确定系统测试方案

7、 提交系统数据库设计方案

8、 提交系统概要设计文档

由于应用软件需求经常变化,因此设计需要考虑系统可扩展性,并需要在设计过程中对于重要的环节和用户进行及时沟通。

五、编码和系统实现阶段

将用户的需求变成真正可用的软件系统,是通过编码和系统实现阶段来完成的。虽然软件的质量主要取决于系统设计的质量,但是编码的途径和实现的具体方法对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。

这个阶段要根据用户对项目进度的要求灵活组织开发团队,一般5—15左右。为了工作的连贯性,同时也为了解决在开发过程中用户需求有可能变化的因素,开发团队因该保留1—3名设计团队的成员。

开发过程中,项目经理的角色非常重要,项目经理负责项目组开发人员的日常管理,控制项目的进度,负责和设计部门、市场部门以及客户之间进行必要的沟通。这个阶段通常是多个部门的人员共同组成一个项目组,因此,项目管理的一定要保证统一管理,理想状态是项目经理全权负责项目组人员的人员工作安排、业绩考核、工资奖金等,因为项目经理最了解项目组成员的工作态度和工作业绩。

一般在大型项目开发团队中,应该设立专门的技术经理岗位,负责对项目组的技术方案进行管控,技术经理最好是由设计团队中抽调出来。技术经理在项目开发过程中需要注意程序风格、编码规范等问题,并必须进行有效的代码管理(版本管理)。

开发过程还应该进行系统的单元测试工作,确保各个独立模块功能的正确性和性能满足需求说明书的要求。

开发团队应该完成的工作包括:

1、 系统的实现代码编写

2、 单元测试

3、 提交源代码清单

4、 提交单元测试报告

六、系统测试、软件打包阶段

系统测试阶段在整个软件生存周期中是占据总工作量最大的一个环节,统计资料表明在40%左右,有的时候还可能是其他过程的几倍,因此,必须高度重视软件的测试工作。

软件的测试本身是发现软件中的错误,但是发现错误是为了使开发的系统完全满足用户的需求,因此测试工作还伴随着诊断、改正错误、调试等复杂过程,测试也是软件开发最困难的工作。

测试这个环节,参与人员除了测试人员以外,还应该包括几乎所有的开发人员,同时我们经常可以把这个环节看作是编码工作的延续,直到完成集成测试、通过测试验收,形成最后的发布版本。

经过测试、稳定的软件版本包括相关的文档可以进行打包,作为软件开发的出口。

这个阶段,必须严格把关,确保各个开发组完成的软件都是高质量的、同一个水平层次的软件系统。

这个阶段完成的工作包括:

1、 更改情况说明

2、 集成测试报告

3、 软件发布版本

4、 系统使用说明书

5、 系统安装配置说明书

七、工程施工及软件安装阶段

由于从事的应用软件的开发,因此,在开发完成之后经常会有系统集成、软件的安装等工作。这个阶段还经常伴随着新的业务需求和本地化需求的产生,因此将会有一部分的开发工作需要在这个阶段完成。

工程实施阶段需要的人员包括:

1名项目经理

多名技术支持工程师(硬件、网络支撑)

2—4名软件开发人员

 

posted @ 2013-06-06 09:56  白昼  阅读(8152)  评论(1编辑  收藏  举报