ManagementAll levels

Work Breakdown Structure

A work breakdown structure (WBS) is a hierarchical breakdown of everything a project will deliver — and, by definition, nothing it will not. It is a scope boundary drawn as a tree: if a piece of work is not somewhere in it, it is not in the project, and adding it is a change rather than an edit. The page opens with a finished WBS for an IT project — eight branches, thirty-one work packages, coded and adding up to 100% — then covers the rules that make a tree a WBS, the dictionary where scope actually lives, codes and control accounts, how deep to decompose, the WBS beside an agile backlog, three documented cases, and where it degrades.

First described
1962, DoD and NASA
Core rule
The 100% rule
Where scope lives
The dictionary, not the tree

A finished WBS on one screen — eight branches, thirty-one work packages, 100%

Most people who look up a work breakdown structure want to see one. Here is a complete one for a common IT project: a retailer replacing its online shop, at a , over nine months. Every line is a deliverable — a noun, something that will exist at the end — and carries its code. The percentage beside each branch is its share of the budget, and the eight add up to 100. Later sections cite the lines by code.

  1. 1.Project management — 10%

    1. Project management plan and baseline
    2. Status reports and steering committee packs
    3. Risk register and change log
    4. Supplier contract register
  2. 2.Customer accounts — 11%

    1. Registration and sign-in
    2. Password reset
    3. Profile and saved addresses
    4. Account deletion and data export ()
  3. 3.Catalogue and search — 14%

    1. Product pages
    2. Category navigation and filters
    3. Search
    4. Catalogue feed from the ERP
  4. 4.Checkout and payments — 18%

    1. Cart
    2. Delivery options and prices
    3. Card payments, one provider
    4. Order confirmation emails
  5. 5.Data migration — 12%

    1. Customer records
    2. Order history
    3. Reconciliation report
  6. 6.Platform and operations — 12%

    1. Environments: development, , production
    2. Build and deployment pipeline
    3. Monitoring and alerting
    4. Backups and a tested restore
  7. 7.Quality and acceptance — 13%

    1. Test strategy
    2. Performance test report
    3. Security test report
    4. User acceptance sign-off
  8. 8.Launch and handover — 10%

    1. Cutover plan and its rehearsal
    2. Runbooks and support documentation
    3. Training for customer service
    4. Hypercare, four weeks after launch

The rules that make a tree a WBS

The idea is older than software projects. In June 1962 the US Department of Defense and NASA published a guide to the PERT/COST system, built for programmes like the Polaris missile, and it organised all the work under a product-oriented tree. In 1968 the military made it a standard, MIL-STD-881, which is still in use in its sixth revision. The reason was the same then as now: when thousands of people spend money on one programme, the only way to know whether the money is buying the product is to tie every hour and every invoice to a piece of that product.

The 100% rule, and its twin

One rule governs the whole structure: the children of any node must add up to exactly 100% of that node — no more, no less. In the WBS above, the eight branches add up to 100% of the project, and the four work packages under branch 4 add up to all of checkout and payments. Nothing extra slips in at a lower level, and nothing quietly goes missing.

The project sits at the top as 100% of scope. Its three deliverables account for 40, 35 and 25 per cent — exactly 100% together, no more and no less. Two branches are decomposed further into work packages of 8 to 80 hours; the third is left coarser because it is routine work, which is progressive elaboration.

The rule has a twin that usually goes unstated: nodes at the same level must not overlap. A piece of work may appear in exactly one place in the tree. Break that and the 100% rule still looks satisfied while the estimate rolled up from the bottom counts the same work twice. Testing is the usual victim: if every feature’s work package includes its tests and branch 7 also has “system testing”, part of the testing is now in the budget twice, and nobody can point at the line where the error is.

Nouns, not verbs

Deliverable-oriented (correct)

  • 4.3 Card payments, one provider
  • 5.3 Reconciliation report
  • 6.4 Backups and a tested restore
  • 7.3 Security test report

Activity-oriented (avoid)

  • Design the payments
  • Write the code
  • Test it
  • Fix bugs

The right-hand column looks reasonable and fails at once. “Write the code” cannot be checked against the 100% rule, cannot be marked done unambiguously, and repeats identically under every branch, so the tree tells you nothing you did not already know. A deliverable can be inspected; an activity can only be reported on. That is also why the activities come later: once the work packages exist, each is broken into the steps that produce it, and those steps go into the schedule, which changes weekly, not into the WBS, which changes only by agreement.

Three ways to organise the second level

