Skip to main content

Web services programming tips and tricks: How to organize a software development team

Specialists, generalists, or a combination?

Scott W. Ambler, Practice Leader, Agile Development, Rational Methods Group, IBM, Software Group
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.

Summary:  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.

Date:  02 Nov 2000
Level:  Introductory
Activity:  2790 views
Comments:  

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.

Comments



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=SOA and Web services
ArticleID=11452
ArticleTitle=Web services programming tips and tricks: How to organize a software development team
publish-date=11022000
author1-email=scott_ambler@ca.ibm.com
author1-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers