Why you cannot halve a schedule by doubling the team.
๐ Where this lives: a project is late, so management adds people, and it gets later. This happens so reliably that Fred Brooks named it in 1975 and it is still happening. The reason is arithmetic, not attitude: new people must be trained by the people doing the work, and every additional person multiplies the communication paths. Any manager who has watched a "surge" of extra developers slow a release down has met Brooks's law empirically; this topic is where you learn to predict it in advance. Search "Brooks law adding manpower late software project".
Effort, duration and the relationship between them
EFFORT and DURATION are DIFFERENT QUANTITIES, and confusing them
is the root error in software scheduling.
EFFORT person-months โ total work to be done
DURATION calendar months โ elapsed time
STAFF people = effort / duration
THE NAIVE ASSUMPTION: effort and duration are freely
interchangeable, so 24 person-months can be 24 people for one
month, or 1 person for 24 months, or anything between.
THIS IS FALSE IN BOTH DIRECTIONS, and the reasons differ.
THE ORGANISATION OF SOFTWARE PROJECTS is such that the
relationship is constrained by:
ยท SEQUENTIAL DEPENDENCIES โ some work cannot start until
other work finishes, no matter how many people wait
ยท COMMUNICATION OVERHEAD โ n people have n(nโ1)/2
communication paths
ยท TRAINING / RAMP-UP โ a new person consumes the time of an
experienced one before contributing
ยท TASK PARTITIONABILITY โ you cannot split every task
COCOMO's duration formula encodes this empirically:
D = c ร E^d with d โ 0.32 to 0.38
Because d is well BELOW 1, duration grows much more slowly
than effort. The model is asserting that a project's calendar
time is largely determined by its size and mode, and is NOT a
free variable you can trade against staff.
WORKED โ semi-detached, from the previous topic's constants:
50 KLOC: E = 239.87 pm, D = 17.02 mo, N = 14.09 people
100 KLOC: E = 521.34 pm, D = 22.33 mo, N = 23.34 people
EFFORT more than doubled (2.17ร).
DURATION rose only 31% (1.31ร).
STAFF rose 66% (1.66ร).
โ the model absorbs extra work mostly through headcount, but
it does NOT let you hold duration constant while doing so.
Brooks's law, quantified
BROOKS'S LAW: "Adding manpower to a late software project makes
it later."
THE THREE MECHANISMS behind it:
1. RAMP-UP TIME. A new team member is unproductive at first
and CONSUMES the time of existing members for training.
The people teaching are the people you needed coding.
2. COMMUNICATION OVERHEAD. Paths grow as n(nโ1)/2:
4 people โ 6 paths
8 people โ 28
16 people โ 120
32 people โ 496
Every path is a potential misunderstanding and a real
coordination cost.
3. LIMITED TASK DIVISIBILITY. Brooks's own image: a task
that one person does in 10 months cannot be done by 10
people in one month if the work is sequential โ "the
bearing of a child takes nine months, no matter how many
women are assigned."
A QUANTIFIED MODEL. Let each person contribute productivity 1,
and let each communication path cost a fraction k of one
person's output:
effective output W(n) = n โ k ร n(nโ1)/2
With k = 0.02 (each pair costing 2% of one person):
n = 1 W = 1.00
n = 4 W = 4 โ 0.02ร6 = 3.88
n = 8 W = 8 โ 0.02ร28 = 7.44
n = 12 W = 12 โ 0.02ร66 = 10.68
n = 16 W = 16 โ 0.02ร120 = 13.60
n = 20 W = 20 โ 0.02ร190 = 16.20
n = 26 W = 26 โ 0.02ร325 = 19.50
n = 30 W = 30 โ 0.02ร435 = 21.30
n = 40 W = 40 โ 0.02ร780 = 24.40
n = 51 W = 51 โ 0.02ร1275 = 25.50 โ MAXIMUM
n = 60 W = 60 โ 0.02ร1770 = 24.60
n = 80 W = 80 โ 0.02ร3160 = 16.80
n = 101 W = 101 โ 0.02ร5050 = 0.00 โ ZERO OUTPUT
THE CURVE PEAKS AND THEN FALLS. Beyond about 51 people (at
this k) adding staff REDUCES output, and at 101 people the
team produces nothing at all โ everyone is fully occupied
communicating.
The peak is at n โ 1/k + 0.5, so the model says plainly:
THE MORE EXPENSIVE COMMUNICATION IS, THE SMALLER THE
OPTIMAL TEAM. At k = 0.05 (poorly documented, distributed,
unfamiliar codebase) the peak is around 20 people; at
k = 0.01 (well-modularised, good interfaces, clear
ownership) it is around 100.
THAT IS THE ACTIONABLE INSIGHT, and it connects straight
back to the design unit: LOW COUPLING REDUCES k. Good
modular design does not merely make code pleasant โ it
raises the number of people who can usefully work on the
system at once. Architecture is a staffing decision.
RAMP-UP, WORKED โ the late-project case:
A project is 3 months from its deadline with 200 person-months
of work left and 20 people, so it needs 200/20 = 10 months.
Management adds 10 people.
Each new person needs 1 month of a mentor's time, and
produces nothing in month 1, then 60% output in month 2,
then full.
cost of training = 10 mentor-months, lost from the
existing team
new output over 3 months = 10 ร (0 + 0.6 + 1.0)
= 16 person-months
existing output over 3 months = 20 ร 3 โ 10 = 50
total = 66 person-months
WITHOUT the addition: 20 ร 3 = 60 person-months.
So the addition gained 6 person-months against 200 needed โ
and that is BEFORE counting the extra communication
overhead, which for 30 people versus 20 is
0.02 ร (435 โ 190) = 4.9 person-months lost.
NET GAIN โ 1.1 person-months. Essentially nothing, from a
50% increase in headcount.
THE CORRECT RESPONSES to a late project, in order of value:
1. REDUCE SCOPE โ cut features, ship the core. The only
lever that reliably works.
2. EXTEND THE DEADLINE, if it is negotiable.
3. REMOVE IMPEDIMENTS โ unblock what is blocked, remove
non-essential work from the team.
4. ADD PEOPLE, and only to work that is genuinely separable
and only if the deadline is far enough away for ramp-up
to pay back.
THE ORDER MATTERS. Adding people is last because it is the
slowest-acting and most often counterproductive.
BROOKS'S SURGEON TEAM (the "chief programmer team") is his
proposed response: rather than many peers, one strong designer
supported by specialists โ a copilot, an administrator, a
toolsmith, a tester, a language lawyer โ so the
communication paths run through one mind rather than a mesh.
Staffing profile and scheduling
STAFFING IS NOT CONSTANT over a project. The RAYLEIGH CURVE
(Putnam) describes the observed shape: staff ramps up, peaks
around the middle-to-late analysis and coding phase, and tails
off through testing.
staff โ โญโโโฎ
โ โญโโฏ โฐโโฎ
โ โญโโฏ โฐโโโฎ
โ โญโโฏ โฐโโโโโฎ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
start end
PLANNING FOR AVERAGE STAFF IS THEREFORE WRONG: COCOMO's
N = E/D is an AVERAGE, and the peak is typically about 1.3 to
1.5 times it. A project computed to need 14 people will need
around 20 at its peak, and fewer at both ends. Hiring 14 and
holding them flat wastes them early and starves the project at
its peak.
PUTNAM'S SOFTWARE EQUATION โ the other classic model, and it
makes the schedule-compression penalty explicit:
Size = C ร K^(1/3) ร T^(4/3)
where K is total effort (person-years), T is duration (years),
C is a technology constant.
Rearranged for effort:
K = Sizeยณ / (Cยณ ร Tโด)
READ THE EXPONENT ON T: effort is inversely proportional to
the FOURTH POWER of duration. Compressing a schedule is
therefore brutally expensive:
cut duration to 90% โ effort ร 1/0.9โด = 1.52ร
cut duration to 80% โ effort ร 1/0.8โด = 2.44ร
cut duration to 75% โ effort ร 1/0.75โด = 3.16ร
cut duration to 50% โ effort ร 1/0.5โด = 16ร
A 25% schedule cut costs roughly THREE TIMES the effort.
This is why experienced managers treat schedule compression
requests as scope conversations.
THE IMPOSSIBLE REGION: both COCOMO and Putnam imply a minimum
duration below which a project cannot be completed at any
cost, commonly quoted at about 75% of the nominal schedule.
Beyond that, adding effort does not help โ the sequential
dependencies and communication overhead dominate entirely.
SCHEDULING TECHNIQUES โ how the estimate becomes a plan:
WORK BREAKDOWN STRUCTURE (WBS) decompose deliverables into
tasks small enough to
estimate (a common
guideline: no task longer
than 2 weeks)
ACTIVITY NETWORK / PERT tasks as nodes with
dependencies; identifies the
CRITICAL PATH โ the longest
dependent chain, which sets
the minimum duration
GANTT CHART / BAR CHART tasks against a calendar,
showing staff allocation and
slack
MILESTONES AND DELIVERABLES a milestone is an end-point
of a process activity; a
deliverable is a project
result delivered to the
customer
THE CRITICAL PATH IS THE KEY CONCEPT: only tasks on the
critical path affect the end date. Adding people to a
non-critical task changes nothing about delivery, which is
another reason naive staffing increases fail โ the extra
people are frequently put where they cannot help.
AND THE STANDARD ADVICE, from Sommerville: estimating is
difficult, so add CONTINGENCY. A common rule is to estimate as
if nothing will go wrong, then increase the estimate to cover
anticipated problems, and add a further contingency for
unanticipated ones โ often quoted as roughly 30% for
anticipated and 20% more for unanticipated problems.
The link between k and team size is the most useful thing in this topic, because it is the one you can act on. Communication cost per pair is not a fixed property of humans โ it is largely determined by how well the system is modularised. A well-designed architecture raises the number of people who can usefully work on the system, which is why the design unit and the management unit are the same subject.
๐ Go further: the modern industrial answer to Brooks's law is to stop trying to raise k's ceiling and instead split the organisation so no team exceeds it. Conway's law observes that a system's structure mirrors the communication structure of the organisation that built it; the inverse Conway manoeuvre weaponises that by deliberately organising teams around the architecture you want. Amazon's "two-pizza team" rule and the Team Topologies notion of cognitive load as the real constraint on team size are the same insight: keep each team small enough that internal communication is cheap, and make the interfaces between teams as clean as the interfaces between their services. Search "Conway's law inverse manoeuvre team topologies cognitive load".
๐ก Exam angle: distinguish effort (person-months) from duration (calendar months) and explain why they are not interchangeable. State Brooks's law and give its three causes โ ramp-up time, communication overhead n(nโ1)/2, and limited task divisibility โ with the "bearing of a child" illustration. Be ready to compute duration and staffing from COCOMO (D = c ร E^d, N = E/D) and to explain why d < 1 matters. Know the Rayleigh staffing curve and that COCOMO's N is an average, not the peak. Quote Putnam's equation and the fourth-power schedule penalty, and define critical path, milestone and deliverable.