How to organize a software development team [收藏/转贴]

原文链接:

http://www-128.ibm.com/developerworks/library/ws-tip-team.html (English)

http://www-128.ibm.com/developerworks/cn/rational/tip-team/index.html (中文)

 

How to organize a software development team

Specialists, generalists, or a combination?

 

Level: Introductory

Scott Ambler (scott.ambler@ronin-intl.com), President, Ronin International

02 Nov 2000

How you build a software development team depends on the people that you have available to you, the needs of your project, and the needs of your organization. This article explains various team organization strategies.

Effective software project teams are composed of people fulfilling a variety of roles. Each person takes on one or more roles; perhaps one person focuses on project management whereas another may be actively involved with both design and implementation of your system. Common project roles include:

  • Analyst
  • Architect
  • Database administrator
  • Designer
  • Operations/support engineer
  • Programmer
  • Project manager
  • Project sponsor
  • Quality assurance engineer
  • Requirements analyst
  • Subject matter expert (user)
  • Tester

How do you organize your team? Do you take a vertical approach where your team is made up of generalists, each of whom takes on a wide variety of roles? Do you take a horizontal approach where your team is composed of specialists, each of whom takes on one or two roles? Or do you take a hybrid approach and include both generalists and specialists on your team?

An important factor to consider is the nature of the people that you have available to you. If most people are generalists then you likely want to take a vertical approach, and likewise you would take a horizontal approach if most people are specialists. If you are in a position to bring in new staff, even if they are contractors, then you need to consider the priorities of both your project and your organization. This article describes the vertical, horizontal, and hybrid approaches to team organization and indicates their advantages and disadvantages. An important implication of this discussion is that your team organization and your approach to managing your project go hand-in-hand; any mismatch in approaches will likely lead to problems for your project.

Vertical team organization

A vertical team is composed of generalists. Use cases are assigned to individuals or small groups, who then proceed to implement the use case end to end.

Advantages

  • You have smooth end-to-end development on an individual use case basis.
  • Developers gain a wider range of skills.

Disadvantages

  • Generalists are typically high-paid consultants who are difficult to find.
  • Generalists typically do not have the specific technical expertise required to quickly solve detailed problems.
  • Subject matter experts may have to work with several groups of developers, increasing their burden.
  • All generalists are not created equal.

Success factors

  • Everyone is working to a common set of standards and guidelines.
  • Good communication between developers is required to avoid common functionality being implemented by various teams.
  • Common, and agreed to, architecture needs to be developed early in the project.


Horizontal team organization

A horizontal team is composed of specialists. This team works on several use cases simultaneously, each member working on their own aspects of the use case.

Advantages

  • A higher quality of work is performed for each aspect (requirements, design, and so on) of the project.
  • External groups, such as users and operations staff, interact with a small group of specialists who understand their exact needs.

Disadvantages

  • Specialists often do not appreciate the importance of other specialties, resulting in disconnects between various aspects of the project.
  • Information required by "back-end" people may not be gathered by the "front-end" people.
  • Project management is more difficult because of competing priorities, visions, and needs of specialists.

Success factors

  • Good communication is required between team members so that they understand where each person is coming from.
  • Defined processes and quality gates that specialists must follow to promote effective hand-off to other specialists are required.

Hybrid team organization

A hybrid team is made up of both generalists and specialists. The generalists stay with a use case throughout its development, supporting and working with specialists who work on portions of several use cases.

Advantages

  • You get the best of both worlds.
  • External groups interact with a small group of experts.
  • Specialists focus on what they are good at.
  • Individual use cases are implemented consistently.

Disadvantages

  • You get the worst of both worlds.
  • Generalists are still hard to obtain.
  • Specialists still may not appreciate and work well with other specialists, although this should be tempered by the generalists.
  • Project management is still difficult.

Success factors

  • Good team communication is required.
  • Common architecture needs to be developed.
  • Common processes, standards, and guidelines must be well defined.

Team morale as a project success factor

