When a software project starts slipping, the first instinct is usually pretty simple: hire more developers. Four engineers cannot get it done on time? Add two more. On paper, the math looks hard to argue with.

Software rarely works that neatly.

New engineers need context before they can contribute at full speed. Existing engineers have to provide that context, review early changes, answer questions, as well as explain decisions that may never have made it into the documentation. For a company trying to scale your frontend team, the timing of that investment can matter as much as the size of it.

A larger team can eventually deliver more. During the transition, though, it can deliver less.

A late project is exactly when new engineers create the most disruption

Fred Brooks captured the problem in *The Mythical Man-Month* decades ago: put more people on a late software project and, in some cases, you make the schedule slip further. That idea became known as **Brooks’s law**. The book is old. The problem really isn’t. ([InformIT][1])

Take a product team of five developers racing toward a major release. The deadline starts looking shaky, so management brings in three more engineers. Seems reasonable.

Except those three don’t walk in carrying three ready-to-use chunks of engineering capacity.

First comes the groundwork. GitHub access, CI/CD, staging, issue trackers, monitoring, local development environments. Then the less tangible part: learning the architecture, getting a feel for the product, figuring out which conventions actually matter and which are just habits the team has picked up over time.

And someone has to show them the ropes. Usually, that means the five engineers who were already trying to hit the deadline.

For a few weeks, the company may have eight people on the project and less uninterrupted engineering time than it had with five.

That is the paradox behind emergency hiring. The point at which management most wants additional capacity is often the point at which the team is least able to absorb it.

The real cost of hiring is bigger than the salary

Headcount plans usually account for compensation. They rarely model the engineering time required to make new hires productive.

Those onboarding costs are real project costs.

GitLab reported in 2025 that 44% of organizations surveyed said onboarding new developers takes more than two months. The company also identifies environment setup, access to development infrastructure, documentation, and understanding application architecture as recurring sources of delay.

The exact figure will vary from company to company. A well-documented SaaS product and a fifteen-year-old enterprise platform have very different onboarding profiles. The broader point is harder to dismiss: a developer’s start date is not the same thing as their productive capacity.

Consider a senior engineer joining a React application with a Node.js backend. They may know React and Node.js extremely well. That does not tell them why the application uses three state-management patterns, why one service bypasses the normal API layer, or why a particular database table should never be updated directly.

Someone has to explain those things.

The more undocumented knowledge a system contains, the longer the ramp-up time becomes. And the people best qualified to explain the system are usually the people already under deadline pressure.

More people also mean more communication

There is another cost that becomes visible as teams grow: coordination.

A small team can resolve many decisions with a quick conversation. Once more engineers are involved, ownership becomes less obvious. Pull requests get larger or more numerous. More people need to review architectural changes. Developers coordinate dependencies across components and wait for answers from other parts of the team.

None of this is inherently bad.

The problem appears when coordination starts consuming the capacity that the new hires were supposed to create.

A frontend example makes this easy to see. Say one developer owns the React components, another is tied up with API integration, a third handles payments, and someone else looks after automated tests. On paper, adding three more engineers should take some pressure off.

Then the checkout code has a say.

A task may look like a straightforward frontend change until it hits the same checkout state, a shared design-system component, or an API contract someone else is already working on. Then the clean division of work starts to fall apart. One developer is waiting for an API change, another is trying to update the same component, and a third has to coordinate the pieces before anything can safely move forward.

What looked independent in the planning meeting can end up tightly coupled in the code.

Seven engineers are now involved. The work itself has not magically become seven times easier to split.

That distinction is important. Software work can be divided only where the dependencies allow it.

You cannot parallelize every engineering problem

Some development tasks scale well with additional people. Others have a hard limit.

Five separate integrations? Sure, five engineers can take those on at the same time, each working in their own lane.

A single performance bottleneck is a different story. If the team is digging into why one service keeps choking under load, five developers staring at the problem will not make the answer appear five times faster. They can all pull the same logs, trace the same requests, chase different hunches. Before long, they are comparing theories instead of getting to the root of the issue.

That is a very different kind of work from five independent integrations. Sometimes there is only one thread worth pulling, and adding more people just puts more hands around the same thread.

The same applies to architecture.

A database migration may have to precede several application changes. A shared API contract may need to be finalized before multiple frontend features can move forward. A security issue may require one experienced engineer to trace a problem through the system before other developers can safely modify it.

Adding people does not remove those dependencies.

