Pankaj Jalote in the book "An Integrated Approach to Software Engineering" describes three types of team structures:
- Ego-less team (aka democratic team).
- Chief-programmer team.
- Controlled decentralized team.
Ego-less team have no leader. All decisions in it are making through discussion and with consensus.
Every member of democratic team have communication interfaces with all other team members, i.e. every team member have n-1 communication interface, where n is team size.
So, there are n(n-1)/2 total amount of communication path in the team.
Chief-programmer team, obviously, have a leader (named chief programmer). He make all decisions.
All communication go through him. There is no direct communication between other team members. In this case chief programmer have n-1 communication interface and other team-members have only 1 communication interface (with chief programmer).
So, there are n-1 total amount of communication path in this structure.
The last Controlled decentralized team is combination of Ego-less team and Chief-programmer team.
This is description of this structure form "An Integrated Approach to Software Engineering" (1st edition):
It [Controlled decentralized team] consists of a project leader who
has a group of senior programmers under him, while under each senior
programmer is a group of junior programmers. The group of a senior
programmer and his junior programmers behave like a ego-less team, but
communication among different groups occurs only through the senior
programmers of the groups. The senior programmers also communicate
with the project leader. Such a team has fewer communication paths
than a democratic team, but has more paths than a chief programmer team.
For symmetrical structure like on the picture below (all sub teams have equal number of junior programmers) number of communication interfaces are:
- For Project Leader: x
- For each of Senior Progremmers: x + y
- For each of Junior Programmers: y
So, there are x*(1+(x+y)+y*y)/2 total amount of communication path in this structure.
- x - number of Senior Progremmers
- y - number of Junior Programmers in one team