I’ve been using Jira issue tracker for some years now for software development. I’ve also helped to roll it out at several client sites, which has given me the opportunity to see the different ways of approaching the issues of release versioning and dealing with workload and build cycles that have to hit hard deadlines.
These days I’ve hit on what I think is the nicest way to approach it. Jira’s excellent Roadmap view is king here. It shows you the status of issues assigned to different fix-for versions. You can view the next 3 unreleased versions on one page, or have it show you all unreleased versions. The key thing here is that it only shows issues that have a fix-for version, and then only for versions that have not been marked released.
The key objectives I have for managing software release cycles are:
- Know clearly in advance what you plan to include in the next release. Everything else is for the future.
- Always have a discrete version number for every release – don’t have 20 release builds all called v1.3
- If you have a hard deadline around the corner, be rational and bail out non-essential work – roll it over to the next version.
This is now a staple routine of mine and works very well. It is simple and helps to manage workload. Those of you that know about “Getting Things Done” will see some parallels in this later.
OK I’m a self-confessed Jira fan-boy, but Jira makes it easy to manage releases like this if you know how to use it. However there could be improvements, which I will mention later in this post.
Now I’ve seen a lot of people who just set the fix-for version on every issue to the first unreleased version. This is bad news full stop. It’s OK if you’re not the project manager and its an open source product and you don’t know what the plan is – but really the current pending release should already be planned out and not accepting new features – after all if you follow this kind of approach you are planning your next release while working on the current one.
What you end up with in this scenario is lack of direction – every issue logged against the next version. It is a giant insurmountable mountain and nobody knows what is really going to be in the next release, and it looks like there will be little or nothing in future releases. With public projects this is particularly important.
On the flipside, the worst thing you can do in my opinion is not set any fix-for version so it ends up in the dreaded “Unscheduled” category in Jira which does not register at all in the Roadmap – and thus the roadmap does not give you your complete view of upcoming workload.
So here’s the idea:
- Administer your project in Jira, and add a “Wishlist” version that is the very last version in time order – and will always remain so
- Create at least three minor revision version. If your product is on 1.0 in marketing terms, create 1.0.0, 1.0.1 and 1.0.1 for now. I always try to keep another 2 future revisions available in the version list – which means adding a new one to the end (before Wishlist) after you release every version. This is particularly important if you are on very short build deployment/test cycles. I’ve successfully used this approach with release cycles of 1-2 days during internal QA.
- Perform a review of all existing issues. View all unresolved issues on your project and use the often overlooked Bulk Change feature (top right in issue navigator) to change the fix-for versions of issues en-masse to schedule your next 3 releases. Be rational – don’t overload the next release. Anything that you’re not sure about, put it into Wishlist
- From now on you create all new issues against the next version (not the current) unless they are killer issues that have to go out in the imminent release. If you have no deadlines you can ignore this, but software with no deadlines – at least internally set ones – tends not to see the light of day.
- Now on a day to day basis you use the Roadmap view, and even more conveniently in a team – the Personal Road map option, to see what your tasks are. Clear and simple, you see precisely what there is to do. Feel the relief!
- You also see on the roadmap view a bar show % completeness of this release. Once it is green and 100% you can release. Then you go to Administer Project and Release the version in Jira. This is vital, and is often overlooked by slovenly managers. This step updates your roadmap so that this completed release is no longer listed – but it is shown in the Changelog view now and you can produce release notes.
- Perform a review regularly – although typically at release “crunch” time. What’s left in this version? Is it really needed? If not, enter the “BAIL OUT” technique – use Bulk Change to roll over the issues to the next version – don’t wait for the “Release” function of jira to roll the issues over! If you do, you will have deliberately scuppered your own plans. Review issues in the Wishlist periodically or use Jira voting for them and look at the Popular Issues view. Is there something to bring into the next release from there? Change it’s fix-for version individually or bulk change if there’s a batch of them
For us at least this approach gives us great peace of mind. Our eyes are always fixed on the roadmap.
We know what needs to be done to succeed.
We know that no other idea or requirement is lost, it’s always there on the Wishlist version.
We know that the rational solution to unreachable deadlines is to defer or “bail out”. It’s OK to do this because we know that those deferred issues are going to come in the next version if they are important, and we have already planned for this.
As for my wishlist for the Jira Roadmap, these have been stated before. I only wish I had time to implement it as a plugin (I did make a start but problems with DWR and Jira’s plugin mechanisms scuppered me):
- The Roadmap (or maybe a new Remap feature) needs to allow Ajax-driven drag and drop of issues to “tabs” representing the release versions. Dragging and dropping further down a long roadmap page will not be user friendly.
- There should access to a well of “unscheduled” issues that you can drag and drop into a release version
- There should be version “nudge” functionality to select any number of issues in the view and nudge them forward or backward a version
- Popup hints on the issues should show you who they are assigned to
- Drag and drop should be supported to perform bulk transitions – i.e. drag items and drop them onto a lozenge marked “Close” would take you to the bulk transition flow to mark the issues closed simultaneously.
Recent Comments