The top node is the project. The second level is the one real design decision, because everything below it inherits the choice. There are three legitimate patterns, and mixing them at the same level produces trees nobody can navigate. The WBS above is organised by deliverable, with management, platform, assurance and launch as deliverables in their own right.

  • By major deliverable

    Accounts, catalogue, checkout, migration. The default, and the right choice when the product has clearly separable parts that different people can own.

  • By phase

    Discovery, design, build, migration, handover. Suits work whose phases really produce different deliverables — a data migration, a certification, a physical rollout.

  • By subproject

    Split by supplier, site or system when different organisations deliver different parts. Each subproject then decomposes by its own logic.

Ten checks before anyone signs it

CheckHow to run itWhat failing it costs
Children add up to their parentAdd the percentages at every nodeA wrong budget with no line to point at
No work appears twiceFor each package, ask whether it could also live under another branchDouble counting, usually of testing or design
Every line is a nounRead the tree aloud; every verb is a findingA list of activities nobody can check for completeness
Management has a branchLook for it on the second levelReal cost with no budget
The second level uses one logicDeliverables, phases or subprojects — not a mixtureBranches nobody can navigate, and work that fits two of them
Every work package has one ownerOne name per package, not a teamWork everybody assumed somebody else had
Every work package has a dictionary entryCount entries against packagesScope argued from memory
Packages are small, or honestly not yet decomposedLook for estimates over 80 hours that are not planning packagesProgress reported as opinion, not measured
Codes are stableDeleted branches leave a gap; nothing is renumberedTimesheets and invoices pointing at the wrong work
Someone outside the team has walked itThe sponsor reads every branch and says what is missingThe missing branch found in month four

The dictionary — where the scope actually lives

A line in the tree is two to five words, which is nowhere near enough to hold a scope boundary. “Card payments, one provider” could mean a dozen different things to the client and the team. The WBS dictionary is the companion document that says, for each work package, what it includes and excludes, how it will be accepted, who owns it, what it is estimated to cost and what it depends on. It is the part practitioners skip, and it is the part that settles the argument six months later. Here is line 4.3, opened.

Field4.3 Card payments, one provider
DescriptionCustomers pay by Visa or Mastercard on the provider’s hosted payment page, including 3-D Secure
IncludesAuthorisation and capture; the 3-D Secure challenge; messages for declined payments; payment status on the order; handling the provider’s late confirmations by webhook; the package’s own automated tests
ExcludesRefunds and partial refunds, which stay in the existing back office; Apple Pay, Google Pay and PayPal; storing card numbers, which the provider does; any currency but the shop’s own
Accepted whenA test payment is authorised and settled in the provider’s sandbox; a declined card shows the reason; a payment confirmed after the customer closed the tab still marks the order as paid
OwnerPayments team lead
Estimate72 hours
Depends on4.1 Cart; 6.1 Environments; a signed contract with the provider, recorded under 1.4
AssumptionsThe provider’s sandbox account is available by week 6 — owned by the client, checked at every steering meeting

The row that does the most work is “Excludes”. Inclusions describe what the team expected to build anyway; exclusions are the cheapest lines anyone will write on the project, because each one is an argument that will not happen. The other row worth reading twice is “Assumptions”. An assumption with an owner and a date is a risk being managed. An assumption that both sides know to be false at signature is not an assumption at all — it is a that has been postponed, and the third case below shows what 800 of them cost.

A client asks whether refunds are part of the card-payments work package. The team opens the dictionary entry for line 4.3. Had refunds been listed under Includes, the team would build them at no extra cost. They are listed under Excludes, so the request becomes a change request, priced in minutes. Had the entry said nothing either way, the question would become an argument lasting weeks, usually settled on goodwill by the side that has to build it.

Codes, control accounts and where the money is measured

Every node gets a code: 1, then 1.1, 1.1.2 and so on. It looks like decoration and it is not. The code is the identifier that timesheets, purchase orders, risk entries and change requests all refer to, so the cost actually spent can be added back up the same tree the estimate came down. Once issued, codes are never reused: a deleted branch leaves a gap rather than being renumbered, because the old number is already sitting in six months of invoices.

A control account is the point where scope, budget and actual cost meet and are compared. It sits where a branch of the WBS crosses a unit of the organisation that will do the work, and it has one manager. You do not need one per work package; you need one per piece of the project that somebody is answerable for financially, which is usually a dozen rather than a hundred.

