“Going agile with JIRA often looks like learning to sail with a ship you’ve built yourself – in a bottle” – Dr. Agilefant, 2016
Somewhere in your large, complex organization there are people who think you should strive for a more agile way of working. Some of those people may think that the Scaled Agile Framework (SAFe™) could be a good blueprint to follow.
While there are alternatives, let’s suppose you want or have to use your existing JIRA to support also the new way of working.
Mismatch of models
SAFe is less complicated than it may seem at a first glance. The difficulties stem from JIRA’s conceptual model, which does not match what is suggested by SAFe. On top of that your organizational design and/or constraints posed by your suppliers or customers probably do not match the set-up suggested by SAFe either, but that is the subject of another post.
JIRA natively has a three level requirements abstraction model (Epics, Stories and Sub-Tasks), but the terms are not configurable. Sure, you could define new issue types with the proper naming, but the terms in the UI will remain the same. This means that at least some mental mapping is required from the users. And of course, a three-level work item breakdown does not scale to a four-level SAFe.
In addition, JIRA’s single level non-nested work containers (Projects) means that at least some workarounds will be needed to express SAFe’s levels of planning.
JIRA originated as an in-house bug tracker. It’s first commercial release was in 2002, and while plenty of features have since been added, little has been taken out. While this makes JIRA highly configurable, it is easy to go overboard in terms of the workarounds.
A common pitfall we’ve seen is that prevailing impediments to agile such as a function or system based organization are replicated into JIRA as some key concept – typically as Projects. This further cements the existing structures – which in most cases should be dismantled and rebuilt around customer value delivery.
Another common challenge stems from attempting to overcome the limits of JIRA with plug-ins. While this is possible – to a degree – it leads to a more complicated set-up. And even with a willing, SAFe-trained organization and detailed instructions, the supposed way to use JIRA can prove too complex to grasp.
The result is a constant demand for training to grasp the complicated JIRA-with-plugins set-up. People also simply go around the complicatedness and make up their own special ways of using the tools, which makes progress roll-ups difficult and improving the ways of working via measurements impossible.
Resorting to ‘shadow accounting with MS Excel’ is also fairly common solution even in cases where JIRA is seemingly being used.
The simplest way
In matching SAFe and JIRA, you have to make some compromises. You should strive to avoid design decisions that directly get in the way of the transformation. You don’t want to simultaneously deal with both the resistance to the new way of working and the complicatedness of the desired JIRA usage model.
Having observed JIRA usage in a number of organizations striving toward large-scale agile we have devised a blueprint for how to implement ‘three-level’ SAFe (known as ‘Portfolio SAFe’ in the 4.5.1 version) using JIRA.
We’ve deliberately aimed at the simplest possible model doable with plain vanilla JIRA. While it is by no means perfect, it presents a sane starting point. The mapping of the key concepts is described in the table below.
|SAFe concept||JIRA concept||Notes|
|Portfolio||Project||JIRA’s projects have no beginning or end, and they are the highest level wrapper of content|
|Epic||Epic||Workflow: funnel, review, analysis, backlog, implementing, done|
|Feature||Custom defined issuetype ‘Feature’||Use JIRA’s native ‘epic link’ to connect Features to Epics. Workflow: funnel, analysis, backlog, implementing, done|
|Story||Story||Use the child-parent issue link to connect to Features; workflow funnel, backlog, sprint, done|
|(Bug)||Bug||Use the child-parent issue link to connect to Features; workflow funnel, backlog, fixing, done|
|Strategic theme||Label||Manually add at least to Epics; and then to the depth deemed relevant|
|Key system being worked on||Component||Add components to the depth of the work breakdown you have sibling work items which concern different components|
|Team, Train, Solution, Portfolio||A single JIRA user for each party||Multiple people use the same login. Everyone should have access rights to ‘everything’ except admin functionality|
|Portfolio kanban||Kanban board||One for each portfolio|
|Program kanban||Kanban board||One for each train; program increments are not explicitly modeled; Features in the status ‘implementing’ are considered to be in the current program increment|
|Team board||Scrum or kanban board||One for each team, according to their preference|
|PI Objective||Online shared spreadsheet||Not because it’s are good but because it’s better than what you’ll hack to JIRA – especially from the business owners you’ll want to get engaged.
Also, spreadsheet works better than JIRA for the most important metric suggested by SAFe – program predictability based on PI Objectives’ achieved business values
Evaluating the design choices
The choices made above come with good, bad and an ugly side. The Good is what we see as the upside of the choices, and The Bad as the downsides which we see that can be overcome. The Ugly refers to those downsides which are inherent to plain vanilla JIRA and can’t easily be worked around.
- Very little mental mapping required; JIRA concepts are not forced to represent other things than their name implies
- User per party and no access restrictions support the notion of shared responsibility and promotes the importance of frequent communication
- Can be moved to in an existing JIRA set-up; changes are restricted to a single project and new ‘party’ users
- Possible with plain vanilla JIRA
- Not necessary to use JIRA’s rather convoluted sprint functionality
- Virtually non-existent licensing cost (only a handful of user seats required)
- Frees the parties to organize as they wish as a team (do more detailed coordination on a physical board, work as a mob, and so on)
- Changing the legacy organization structure based around systems is a key challenge in most organizations; including this reality via modeling systems explicitly as Components can be leveraged to spot and eliminate dependencies as well as problems with the current organizational design
- Unconventional design choices (compared to how JIRA is in my experience commonly used) may cause resistance in moving to the model
- No user per a living person
- However, the model does not fundamentally change if the team-user is replaced with a person-user; you can still model the teams and trains as groups and use these in queries
- No detailed user access control; everything is shared;
- While people often create separate projects to prevent others from ‘messing up their issues’, these fears are mostly unfounded; people with access rights make mistakes too and you should have frequent backups and selective restoring capabilities anyway
- No user per a living person
- To leverage strategic themes in querying lower level items, you’ll need to add them by hand all the way to the story level
- JIRAs label editor (or rather, the lack of one) makes the usage of Strategic themes error-prone
- One might argue that having ‘Bug’ as its own issue type is against the grain of ‘the simplest thing that might work’; however, our experience is that sooner or later you’ll want to be able to discern between fixing and enhancing based on work item type; this also frees using labels for other purposes
- Plain vanilla JQL is not powerful enough to support many queries which can be seen as interesting to running a SAFe-like process; in a future blog post will show what exactly I mean by this
- However, the most important metric of SAFe has to do with PI Objectives and those we suggest should not be in JIRA at all
- Also, the plugins required to ease the needed queries and detailed filtering work around the most critical issues are relatively inexpensive; we will take a more detailed look of this in a future post
- Hard typing of requirements and no support for N-level work item splitting and; why you would want to avoid the former and have the latter is the subject of another (rather long) post by itself; but it has to do with the heart of agile requirements management – iterative refinement and keeping the batch sizes manageable
- Program boards with dependency visualization can’t be done with plain vanilla JIRA; I predict sooner or later someone will do a free plugin compatible with Cloud JIRA
Running the model
We are running a model very similar to the one described in a couple of customer cases. In the future we will be writing about for example how PI and sprint plannings work in this model, and also present a set of example queries to questions commonly asked by the key SAFe-org stakeholders (such as ‘show me all the work related to this epic’ or ‘show all the work related to this strategic theme).
To be among the first to get the link, follow Nitor on Twitter or me on LinkedIn.
And should you be running something similar – or even try this model out – we’d very much like to hear of your experiences.