learn-tech-project-pmo-with-phoebe / Session 2 of 6
Learn Tech Project PMO with Phoebe · Session 2 of 6

Milestone architecture: turn priorities into a plan with proof

Last session the charter named what matters. This one turns those priorities into a milestone map - not a task list, but a set of outcomes each carrying its own proof. You will learn the five-column milestone table, how to write success criteria you can actually check, and how to ladder M1 to M6 across the DW-BI-AI/ML lifecycle. Then you build Northwind's full milestone map in the next 22 minutes.

🟡 Core Data & tech leads, PMOs Builds on Session 1 45 min live + self-study
0-3 · Welcome 3-18 · Concepts 18-40 · Apply-along 40-45 · Q&A
Part 0

From charter to plan

The charter named the priorities - source data, infra, governance, hiring. That is the framing. Now you owe the board a plan: a sequence of milestones, each with a definition of done that a chairman could tick off without asking a single follow-up question. The trap is writing a task list ("load POS tables", "stand up Redshift") and calling it a plan. Tasks are activity; milestones are outcomes with proof. This session teaches the difference and gives you Northwind's M1-M6 milestone map - the artifact every later session builds on.

Live - presented in session Self-study - read after class ★ Apply-along on Northwind The case: Northwind, retail data platform
★ What you walk out with today Northwind's M1-M6 milestone map: ten milestones and sub-milestones laddered across the Ingest -> Infra -> DW -> Discovery -> Production lifecycle, each with checkable success criteria, key metrics, and a primary dependency. This map is the input to Session 3's dependency graph and Session 4's risk register.
Part 1 · the reusable skeleton

The milestone table: five columns that run the build 5 min live

A milestone is an outcome with proof, not a task. "Ingest the archive" is a task - it could be 5% done or 95% done and nobody could tell. "Raw archive loaded, reconciled, and signed off" is a milestone - it is either true or it is not. Five columns turn every milestone into that yes/no test, and the same five columns work for M1 through M6.

ID Milestone Success criteria Key metrics Primary dependency M1 Raw archive load into the data lake 100% agreed data loaded source-to-target recon done no unexplained Tier-1 loss migration evidence signed off reconciliation pass rate row-count delta by table Infra landing zone (M2) + source KT Every column answers a board question: what, done-when, measured-how, blocked-by. Fill all five or it is still a task.
🔍 Click to zoom - one milestone row filled in for Northwind's M1
LiveMilestone vs task3 min

A task is a unit of activity someone does. A milestone is a state the project reaches - verifiable, binary, and meaningful to a stakeholder. The five columns force the distinction, because a task cannot fill them honestly.

  • ID - a stable handle (M1, M1.1) so dependencies and risks can point at it later.
  • Milestone - the outcome, phrased as a reached state ("raw archive loaded"), not an activity ("loading data").
  • Success criteria - the yes/no conditions that make it done. If you cannot tick them, it is not done.
  • Key metrics - the numbers that evidence the criteria (reconciliation pass rate, freshness lag).
  • Primary dependency - the one thing that must be true before this milestone can even start. This column becomes Session 3's graph.
The done-when test Read your milestone and ask "how would a chairman know this is done without trusting my word?" If the answer is in the success-criteria and metrics columns, it is a milestone. If the answer is "you would have to watch me work", it is a task.
Self-studyWBS: decomposing a milestone into deliverables2 min read

Under each milestone sits a work-breakdown structure (WBS): the deliverables and tasks that produce the outcome. The milestone is the checkpoint; the WBS is how you get there. PMBOK keeps them in separate layers on purpose - the board reads milestones, the team works the WBS.

LayerExample (M1)Who reads it
MilestoneRaw archive loaded & reconciledSponsor, board
DeliverableFile manifest, reconciliation reportPMO, tech owner
TaskExtract POS tables, hash-compare row countsData engineers

Keep the milestone map free of tasks. When someone asks to add "write the extract script" as a milestone, that is the signal the layers have collapsed.

Part 2 · done-when, in writing

Success criteria you can actually check 5 min live

The success-criteria column is where most milestone maps quietly fail. "Data loaded successfully" reads fine in a slide and means nothing in a review - successful by whose measure? SMART criteria (specific, measurable, achievable, relevant, time-bound) turn a warm sentence into a checkbox. The test: could two people disagree about whether it is met? If yes, rewrite it.

✗ Vague - two people could disagree "Data loaded successfully" "Pipeline runs fine" "Reasonably fresh data" No number, no owner, no test - undone forever ✓ Measurable - a clear yes/no 100% agreed data loaded, recon signed off Daily incremental >=98% SLA, D+1 Freshness checks pass every morning A number, a threshold, a check that runs Rewrite rule: if it has no number, no threshold, and nothing that runs to prove it, it is not a success criterion yet.
🔍 Click to zoom - vague criteria versus criteria that pass the done-when test
LiveSMART criteria, applied to Northwind3 min

