Team Organization

Steven J Zeil:

Last modified: Dec 21, 2019
Contents:

Abstract

Development teams are organized to

In this lesson, we look at some of these issues and at some common organizations that have been considered to deal with these.

1 Issues

Major issues in organizing a development team are

1.1 Communications

There are two key aspects here

1.1.1 Internal Communications

Brook’s law is well-known truism of software development:

"Adding manpower to a late software project makes it later. – Fred Brooks, _The Mythical Man-Month, 1975

Why?

Brooks argues that

He suggests that partly, this is an attribute of the problem being solved.


Reducing Internal Communications Costs

Our options are limited

1.1.2 External Communications

We can divide this into

Historically, the former has been emphasized

Over time, more and more emphasis has shifted to communications with the users.


Users, Customers, and Stakeholders

“Users” is an incredibly vague, catch-all term that serves to hide as much as it reveals.

Avoid it when possible.

Example:

We look to customers for general guidelines on what will make the valuable and acceptable to them.

We look to stakeholders for much of the insight into how the system needs to work.

2 General Organizations

There are a few “obvious” ways to organize developers into a team.

One might be the basic democracy (or anarchy) of everyone working as peers.

2.1 Hierarchical Team Organization


Dangers of Hierarchical Teams

2.2 Matrix Organization

Roles/Teams
Sub-systems Coding Architecture Analysis Testing GUI
A Y Y Y Y
B Y Y Y Y
C Y Y Y
D Y Y

Clearly this has limited benefit if an organization is so small that they have just one architect, one tester, …

In this model, team members with critical skills can be swapped from project to project depending on where each project is within the SDPM. For example, a good architectural designer may leave projects once they enter the high-level design phase.


Dangers of Matrix Organization

3 Software Team Organizations

Anarchy, hierarchy, and matrix are all pretty generic forms.

Next we look at some specific organizations that have been attempted.

3.1 Chief Programmer Teams

Mills (1970)


Organization of the Chief Programmer Team


Observations

3.2 SWAT Teams

SWAT == Skilled With Advanced Tools

A team organization for iterative process models

3.3 Agile Teams

3.4 Distributed Teams

Common in open-source development

Total team can be huge and diverse.


Closing Thoughts