All large projects are developed by teams because of the enormous complexity and amount of work to complete. This applies not only to building physical structures such as bridges or buildings, but also to software systems. Certain organizational structures or patterns have developed over time to meet different project needs.
At the core of a project is a collection of people organized hierarchically. At the head of the hierarchy is the Project Manager who has full responsibility for all aspects of the project. The remainder of the people are organized into generally two or more teams who either develop the software or provide support functions to the project.
Types of Teams
The variation in organizational pattern that may occur is based on the reporting responsibility of the members of the project team(s). There are two frequent forms of organization. These are a Dedicated Team or a Matrix. The Dedicated Team remains together and moves from one project to another. They report to the project manager who has not only project responsibility but also general supervisory responsibility for team members. The latter entails performance reviews, training, and other supervisor-employee administrative activities.
Advantages of the Dedicated Team include project manager's control of the employees' work schedules so that particular personnel will be available for specific projects and full awareness of the experience level of each of the staff. The main disadvantage is the extra time spent on general supervisory administration which detracts from the activity of managing projects.
The other organization is known as a Matrix. In this form of organization the development personnel report to a functional manager who is responsible for the general supervisor-employee administration. The project manager has only responsibility for the project and directs people requested or assigned to the project while they are engaged on the project.
Advantages of the Matrix organization include skill specialization for team members, greater flexibility in obtaining personnel for the team, and as mentioned, freedom for the project manager to focus entirely on the project. Disadvantages include schedule conflicts for highly desirable personnel with other projects, greater difficulty obtaining cogent management data, and the lack of employee loyalty.
Internal Team Structure
The discussion so far has been to describe the management organizational structure. Once a team is assembled in either a Dedicated Team or a Matrix organization, there can be variation in how the team is organized within itself. The two general forms of internal team organization are Democratic Team and Chief Engineer Team.
The Democratic form describes a collection of equals. The team bonds together via mutual respect for each other. They essential form a group identity, or ethos, and the software code developed is the responsibility of the entire team not just the individual who created a module. These ego-less teams can only spring up spontaneously and can not be imposed from without. They are known to enormously productive.1 This type of team is best when the members are senior and experienced.
The other internal organization for a team is known as the Chief Engineer Team. It is also known as the Chief Programmer Team. This type of team is better when one person has greater experience than other team members. The best analogy to describe the team is to compare them to a surgical team with a chief surgeon directing the operation. Advantages include specialization of tasks among the junior members and the focus of responsibility for the results concentrated in the Chief Engineer position. Disadvantage is that the Chief Engineer must be both proficient at managing and directing others as well as extremely experienced in the technical aspects of the work for which they are responsible. Unfortunately such "super-people" are very difficult to find. The primary reason is finding expertise in both management and technical skill sets that are unrelated to each other.
The ideal size for a project team is 4 to 6 people. The number of relationships between people is the factorial of the number of people on the team. So a team of 4 people will have 24 different communication relationships between single individuals. A team of 6 will jump up to 720 different communication relationships!
There are variations in the organization of personnel to accomplish a software development project. This discussion has reviewed two organizing structures at the management level, namely Dedicated Teams or Matrix. A team should be composed of 4 to 6 members to be ideal because of the complexity of the communication channels. A team itself may be organized in different ways as well. Two such ways described here are the Democratic Team and the Chief Engineer Team.
- Schrach, page 386.
- Schrach, Stephen R. Classical and Object-Oriented Software Engineering 3rd Ed., Chicago, IL: Irwin, 1996.