Take the two Northwind milestones everyone touches first and write their criteria the SMART way:

  • M1 - Raw archive load. 100% of agreed data loaded; source-to-target reconciliation complete; no unexplained Tier-1 data loss; migration evidence signed off. Each line is either true or false at review time - nothing to argue about.
  • M1.1 - Daily incremental (D+1). Pipeline meets a >=98% SLA; daily freshness checks run and pass; late or failed loads raise an alert with an owner. "Reasonably fresh" becomes a threshold and a check.
Real world

The phrase that saves reviews is "signed off". A criterion like "migration evidence signed off" names both the artifact (the evidence pack) and the act (someone accountable signs). It moves the milestone from "the engineers think it is done" to "the accountable owner accepted it" - which is the only definition of done a board trusts.

Self-studyLeading vs lagging metrics2 min read

Key metrics come in two flavours. Lagging metrics confirm an outcome after the fact (reconciliation pass rate at cutover). Leading metrics predict it early enough to act (daily freshness lag creeping up before the SLA breaks). A good milestone carries at least one of each - one to prove done, one to warn early.

  • Lagging (proof): % agreed data loaded, row-count delta by table, certified-dataset count.
  • Leading (early warning): freshness lag trend, pipeline failure rate, open reconciliation exceptions.
  • The pairing habit: when a lagging metric finally moves, it is often too late to react - so pair it with a leading one you watch weekly.
Part 3 · the spine of the build

Laddering M1 to M6 across the lifecycle 5 min live

Northwind's build follows one lifecycle - Ingest, then Infra, then DW construction, then Discovery, then Production. The milestone map is that lifecycle made concrete: six numbered milestones, each landing in a stage, with sub-milestones (M1.1, M1.2, M2.1, M5.2) that carry work too specific to fold into their parent. Read the ladder left to right and you read the whole project.

INGEST INFRA DW BUILD DISCOVERY PRODUCTION M1 Raw load archive to lake M2 Infra landing zone M4 Gov. DW silver/gold M3 Migration M5 Explore + dictionary M6 Production BI + DS + AI/ML M1.1 daily · M1.2 SIT M2.1 critical hires M5.2 product pool The ladder rises because each stage is only trustworthy once the one before it is signed off. That ordering is Session 3.
🔍 Click to zoom - Northwind's M1-M6 ladder across the five lifecycle stages
LiveSub-milestones and why they exist3 min

Not every outcome fits neatly under a single numbered milestone. A sub-milestone carries work that is real, checkable, and dependency-bearing, but too specific to fold into its parent without hiding it. Northwind has four that matter:

  • M1.1 Daily incremental (D+1) - the ongoing pipeline after the one-time archive load. Different SLA, different failure modes, so it earns its own row.
  • M1.2 SIT/UAT environment - an enabler: the data team cannot test migration without a safe environment. Invisible to the board, blocking to the build.
  • M2.1 Critical roles hired & onboarded - the hard gate from Session 1, now a tracked milestone. No committed technical milestone until it lands.
  • M5.2 Data product idea pool - the prioritised backlog that feeds M6. Discovery has to produce a ranked list, not just exploration.
When to split off a sub-milestone Split when the child has a different owner, a different success test, or its own dependency. M1.1 has a different SLA than M1; M2.1 gates milestones M2 does not. If a would-be sub-milestone shares all three with its parent, it is just a deliverable - keep it in the WBS.
Self-studyStage-gate go/no-go criteria2 min read

Stage-gate governance puts a decision point between lifecycle stages: before Discovery starts, someone asks "is the DW actually certified enough to explore on?" A gate is a go/no-go review, not a milestone - it consumes the previous milestone's success criteria as its entry test.

  • Entry criteria: what must be true to pass the gate (M4 certified datasets exist before M5 exploration is trusted).
  • The three verdicts: go (proceed), no-go (stop and fix), or conditional-go (proceed with named caveats and a review date).
  • Who decides: the accountable owner plus governance - never the delivery team marking its own homework.

Session 3 turns these gates into hard dependencies; here you just note where they sit on the ladder.

Apply-along 1 of 3

Write M1's success criteria & metrics ★ 7 min · everyone writes

Start the row: ID = M1, milestone = "Raw archive loaded into the data lake". Phrase it as a reached state, not "loading the archive".

Two minutes: write the success criteria as a checklist - 100% agreed data loaded, source-to-target reconciliation complete, no unexplained Tier-1 data loss, migration evidence signed off. Each line must be answerable yes/no.

