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.
One Reply to “Software Development is Communication”