Is it possible to overcome Brook’s law?
According to brook’s law, adding people to a late software project is like pouring gasoline on fire as it just makes it later. Most programmers are familiar with the idea that adding new resources to a project will most likely slow down progress.
“Adding man power to a late software project” = “Adding a lot of communication to them”
When new people are added into a late project, they are not very productive i.e. as new team members roped in to the team; they will be less efficient, completing fewer stories.
Well, they must be trained well. The staff needs to be trained in the following ways: explaining codes to another developer, training on the specific technical tools of the project, learning the architecture of the code, learning how to detect failures when codes are changed, learning the business domain, reading the design specifications, being interrupted to answer questions from other team members. Brooks argues that, more effort is lost in training and additional coordination and communication overhead, than gained, when the new staff eventually becomes productive.
But good management and development practices will help minimize the impact of Brook’s Law. The modern practices of continuous integration, test first design, and iterative development significantly reduce the inter-developer communication overhead, and thus allow for better scalability. New tools for software development and documentation also help minimize the ramp up time, making it simpler for new programmers to get involved in the work. Design patterns simplify the distribution of work, because the entire team can do its part within the framework provided by that pattern. The design pattern defines the rules that the programmers follow, simplifies communication through the use of a standard language, and provides consistency and scalability. Finally, good segmentation helps, by minimizing the communication overhead between team members. Smaller sub-problems are solved by a smaller team, and a top-level team is responsible for systems integration. (Source: http://en.wikipedia.org/wiki/Brooks’_law).
If the software development team follows these phenomena, they could overcome Brook’s Law to some extent and actually increase production by adding resources.