Write the key metrics that evidence those criteria: reconciliation pass rate and row-count delta by table. Add one leading metric (open reconciliation exceptions).

Read a volunteer's aloud - the room applies the done-when test: could two people disagree about whether M1 is met? If yes, tighten the wording.

Real world

Teams love to write "archive migrated" and move on. The word that earns its keep is "reconciled" - source-to-target reconciliation is the proof that nothing was silently dropped in an 80 TB move. On a real migration, the reconciliation report is the single artifact the board asks to see before signing M1 off.

Apply-along 2 of 3

Ladder the full M1-M6 map ★ 9 min · everyone drafts

Lay out the six main milestones in lifecycle order: M1 raw load (Ingest), M2 cloud & infra (Infra), M3 legacy migration and M4 governed DW build - silver/gold, certified (DW), M5 raw exploration + data dictionary (Discovery), M6 one-stop platform in production - BI + DS + AI/ML (Production).

For each, write one line of success criteria and one primary dependency. Keep them outcomes, not tasks - if a row starts with a verb like "build" or "load", reword it to the finished state.

Sanity-check the ladder: does each milestone only make sense once the one before it is signed off? Circle any that could run in parallel - you are pre-sketching Session 3.

Compare with a neighbor: did M4 (certified DW) land before M6 (AI/ML)? The first model ships only on certified, traceable data - if M6 floated earlier, discuss why that breaks.

Apply-along 3 of 3

Add the sub-milestones & one gate ★ 6 min · everyone names

Slot in the four sub-milestones under their parents: M1.1 daily incremental (D+1) and M1.2 SIT/UAT environment under M1; M2.1 critical roles hired & onboarded under M2; M5.2 data product idea pool under M5.

For each sub-milestone, name why it split off - different owner, different success test, or its own dependency. If it shares all three with its parent, delete it back into the WBS.

Write ONE stage-gate go/no-go rule for the DW-to-Discovery boundary: "no M5 exploration is trusted until M4 certified datasets exist and governance signs off." Name the verdict options: go, no-go, conditional-go.

Keep this artifact Your M1-M6 milestone map - main milestones, four sub-milestones, success criteria, metrics, and primary dependencies - is the backbone of the PMO pack. Session 3 takes the primary-dependency column and turns it into Northwind's dependency graph and hard-gate list.
After the session

This week ◐ 30 min total

Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · What is the difference between a milestone and a task?

A task ("load POS tables") is activity that could be any % done. A milestone ("archive loaded, reconciled, signed off") is a reached state that is either true or false. The five columns force that distinction.

2 · What makes a success criterion measurable rather than vague?

"Data loaded successfully" fails: successful by whose measure? ">=98% SLA with daily freshness checks that pass" succeeds - it is a clear yes/no at review time.

3 · Why do sub-milestones and stage-gates exist?

M1.1 has a different SLA than M1; M2.1 gates milestones M2 does not. A stage-gate consumes the prior milestone's criteria as an entry test - go, no-go, or conditional-go.

Source material

Frameworks covered & their origins

This course teaches the working 80% of each tool and cites the canon - full standards stay the deep end for anyone who wants them.

Milestone & deliverable discipline (PMI / PMBOK Guide)five-column table, outcome-with-proof, milestone vs task - Part 1 + Apply-along 1
SMART success criteria & measurable metricsspecific/measurable done-when tests, M1 and M1.1 examples - Part 2 + Apply-along 1
Stage-gate / phase-gate governancego/no-go criteria named here, built as hard gates in Session 3 - self-study card + Apply-along 3
Work-breakdown structure (WBS)milestone -> deliverable -> task layering - self-study card, Part 1
DW-BI-AI/ML lifecycle mapped to milestonesthe M1-M6 ladder across Ingest/Infra/DW/Discovery/Production - Part 3 + Apply-along 2

Session 2 cheat sheet · pin this

Milestone tableFive columns: ID · Milestone · Success Criteria · Key Metrics · Primary Dependency. Fill all five or it is still a task.
Milestone vs taskA milestone is an outcome with proof (binary, verifiable). A task is activity. Use the done-when test.
SMART criteriaA number, a threshold, a check that runs. If two people could disagree it is met, rewrite it. "Signed off" beats "done".
M1-M6 ladderIngest -> Infra -> DW -> Discovery -> Production. M4 certified before M6 AI/ML - first model on traceable data only.
Sub-milestonesSplit when the child has its own owner, test, or dependency: M1.1 daily, M1.2 SIT, M2.1 hires, M5.2 product pool.
Northwind so farCharter drafted (S1); M1-M6 milestone map built. Session 3 turns the primary-dependency column into the dependency graph.