Brooke’s Law remains a fundamental principle in software project management. Which is to say, it’s usually ignored. If your project is late, it’s not because you need more resources now – it’s because you needed them all along. You add more resources, bring them up to speed on the project status, business needs, and development standards (costing the entire team time) – and you’re now trying to squeeze a more complex development effort with greater management costs into an already compressed schedule. Surprise, you’re even later than you were before.
The first problem is simple: Each resource you add will have a fixed non-productive cost as they’re brought up to speed on the project. It’s unavoidable – there’s no pool of resources available that are already know the project, so your schedule will bear the brunt of this for every unplanned resource you add. Adding multiple resources when you’re near deployment brings this cost at the worst possible time.
The second problem is one of “combinatorial explosion.” You see, as part of any group effort, every resources has to communicate with every other resource in some way. With two people, there’s one line of communication: information is exchanged only between these two. With three people, there’s three lines of communication: The first person communicates to the second, who communicates to the third, who communicates to the first. With four people there’s 6 lines of communication, with 5 there’s 10, and so on. This is why it is so critical to have the right number of resources at all phases of the project – to prevent the enormous productivity losses which come from spiking up to larger teams.
The solution is simple also: Understand the business needs, and have a plan to achieve them! The critical lesson is that a late project is already a failure. There is no approach to adding unexpected resources that can mitigate it. Successful development projects all follow the same model: Discover, design, implement, deploy. It is absolutely critical to have a thorough understanding of the effort required for each step before starting it – otherwise you’re doomed to dig the hole ever deeper with panicked mistakes as you approach your deadline.