Software Project Roadmap Template: Milestones and Estimates

· 8 min read

A software project roadmap at the end of discovery is a table of milestones, each with a start date, a target date, an effort range, the milestone it depends on and the requirements it delivers, plus a short list of the assumptions behind it. It answers "what gets built in what order, and roughly how long will it take". Below is the table to copy, how to find the critical path, and a filled-in example with a month-scale timeline.

Discovery roadmap vs product roadmap

The word "roadmap" covers two different documents, and mixing them up causes trouble.

Discovery (delivery) roadmap Product roadmap
Question it answers How and when do we build this agreed scope? Where is the product heading over the next year or more?
Unit Milestones with dates and effort Themes, outcomes, bets
Time horizon Weeks to a few months Quarters to years
Tied to Specific requirements Goals and strategy
Audience Sponsor, delivery team, budget holder Leadership, customers, the wider company
Changes when Scope, team or a dependency changes Strategy or the market changes

A discovery roadmap is concrete on purpose. Each milestone should be traceable to requirements, so that when someone asks "why is this taking ten weeks?" the answer is a list of things, not a feeling. It is closer to a delivery plan than to a vision deck. If the project later becomes a long-lived product, a product roadmap can sit above it; the discovery roadmap covers the first release or two.

The milestone table

Use one row per milestone. Seven columns are enough:

Column What goes in it Rule of thumb
ID M1, M2, M3… Never reuse an ID, even if a milestone is removed
Name What exists when it is done ("Offline inspection forms") A result, not an activity ("Development")
Start Calendar date Real dates, not "week 3", so holidays show up
Target Calendar date Not before the start
Estimate Low–high in person-weeks A range; see below
Depends on The milestone that must finish first One is usually enough; more means the split is wrong
Requirements IDs of the requirements it delivers Every Must requirement appears somewhere

Add a status column (Not started, On track, At risk, Done) once the build starts, and keep a separate list of assumptions next to the table: team size, the date a vendor delivers an API key, a holiday freeze, who tests. Assumptions are what the dates rest on, so they belong on the same page.

Two checks catch most gaps in a draft:

  1. Coverage. Count the requirements linked to at least one milestone against all requirements. Anything unlinked is either out of scope (say so) or missing from the plan.
  2. Size. If one milestone holds most of the effort, split it. Milestones in the range of two to six weeks are easier to track than one of five months; that is a rule of thumb, not a standard.

The roadmap section of our discovery phase template sums up the same contents in four lines:

Roadmap, estimates and risks section of the discovery phase template: milestones with dates and a low to high person-week estimate, dependencies, assumptions, and risks with an owner

Dependencies and the critical path

A dependency says one milestone cannot start until another is done. The chain of dependent milestones with the longest total duration is the critical path: any delay on it delays the release, while a delay elsewhere may not. The idea comes from the critical path method, used in project scheduling since the 1950s.

To find it on a small roadmap:

  1. Write each milestone's dependency.
  2. Follow each chain from the first milestone to the release.
  3. Add up the durations along each chain. The longest is the critical path.

Watch for two warning signs. A milestone that starts before the one it depends on ends is either a mistake or a sign the dependency is partial and should be split. A cycle (M3 depends on M4, which depends on M3) means the work is not really sequenced at all. In software projects, the critical path very often runs through integrations and data migration, because they depend on people outside the team.

Estimates as ranges

Put a low and a high figure on every milestone, in person-weeks, and add them up for the total. A single number at this stage hides how much is still unknown. Steve McConnell's "cone of uncertainty" describes estimate error that narrows as a project's decisions get made (Construx); at the end of discovery the range is narrower than at the first conversation, but it is still a range.

Practical habits:

A filled-in example (invented)

An invented project: a mobile inspection app for a utilities company, with requirements numbered REQ-1 to REQ-24. Team assumption: three developers and one designer, with a two-week holiday freeze in late December.

ID Name Start Target Estimate (person-weeks) Depends on Requirements
M1 Sign-in, roles and device setup Nov 3 Nov 28 6–8 — REQ-1, REQ-2, REQ-3
M2 Offline inspection forms Dec 1 Jan 30 14–20 M1 REQ-4 to REQ-12
M3 Billing system integration Jan 5 Feb 27 8–12 M1 REQ-13 to REQ-17
M4 Reports and supervisor dashboard Feb 2 Mar 13 6–9 M2 REQ-18 to REQ-22
M5 Pilot and hardening Mar 16 Apr 10 4–6 M3, M4 REQ-23, REQ-24

Total: 38–55 person-weeks, target release April 10. M5 waits for two milestones here, which breaks the "one dependency" rule of thumb on purpose: the pilot needs both the integration and the reports. On a real plan you might split M5 so each part has a single predecessor.

The same plan on a month scale (each column is half a month):

            Nov     Dec     Jan     Feb     Mar     Apr
M1          ##
M2              ####    ##
M3                      ####
M4                          ##  ##
M5                                  ##  ##
                                            ^ release Apr 10

The critical path is M1, M2, M4, M5: the forms are the longest chain, and the holiday freeze sits inside M2. The billing integration (M3) has some slack, unless the billing system owner is slow to provide test access, which goes on the assumptions list.

Keeping the roadmap honest

A roadmap stays useful only if it is updated when the facts change:

Here is how a finished roadmap reads in our example report, made for an invented project called Fieldwise: the total estimate as a range, the release date, a month-scale timeline, the milestone table with status and linked requirement counts, and the assumptions underneath.

Roadmap section of the example discovery report for the invented Fieldwise project: four milestones, a 16-22 person-week estimate, a release date, a month-scale timeline, statuses and assumptions

In Discovery Phase AI, the roadmap stage holds the same fields: milestones with an ID, dates, a low–high person-week estimate, status, one dependency and linked requirements, a month-scale timeline, and a list of assumptions.