Brooks’ Law: Why Adding More People to a Late Software Project Makes It Later

Fred Brooks published “The Mythical Man-Month” in 1975. One of its central observations has been rediscovered, ignored, and rediscovered again by every generation of software managers since: adding people to a late software project makes it later.

This is counterintuitive. If a project needs ten more weeks of work and you add two developers, shouldn’t that help? Sometimes it does. Often it doesn’t. Understanding why is essential for anyone managing or leading a software team under pressure.

Why Adding People Slows Things Down

The math is not complicated, but it’s easy to forget when a deadline is approaching and adding a developer feels like the only lever available.

New developers need time to become productive. In a codebase of any complexity, a new team member can’t contribute meaningfully without understanding the domain, the architecture, the deployment process, the team conventions, and the history of decisions that shaped the current system. This ramp-up takes time, often weeks to months depending on the complexity.

During that ramp-up, existing team members slow down to provide it. They answer questions, pair on unfamiliar parts of the code, participate in code reviews that take longer because the reviewer doesn’t yet share context, and explain decisions that would otherwise be assumed.

Brooks described the communication overhead with a formula: the number of communication channels in a team of n people is n times (n minus 1) divided by 2. A team of 5 has 10 channels. A team of 10 has 45. Add five people to a team and you more than quadruple the communication overhead. That overhead is invisible in a headcount chart and very visible in delivery timelines.

What Agile Says About Team Size

The Agile Manifesto and its derivative frameworks have been consistent about team size for decades. Scrum recommends teams of 3 to 9 people. Smaller teams are faster to form, faster to communicate, and faster to coordinate. The constraint exists because of exactly what Brooks identified.

LEAN’s concept of cognitive load theory, developed further by Team Topologies authors Matthew Skelton and Manuel Pais, formalizes this further. Every team has a finite cognitive capacity. The system they’re responsible for, the organizational complexity they navigate, and the communication overhead of their interactions all consume that capacity. When teams grow beyond their cognitive load limit, performance degrades.

The response isn’t to keep teams small and starved of people. It’s to design work so that it can be done by small, focused teams operating independently.

Team Topology as the Structural Response

Team Topologies, the framework that emerged from Skelton and Pais’s work, is one of the most practical Agile-adjacent responses to Brooks’ Law at the organizational level.

Instead of adding people to teams, Team Topologies proposes designing teams around the work, with explicit boundaries and interaction modes. Stream-aligned teams own a specific product area or user journey end-to-end. Enabling teams provide specialized capabilities to stream-aligned teams without becoming dependencies. Platform teams build internal platforms that make stream-aligned teams faster.

This structure means that when delivery is slow, the question isn’t “should we add people to the team?” It’s “is the team structure and interaction design enabling the team to move fast?” Often the answer is that a team has too many dependencies on other teams, too much cognitive load from owning too many systems, or is spending too much time on work that a platform could handle.

Conway’s Law and the Inverse

Mel Conway observed in 1967 that organizations which design systems are constrained to produce designs that are copies of the communication structures of those organizations. A company with three departments produces software with three components. If the three departments communicate poorly, the three components integrate poorly.

Team Topologies applies this as the inverse Conway maneuver: if you want a particular architecture, design your team structure to mirror it first. The software will follow. The key implication for Brooks’ Law is that adding people to a team designed for a different architecture doesn’t fix the architecture. It adds overhead without addressing the underlying structural problem.

When Adding People Actually Works

Brooks’ Law is not a law against hiring. It’s a statement about timing and context.

Adding people works when the work is genuinely parallelizable and the new hire can take on independent streams without requiring extensive context from existing team members. It works when the team has the capacity to onboard someone without slowing existing delivery. It works for future capacity, not immediate relief.

Adding people doesn’t work in the final stretch of a release. It doesn’t work when the team is in a critical phase of integration. It doesn’t work when the work is fundamentally sequential.

The alternatives when a project is late deserve more consideration than they usually get. Cutting scope is the most reliable one. Removing features from the release allows the team to ship what’s ready without compromising quality. Extending the deadline is honest when cutting scope isn’t an option. Shipping a smaller, lower-risk version is sometimes the best answer of all.

All of these are harder conversations than “let’s add a developer.” That’s why Brooks’ Law keeps being ignored, rediscovered, and written about again.

Want help building a team structure that delivers consistently? Let’s talk.

Brooks’ Law: Why Adding More People to a Late Software Project Makes It Later

Leave a Reply

Your email address will not be published. Required fields are marked *