Rows are four branches of the example WBS: accounts, catalogue, checkout and platform. Columns are the web, payments and platform teams. Where a team does work on a branch, the intersection is a control account: one manager answers for that piece of scope with one budget, and the work packages beneath roll up into it. Checkout has two accounts, because the web team builds the cart, delivery options and emails while the payments team builds card payments. Planned value, earned value and actual cost are compared at each control account every month.

At a control account three numbers are compared each month. Planned value is what the plan said should be finished by now. Earned value is the budget of what actually is finished. Actual cost is what was spent to get there. Earned value below planned value means behind schedule; actual cost above earned value means over budget. The whole method stands or falls on one question: how much of a work package counts as “finished” before it is finished?

Earning ruleHow a package earnsFits
0/100Nothing until it is finished, then all of itPackages shorter than one reporting period
50/50Half when it starts, half when it finishesPackages that span two reporting periods
Weighted milestonesFixed shares at agreed, checkable pointsLong packages with natural checkpoints
Percent completeWhatever the owner reportsAlmost nothing — it is an opinion with a number on it

How deep — the 8/80 rule, planning packages and rolling waves

The bottom level of a WBS is the work package. The common heuristic is the 8/80 rule: no less than 8 hours of effort and no more than 80. Below 8 you are managing minutiae; above 80 you cannot tell whether a package is on track. A second rule of thumb is often more useful: no work package longer than one reporting period, so that each one is either finished or not finished at every status meeting. Neither number is in the standard; both are conventions that work.

LevelTypical sizeWho owns itIn the WBS above
ProjectmonthsSponsorThe shop replacement
DeliverableweeksProject manager or a control account manager4 Checkout and payments
Work package8–80 hOne named person4.3 Card payments, one provider
Activityhours–daysWhoever does it — in the schedule, not the WBSHandle the late-confirmation webhook

Not every branch needs the same depth. Decompose the risky and unfamiliar parts further than the routine ones: a branch delivered ten times before can stop higher without adding risk. A WBS decomposed to a uniform depth everywhere usually means someone filled in a template rather than thought about where the uncertainty is.

Planning packages and rolling waves

A planning package is the honest placeholder for work that is inside a control account, known to be needed and not yet decomposed. It carries a budget and no detail. Using them is what keeps the 100% rule true for a project whose later months genuinely cannot be planned yet — instead of inventing work packages to fill the gap, which then have to be thrown away. Doing this deliberately over time is rolling wave planning: the next few months are decomposed to work packages, the months after that sit as planning packages, and each planning cycle turns the next wave into detail.

Rolling wave planning keeps detail where the knowledge is. In the plan made at month 1, the first three months are decomposed into small work packages, the next three are three planning packages with a budget and no detail, and the last three are a deliverable that is only named. In the plan made at month 4, the first three months are done, the second wave has been decomposed into work packages, and the third has become planning packages. The whole project is in the tree at every point, so the 100% rule holds throughout.

A WBS beside an agile backlog

A WBS assumes the full set of deliverables can be known up front, which is exactly the assumption agile delivery declines to make. That does not make it obsolete. It makes it the wrong tool for a product in discovery and the right one for a defined piece of work inside it — a migration, an integration, a contract with a fixed price.

AspectWBSProduct Backlog
ShapeTree, completeOrdered list, open-ended
Completeness100% of scope, agreedEmergent, never complete
UnitDeliverableSlice of user value
OrderingNone — the tree has no sequenceThe whole point — the list is ranked
Changing itA change requestRoutine, at every refinement

The two answer different questions. A backlog answers “what should we do next?” and is deliberately never finished. A WBS answers “what did we agree the whole of this is?” and is worthless unless it is complete. When an organisation needs both for the same work — a fixed-price contract delivered in sprints is the usual case — the workable arrangement is a WBS down to the level the contract needs, usually the deliverables and sometimes the work packages, with the backlog living beneath it. Each then sits under exactly one WBS line, and the dictionary entry for that line is what the epic’s stories must add up to.

Three cases, and the line each one was missing

None of these projects lacked a plan. Each one fixed a price or a date against a scope that had not been defined to the level the commitment needed — and each was told so at the time.

CaseWhat happenedWhat it shows
Denver airport, 1992–1995An airport-wide automated baggage system was contracted two and a half years into construction; the airport opened 16 months late, with a conventional back-up systemA branch added late inherits every dependency already fixed in the others
Edinburgh trams, 2008–2014A fixed price rested on 43 pricing assumptions, some known to be false at signature; management expected 60–100 claimed departures and got about 800An assumption known to be false is a postponed change request
Queensland Health payroll, 2007–2010The scope of a payroll system was written in about six weeks and accepted incomplete; a $6.2 million contract became $25.7 million, and the system cost about $1.2 billion to run over eight yearsA tree accepted with holes is a commitment to fill them at any price

