Our own research conducted at Stanford suggests that most software teams could be moving >30-60% faster.
One small piece of the puzzle is Brooks’ Law: adding people to a software project can slow it down further.
There are a few reasons why:
1) As you add more people to a team, communication complexity increases much faster than the team size due to combinatorial explosion.
This happens because each person has to coordinate with more others. The number of communication links between them grows following the formula n(n-1)/2, similar to calculating connections in a network or handshakes in a group.
2) Adding more workers to a simple, divisible task like hotel room cleaning can speed it up, but only until they start hindering each other.
In contrast, complex tasks, like software projects involving various specialties, don't divide as easily. Just as nine women can't shorten a pregnancy to one month, some tasks can't be expedited by simply increasing headcount.
3) New members on a software project need time to become effective (ramp up time).
They require training on the project's history and specifics, which slows down existing team members who provide this training. Further, each newcomer needs to integrate with the team, learning from experienced engineers about different parts of the codebase. This training period not only reduces the experienced workers' output but can also lead to setbacks, such as when new members accidentally introduce bugs, hindering project progress.
It’s a simplification, but it illustrates a valid point: a small team of great engineers often outperforms a large team that lacks the necessary skills, processes, and tools.
This doesn't rule out the role of junior engineers. Assigning simpler tasks to them allows for learning and growth, while senior engineers can focus on complex issues. This approach benefits both the juniors' development and the seniors’ job satisfaction, and is cost-effective for the company.
In practice, projects often split into smaller sub-teams, reducing communication overhead- but the core principle of this law still holds true.