We can find many similarities between successful programming teams and successful sport teams. As a soccer fan, it will be easy for me to draw the metaphor with soccer, and explain the main points between great sport teams and great programming teams. When writing this article I mainly thought about mob programming, but it certainly applies to all great programming teams.
Here is a list of common denominators:
- the team on the field is made of several players, but is not made of several sub-teams. There is only ONE team
- when one of the team player is in difficulty another player will come and help him
- each player must be able to take several roles during the same game (a defender can sometimes score a goal, an attacker can have to defend on certain situations in a game)
- it is the global agility and speed of the team that make the difference, and not just the agility or speed of one player (if it does, it will only be on punctual opportunities)
- each team member is continuously aware of which member has the ball (e.g.: in mob programming the ball is the main computer)
- each team player adopts the same pace than the team. This pace can change several times during the game. The players must react instantly.
- the team tactic can change during the game, to respond to the evolution of the game. The players must be aware of it, and adapt instantly.
- the team manager cannot take the role of one of the players
- there is a constant training, for continuous improvement: team sessions, but also individual training sessions. The skills of the teams must improve constantly, but also the individuals skills
- when a player does not have the ball, he continues working for the team, not with another ball, but by being able to catch the ball if necessary, or propose solutions to the ball carrier
- the ball carrier follows the team’s strategy, but he makes many decisions by himself, in the frame of this strategy (he can decides to kick the ball to the other side of the playing field, if he sees a good opportunity in it)
- one players must not keep he ball too long for himself: success is based on rapid transmission of the ball between players