Denver International Airport is the case of a branch added after the trunk was built. Construction began in November 1989. United Airlines engaged BAE Automated Systems in 1991 to build an automated baggage system for its own concourse, and in April 1992 the airport contracted BAE to extend it into one integrated system for the whole airport — a $193 million contract, its terms worked out in three intensive working sessions. The buildings, tunnels and schedule it had to fit were already fixed; the opening date of October 1993 was not moved to make room. The system became the reason the airport opened late, four postponements and 16 months later, on 28 February 1995, with a conventional system installed alongside for about $51 million, according to the US General Accounting Office. United abandoned the automated system in 2005. In WBS terms, one branch was added late, its dependencies on every other branch were assumed rather than re-planned, and the 100% of the project that had been agreed in 1989 was no longer the 100% being built.

Edinburgh’s trams are the case for the “Assumptions” row. On 14 May 2008 the city’s project company signed a fixed-price contract for the infrastructure. Its price rested on Schedule Part 4, a list of 43 pricing assumptions, and the schedule itself said that some of them did not match the facts — the design was unfinished and utility diversions were not complete — so that “the Notified Departure mechanism will apply”: every departure from an assumption became a deemed change, to be paid for. Lord Hardie’s inquiry, which reported on 19 September 2023, found that senior management expected 60 to 100 such departures, made no attempt to estimate their cost, and got about 800. Work stopped in the disputes; a mediation in March 2011 settled them. The line opened on 31 May 2014, almost three years late, from the airport to York Place instead of Newhaven, at a reported £776.7 million against a budget of £545 million for the whole line. The infrastructure works alone went from £238.6 million for the full route to £427.2 million for the shortened one. A fixed price is exactly as fixed as the scope definition under it.

Where it degrades

A WBS rarely fails on the day it is drawn. It fails the first time somebody asks “is this in scope?” and the tree cannot answer. Almost every such failure is one of these:

  • Verbs instead of nouns, which makes the 100% rule impossible to check.
  • The same work under two branches — testing and design most often — so estimates double count.
  • No branch for project management, so a tenth of the budget is spent on work the tree says does not exist.
  • A tree with no dictionary, which leaves every scope boundary to memory and goodwill.
  • Dictionary entries with inclusions and no exclusions — the half of the boundary that prevents arguments left blank.
  • Assumptions that both sides know to be false, signed anyway.
  • The second level organised by department, which turns the WBS into an organisation chart.
  • Uniform depth everywhere — the signature of a filled-in template rather than analysis.
  • Planning packages that never become work packages, so part of the project is never planned at all.
  • Decomposition down to tasks, which turns a scope artefact into a schedule that has to be rewritten weekly.

The honest limit is that a WBS can only bound what someone understood. It makes scope visible and checkable; it cannot make an unknown scope known. A tree drawn for a product nobody has used yet will be complete, consistent, signed — and wrong in ways no rule on this page will catch, because the missing branch is the one nobody imagined. That is not an argument against the tree. It is an argument for writing down, in the dictionary, which parts of it are guesses, and for pricing them as guesses.

The practical check takes an hour. Add up the percentages at every node. Read the tree aloud and mark every verb. Look for branch 1 and for the five lines in the opening callout. Count dictionary entries against work packages, and in each entry count the exclusions. And list every assumption with its owner and its date — any assumption without both is a risk nobody is managing.

When to use it

Use it when

  • Scope is fixed by contract and someone must sign off exactly what is included — and what is not.
  • The deliverables can genuinely be known in advance: a migration, an integration, a certification.
  • Cost or effort must roll up reliably from the bottom, and progress must be measured rather than reported.
  • Work spans several teams or suppliers and the boundaries between them need to be explicit.
  • You are prepared to write the dictionary as well as draw the tree.

Avoid it when

  • The product is in discovery and the list of deliverables will change monthly.
  • You already have an ordered product backlog for the same work — do not maintain both in detail.
  • It would be built to pass a process audit rather than to answer a real question about scope.
  • The team would decompose to task level, turning a scope artefact into a micromanaged schedule.

Sources and method

What this page stands on

  • 9 sources
  • 3 documented failures
  • Checked October 13, 2026

Researched with Claude. Finding and cross-checking the primary sources was done with Claude (Anthropic). Selection, writing and fact-checking: the Anatomy of IT Product editors.

Found this useful?

Share it with someone who is working on the same problem.