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 ([email protected]), 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

  • Process Patterns -- Building Large-Scale Systems Using Object Technology by Scott Ambler. New York: Cambridge University Press, 1998.
  • The Unified Process Inception Phase by Scott W. Ambler and Larry L. Constantine. Gilroy, CA: R&D Books, 2000.
  • The Unified Process Elaboration Phase by Scott W. Ambler and Larry L. Constantine. Gilroy, CA: R&D Books, 2000.
  • Constantine on Peopleware by Larry L. Constantine. Englewood Cliffs, NJ: Yourdon Press, 1995.
  • Peopleware: Productive Projects and Teams, 2nd Edition by Tom Demarco and Timothy Lister. Dorset House Publishing, 1999.
  • "Organizational Patterns for Teams," Pattern Languages of Program Design 2, pp. 345-352, by Neil B. Harrison. Addison-Wesley Publishing Company, 1996.

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 [email protected] and at his Web site at www.ambysoft.com.

 


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

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

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

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

……

你可能感兴趣的:(classic)