In general, a milestone is used to track progress toward a specific goal or event. Although projects are possible without milestones, the likelihood of projects being delivered successfully and on time is much higher with milestones in place.
In project management, milestones are one of the most important aspects of project planning as they are visible indicators of progress toward an objective. Although the milestones themselves will vary depending on the industry and specific goals, the concept stays the same. Failure to meet a milestone is a strong indication that the project isn’t proceeding according to plan and it might be time to adjust your approach.
Milestones in more traditional software development
In the past, the software industry followed the waterfall development process, with projects broken down into logical and sequential stages. All discovery is completed before moving onto requirements, then design, implementation, testing, and delivery. While this might have seemed like a good idea, in theory, it wasn’t the best approach for highly iterative work like software development.
A major issue with milestones in waterfall models is that they overlook continuous evolution. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought-out in the discovery stage, making this model unsuitable for modern application development where there is a high risk of the project changing.
Another disadvantage of this traditional methodology is that it is extremely difficult to measure the progress of the project during the middle stages. Progress of projects is typically reviewed at the end of each stage of work - for example, once all requirements are complete, they are reviewed before moving onto design. In addition to not allowing for constant iteration, this makes it difficult to use completed work to forecast how long the remaining work will take. In this instance, milestones may be planned but they aren’t necessarily realistic or beneficial.
What do milestones look like in Agile?
For a lot of teams, the waterfall development process didn’t provide the expected results, leading them to look for a different approach. Enter: Agile.
Agile development emphasizes flexibility, interactivity, and a high level of transparency. Projects in Agile welcome constant evolution and change, relying on frequent releases of usable code and continuous testing. Although an agile development approach is becoming increasingly common in software projects of any size, using milestones with Agile might seem counterintuitive.
A lot of developers highlight Agile’s rejection of deadlines and rigidity, but it doesn’t necessarily mean an absolute lack of goals or marking points in a project. Regardless of which project management approach you utilize, you are more likely to fail if you don’t have a roadmap or something to mark your progress.
With this in mind, let’s look at how Agile and milestones can complement each other. When managed correctly, milestones are crucial to the success of a project, providing extensive insight into the software development lifecycle and how the team is performing against business goals.
Planning for success with milestones
While there are a variety of ways to start breaking down a project into milestones, one of the most common is to create a roadmap of the entire scope of the project.
Once a roadmap is complete, it can be divided into Sprints. In Scrum, Sprints are fixed lengths of time (typically two to four weeks) during which an agreed-upon chunk of work is completed to a shippable standard. These chunks should be sorted according to priority, and grouped by feature or release. Sprints, or “iterations” are mirrored in GitHub with Milestones: groups of Issues that correspond to a project, feature, or time period. Simply set a start and end date, then add Issues representing user stories, to begin sprinting.
Each iteration gives you the chance to test and deliver a stable release and anything left unfinished can be moved to the next Milestone.
When Milestones are completed, it means that they:
- met technical and design requirements
- have tested code
- end with a shippable/deployable product
Getting started with Milestones
For each Milestone, the first step is to create a specified goal for the end of the sprint. It’s important that this goal is a collective and collaborative effort by everyone involved.
When trying to determine how much work should be included in the Milestone, especially when you are just getting started with Sprints, there is really no perfect answer. The best way to plan is to estimate how many issues will fill up Sprint's time allocation. Estimating the complexity of each issue first can make this easier.
Due to the fact that you don’t know what your average Sprint velocity is when you are still in the early stages, it is easy to overcommit. Although you may like to estimate that each team member could complete 70 story points of work for example during a two-week sprint, it is probably more realistic to assume the amount of work would be closer to 45 or 50 story points per person. So, for a five-person team, you might assign roughly 230 story points per Milestone to begin, then adjust as you become more familiar with your team’s sprint velocity. With a few Sprints completed and the right reporting tool, you will begin to better estimate the amount of work that can be completed in each iteration.
Remember, the primary goal during a Sprint is to ensure each issue that is assigned is fully delivered by the end.
When you are finished with your Sprint, simply close the Milestone. Set the Milestone state to Closed and leave any notes about the Sprint in the description section of the Milestone. These notes could include things like the number of Issues that had to be pushed to the next Sprint, problems that came up, and things that were successfully accomplished.
Milestones are an essential part of the success of any project, especially those using Agile. Although Agile is based on the foundations of flexibility and continuous change, this does not mean that adopting milestones will add rigidity and strict deadlines to the project. On the contrary, milestones greatly complement Agile by ensuring teams are on track with their goals improving the chances of success and project completion.
Looking to get started with milestones? ZenHub is the only project management tool that integrates natively within GitHub, leveraging both Issues and Milestones. When GitHub is paired with the advanced features of ZenHub, your entire team has increased visibility and improved collaboration. If you're interested in learning more about the power of our integration, find out more here.