Software Development is Communication

The longer I stay in the software development business the more I am convinced of certain things. One thing that has hit home recently is this very interesting fact – on the whole, those in charge of software delivery are fundamentally ignorant of how software is made. I have written previously about how software development is a creative process, but what amazes me is that the people who staff and manage software development fail to see how much communication is necessary to software development.

Staffing is a perfect example. There may be a number of aspects in software development that are more anectdotal than empirical, but team size is not one of them. A very simple google search will find a great number of studies showing that the optimum team size is about seven and that adding people beyond this results in a very sharp diminishing return. Nevertheless, from my experience I see this simple rule of thumb ignored frequently. The reason big teams do not work is that the total amount of communication channels grows exponentially with team size [ n (n-1) / 2 ]. At Amazon, where they understand how good software is made they have the concept of 2PT (2 piazza teams) – that a team should be fed with no more than 2 pizzas.

If you want the benefits of agile development you would be well served to understand what software development is all about – it is not an assembly line, it is a creative endeavor heavily dependent on communication where you cannot simply add “resources” to increase throughput. In fact, you might find that adding resources has the exact opposite effect.