Project management uses milestones as concrete indicators of progress toward completing the project. In Software Project Survival Guide by Steve McConnell, the word “milestone” is used 297 times but he never explicitly defines it.

So, what is a milestone? The definitions are often vague and inconsistent.

My definition:

A milestone is an indicator that shows progress toward completing a project, along with an objectively verifiable set of criteria that show the milestone has been achieved.

A milestone generally relates to achieving some goal or major work on the project, and the criteria are how to evaluate that the goal or work has been satisfactorily done.

Steve McConnell emphasizes the use of binary milestones – a milestone that’s either 100% done or not done. No “90% done” milestones. The reasoning is that “partially” completely a milestone is not an objective indicator of progress, and “partially done” milestones often remain undone for a long time.

A binary milestone is only done when all the criteria have been satisfied.

Examples from Software Project Survival Guide

Some of these milestones don’t look very agile to me, and are not suitable to semester-long projects, but they give you some ideas of relevant things to consider.

  1. Project Initiation Milestone
    • [] Key project decision-maker identified
    • [] Vision statement created, reviewed, and baselined
    • [] Business case for software established
    • [] Preliminary effort and schedule created, reviewed, and baselined
    • [] Change Control Plan created, reviewed, and baselined
    • [] Initial Top 10 Risks List created, reviewed, and baselined
    • [] Team of 2-3 senior developers on board
  2. Architecture Complete
    • In Agile or UP, you don’t strive for a complete architecture up-front, just the overall approach and enough architecture to start detailed design and implementation
    • See Software Project Survival Guide for this example