Managing software developers can be a difficult task, especially when working with an agile team. Changing requirements and priorities combined with a learning and growing team can make even the most experienced managers sweat.
Similar complex interactions have been studied in a number of fields. Game Theory, Cybernetics, and Chaos Theory all provide inspiration to managers looking to ease communication and improve the performance of a team. These theories along with many others fall into the category of Complex Systems. But as developers we need to be careful when utilizing concepts from other domains or managing developers may become an exercise in herding cats.
Jurgen Appelo writes a great article regarding the difficult task of managing a team of software developers. He cautions against relying entirely on any single sub-field of complexity science. Specialized theories may not map one to one to the needs of software engineers. He encourages managers to therefore study a variety of theories in order to gain insights that can be applied to better manage a development team.
It seems that the best way to improve the performance of a team isn’t to apply any single complexity theory, but to read up on all of the complexity science literature you can find. The more knowledge of the subject you have the more easily it will be for you to draw parallels to specific characteristics of your team. These insights will allow you to create your own guidelines that best fit your situation.
Appelo’s synopsis is good and there are many more resources available. Check out the links below if you would like more in-depth information about the various fields of complexity science.
- General Systems Theory
- Dynamical Systems Theory
- Game Theory
- Evolutionary Theory
- Chaos Theory