Avenging Software Development
Over the weekend I was sick with a fever and crashed on the couch with the dog and watched Avengers: Age of Ultron (Private).
Tony Stark, in an attempt to create an AI that can bring peace in our time, accidentally creates a killer AI that wants to wipe out the human race and the Avengers team up to stop it.
In every Avengers movie, there comes a scene where all the Avengers focus their powers, thunder bolts, laser beams, etc on a single point (eg. the enemy) and manage to overpower them and save the day. Something similar happens in Ultron and it made me think of software development.
What's thrilling about Avengers it the moment when every super hero is able to combine their powers and coordinate it for maximum effect, and doing something better together than what any one could have done individually.
The opposite seems to happen in software development - every additional person creates additional drag on a project (eg. Mythical Man Month (Private)). Instead of creating a team of super powered avengers, you end up with the N stooges where N is the number of people on the team.
The issue is usually not because of incompetence (though that can be a case) but mis-communication. Knowledge work is hard to coordinate, software especially so since all the material is intangible and abstract.
Bad communication leads to
- lack of context
- lack of understanding
- lack of motivation
- mis-use of specific skill sets
- mis-use of time and resources
- sadness and despair
Software Development, at least the management of it, can be thought of primary as a coordination problem. Each one of these problems start of small but like a LA traffic jam, quickly build up to a massive standstill.
So what do we do about this? Well, like every Avengers movie, stay tuned for the followup post :)