Brooks' Law
Murphy's Law is a popular adage that is often stated as: Brooks' Law
Brooks' Law is a well-known adage in software engineering and project management, formulated by Frederick P. Brooks Jr. in his influential book "The Mythical Man-Month: Essays on Software Engineering," first published in 1975. Brooks was a computer scientist and software engineer who managed the development of the IBM System/360 operating system.
Brooks' Law states:
"Adding manpower to a late software project makes it later."
In other words, if a software project is behind schedule or running late, adding more developers or team members to the project is unlikely to speed up its completion. Instead, it can potentially have the opposite effect and further delay the project. This counterintuitive phenomenon occurs because of the following reasons:
Training and Onboarding: New team members need time to get up to speed with the project, its codebase, and the existing team's practices. During this onboarding period, existing team members may need to divert their attention from their work to assist the newcomers, which can temporarily slow down progress.
Communication Overhead: As the team size increases, so does the need for communication and coordination. More people means more meetings, discussions, and information sharing, which can increase overhead and reduce overall productivity.
Diminished Productivity: In complex software projects, there may be a limit to how many people can effectively work on a specific task or piece of code. Adding more people to a task that is already in progress might not result in a linear increase in productivity. In fact, it can lead to confusion, code conflicts, and inefficiencies.
Brooks' Law highlights the importance of careful project planning, managing workloads, and avoiding the temptation to throw additional resources at a project in a panic when it is falling behind schedule. It emphasizes that software development is not just about the number of people working on a project but also about the organization, communication, and collaboration within the team. Effective project management and coordination are key to successful software development, especially in large and complex projects.