Most definitions of project success talk about how your project is on time, on budget, and meets the needs of its users. However, in a day and age where good software professionals are hard to find, let alone keep, this definition needs to be expanded to include the morale of the project team. Getting a software project out the door, only to lose key developers because you burned them out to do so, might meet your organization's short-term needs but it certainly doesn't do much for its long-term prospects for building an efficient software department. An important measure of project success is the morale of the team at the end of the project. It is important that, at the end of a project, the individuals on the project team feel that they all learned something from their experience, that they enjoyed working on the project, and that they want to stay with the organization to work on the next project.



Resources


About the author

Scott W. Ambler is President of Ronin International, a consulting firm specializing in object-oriented software process mentoring, architectural modeling, and Enterprise JavaBeans (EJB) development. He has authored or co-authored several books about object-oriented development, including the recently released The Object Primer 2nd Edition, which covers, in detail, the subjects summarized in this article. He can be reached at scott.ambler@ronin-intl.com and at his Web site at www.ambysoft.com.

 


有效的软件项目团队由担当各种角色的人员所组成。每位成员扮演一个或多个角色;可能一个人专门负责项目管理,而另一些人则积极地参与系统的设计与实现。常见的一些项目角色包括:

  • 分析师
  • 策划师
  • 数据库管理员
  • 设计师
  • 操作/支持工程师
  • 程序员
  • 项目经理
  • 项目赞助者
  • 质量保证工程师
  • 需求分析师
  • 主题专家(用户)
  • 测试人员

您是如何组织项目团队的?是采用垂直方案、水平方案还是混合方案?以垂直方案组织的团队由多面手组成,每个成员都充当多重角色。以水平方案组织的团队由专家组成,每个成员充当一到两个角色。以混合方案组织的团队既包括多面手,又包括专家。

一个重要的考虑因素是可供选择的人员的性质。如果大多数人员是多面手,则您往往需要采用垂直方案,同样,如果大多数人员是专家,则采用水平方案。如果您正引入一些新人,即使这些人员都是合同工,则仍然需要优先考虑您的项目和组织。本文描述了形成团队组织的垂直、水平和混合方案,并指出了它们各自的优缺点。本次讨论的一个重要含意是您的团队组织和用于管理项目的手段之间应构成默契;任何方法上的失谐都很可能导致项目产生问题。

……

1. 用户与权限管理模块 角色管理: 学生:查看实验室信息、预约设备、提交耗材申请、参与安全考核 教师:管理课题组预约、审批学生耗材申请、查看本课题组使用记录 管理员:设备全生命周期管理、审核预约、耗材采购与分发、安全检查 用户操作: 登录认证:统一身份认证(对接学号 / 工号系统,模拟实现),支持密码重置 信息管理:学生 / 教师维护个人信息(联系方式、所属院系),管理员管理所有用户 权限控制:不同角色仅可见对应功能(如学生不可删除设备信息) 2. 实验室与设备管理模块 实验室信息管理: 基础信息:实验室编号、名称、位置、容纳人数、开放时间、负责人 功能分类:按学科(计算机实验室 / 电子实验室 / 化学实验室)标记,关联可开展实验类型 状态展示:实时显示当前使用人数、设备运行状态(正常 / 故障) 设备管理: 设备档案:名称、型号、规格、购置日期、单价、生产厂家、存放位置、责任人 全生命周期管理: 入库登记:管理员录入新设备信息,生成唯一资产编号 维护记录:记录维修、校准、保养信息(时间、内容、执行人) 报废处理:登记报废原因、时间,更新设备状态为 "已报废" 设备查询:支持按名称、型号、状态多条件检索,显示设备当前可用情况 3. 预约与使用模块 预约管理: 预约规则:学生可预约未来 7 天内的设备 / 实验室,单次最长 4 小时(可设置) 预约流程:选择实验室→选择设备→选择时间段→提交申请(需填写实验目的) 审核机制:普通实验自动通过,高危实验(如化学实验)需教师审核 使用记录: 签到 / 签退:到达实验室后扫码签到,离开时签退,系统自动记录实际使用时长 使用登记:填写实验内容、设备运行情况(正常 / 异常),异常情况需详细描述 违规管理:迟到 15 分钟自动取消预约,多次违规限制预约权限 4. 耗材与安全管理模块 耗材管理: 耗材档案:名称、规格、数量、存放位置、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值