In 1975 during the pioneering days of software development a man named Frederick Brooks penned a number of books and articles on the subject. His most famous is “No Silver Bullet”, in which Brooks pointed out that software development could expect no thunderbolt solution to its various problems of quality, cost and complexity other than to adopt rigorous methodology. Only slightly less famous than “No Silver Bullet” is another Brook’s paper, “The Mythical Man Month”. The papers are no less valid today than they were when written, but they receive a lot less attention.
In “The Mythical Man Month” Brooks argues that adding people to a project doesn’t speed it up. While it is true that more resources can speed up the delivery of a software product, the increase in speed is not directly proportional to the amount of resource added. To put it another way, simply adding people to your project will not ensure earlier delivery.
The main reason for this is the increased complexity of communications which results from adding more people. As each person is added to the project team the complexity of communications goes up exponentially. For each project there is a break-even limit where adding more people will in fact slow down the project.
The diagram above demonstrates the principle graphically. Note that you need not consider each of the ‘nodes’ in the graph to be an individual person – they could be a group of people or an organisation within the project that has an ‘interface’. The more interfaces you add the more complexity you add to communication and the more overhead you add to the project.
If you don’t believe the math, look at it logically. Every additional person brought into a project will need to be trained and briefed on the current status and assigned tasks. As more and more people are added, more of the original team must be devoted to managing the overall structure. This is a truism of all types of management, not just project management.
Yet, while obvious, this mistake is committed time and time again by project managers. The first reaction to any slow-down in the schedule or a threat to the delivery of the project is to throw more people at it. This rarely works in a well-controlled project and never in a badly controlled project. Adding more people to a project requires ‘bandwidth’ to manage them and can distract you from more important goals at hand.
There are a few things to learn from Brook’s “Mythical Man Month” :
- Small autonomous teams are more efficient than large bureaucratic ones, so divide your project up into manageable chunks and let each group work within some kind of defined boundary.
- If you want to add people to a project, you had better plan carefully how those people are introduced into the team, there will be a lag before they become productive and even be a drain on the productivity of other members of the team. Look for ‘flat spots’ in the schedule to introduce these people to the team.
- One of your options in the “scope triangle” has just been reduced! If the scope of your project expands you know there’s only a limited benefit in adding more people to the project because of the overheads involved. We’re back to those same two options again : ask for more time; or cut functionality!
One particular project I was involved with illustrated to me the truth behind the “mythical man month” more than any other. I was the consultant test manager representing the client, a major bank. A senior manager in the bank had staked his reputation on the success of this system and now no expense was spared to make the project fly! The developer, one of the world’s largest IT service companies, had flown in a design team from overseas since no local talent was available at short notice. They had also flown in a top notch project manager from the other side of the world to babysit their first project with the bank.
As the project progressed the plans became more and more ambitious and more and more people were added to the project. We started off with one design team and ended up with three, none of which ever received the same brief. The developer started flying in software engineers from a neighbouring country and then flying them home for the weekend. Local staff were diverted to the project to help the interlopers try and meet their deadlines but they were still reporting to their original line managers.
It was chaos. Developers were sitting around waiting for instructions. Graphic designers were busily designing interfaces for screens whose business logic hadn’t even been finalised. There were at least three different versions of the specifications floating around and no one knew which one was current.
Our role was to vet the quality of the supplied system for the bank, in effect accepting the system on their behalf. We had a field day! Every release was turned back with major bugs because it hadn’t been tested by the developers and was handed over incomplete. To my knowledge the system was never launched even after our involvement ended. Expenditure on the whole project must have been on the order of tens of millions of dollars and the project ended up on the scrap heap!
Nick Jenkins is an IT manager with 10 years experience in software development, project management and software testing. He’s worked in various fields of IT development in Australia, Britain and the USA and occasionally he learned something along the way. Now he lives on the banks of the Swan River in Perth, Western Australia, and he publishes the odd guide to help aspiring IT professionals. Nick’s website can be found at www.nickjenkins.net.