This is why a staffing decision should begin with the work itself. If additional engineers can take ownership of separate, well-defined areas, hiring may increase throughput. If they will spend most of their time waiting for decisions or changing the same code, the company is buying coordination overhead.

Headcount is a poor measure of engineering productivity

A larger engineering organization can look more productive simply because more work appears to be happening.

There are more pull requests. More tickets move into progress. More Slack conversations are active. Sprint boards look busy.

None of those measurements proves that the product is shipping faster.

DORA’s current software delivery research focuses on measurable outcomes such as change lead time, deployment frequency, failed deployment recovery time, change fail rate, and deployment rework rate. These metrics give engineering leaders a much clearer view of whether work is actually moving through the delivery system.

That changes the staffing conversation.

If adding three engineers increases the number of active tickets but change lead time also rises, something is wrong. If review queues grow and deployment frequency falls, the additional capacity is not producing the expected result. If experienced developers spend substantially more time reviewing and onboarding while feature delivery stays flat, the organization has probably expanded faster than its processes can support.

The answer may still be to hire. It may instead be to reduce work in progress, clarify ownership, improve automation, or remove a technical dependency.

Sometimes the bottleneck is not a shortage of developers

This is where rushed team scaling gets expensive.

A company sees a delayed release and assumes it has a capacity problem. The actual constraint may be elsewhere.

Perhaps developers are waiting several days for design decisions. Maybe manual QA is holding every release. Deployment requires a specialist who is unavailable. Product requirements change halfway through implementation. Or one senior engineer has become the only person who understands a critical subsystem.

Hiring more developers does little to fix any of those problems.

In fact, it can make some of them worse. More engineers produce more changes, which creates more code for QA to test and more pull requests for senior engineers to review.

Before increasing headcount, leadership should identify the bottleneck and ask whether another engineer can actually remove it.

That sounds obvious. Under deadline pressure, it is surprisingly easy to skip.

The timing of hiring matters

Hiring early enough is very different from hiring in a panic.

If a company knows that a product will need eight engineers six months from now, bringing people in gradually gives them time to learn the product before the critical development period. Hiring all eight when the deadline is six weeks away creates a very different situation.

The existing team still has to carry the load.

New engineers do not arrive in a vacuum. The people already on the project have to bring them up to speed while keeping the release moving, which is where the staffing math can get uncomfortable.

GitLab, for example, uses a structured onboarding process and expects engineers to ship production code during their first week, with full onboarding targeted within three months. That is GitLab’s own operating model, not a benchmark every software company can reproduce. Still, the approach makes the point: onboarding needs deliberate planning. It cannot be treated as something that takes care of itself once a new hire joins.

Start that work early, and the transition is easier to absorb. Leave it until the project is already in crunch mode, and onboarding starts competing directly with the deadline.

Sometimes the hire should be someone else

More developers are not automatically the right fix.

One experienced engineer who knows how to untangle the architecture may clear a bottleneck that several additional implementers would simply work around. On another project, the missing piece could be QA automation. Or DevOps. Security engineering. Even product management.

The useful hire is the one that takes pressure off the constraint holding everyone else up.

A mature engineering organization also makes expansion easier because new people have fewer mysteries to solve. Automated tests provide feedback. CI/CD reduces manual release work. Architecture documentation explains major decisions. Clear ownership tells engineers where to make changes without asking permission for every step.

These investments have a staffing benefit that is easy to overlook: they reduce the amount of organizational knowledge that has to be transferred verbally.

That matters when a team grows.

Know whether you are adding capacity or adding work

The useful question is not “How many developers can we add?”

It is “What will those developers be able to own independently?”

If the answer is clear, additional engineers may be exactly what the project needs. If the answer depends on several existing engineers teaching, reviewing, coordinating, or unblocking them, the short-term capacity gain will be smaller than the hiring plan suggests.

Leadership should watch the delivery system after the expansion. Are changes reaching production faster? Has lead time fallen? Are review queues manageable? Is deployment becoming more frequent without increasing rework? DORA recommends measuring these trends over time rather than treating a single comparison as definitive.

That is a better test of team growth than headcount.

A software team does not become faster simply because more developers have been assigned to it. It becomes faster when additional people can contribute without creating more dependencies than they remove.

Sometimes that means hiring.

In other cases, it means fixing the system around the engineers already there.

About the Author

author photo

Peter Makeshoff

Peter Makeshoff is the founder and main author of Designer Daily.