Thursday, December 17, 2009

Jira and GreenHopper for agile project management

I previously blogged about using Jira with some open source tools for managing agile projects, and concluded that it was not a great solution - without GreenHopper. I've been using the latest version of Jira with the GreenHopper agile plugin extensively now, and I like it. It is lacking some features, which I'll describe later, but here is an overview of the main functionality.

The first thing I like is the Planning Board view, which is aimed at Product Owners who spend lots of time ranking and re-ranking backlog items. The GreenHopper planning board allows you to drag and drop items to either change their rank or to move them from the backlog into a particular iteration or sprint (version, in Jira lingo).

Above: dragging a user story from the backlog to a sprint. (Click image to see it full-size.)

For the development team, GreenHopper's Task Board view is just that - it simulates the physical task board that so many co-located teams use. It's easy to drag the virtual cards to columns to update their status, just like you would do with a physical board. Very nice. It also does something you can't quite do with sticky notes; double click to see more information, or click on the item ID to see all the detail.

Above: The Task Board in summary view mode (Click image to see it full-size.)

Above: See more of the task board without scrolling - the List view (Click image to see it full-size.)

Above: Dragging a card from "To Do" to "In Progress"

Above: Double click to see this expanded view of any card on the board.

An advantage of GreenHopper over sticky notes on the wall is that your burn down charts are calculated automatically: in hours, number of items, and story points. The screen images below show these. The red line is the ideal burn down and the green line is the actual.

Above: Burn down in hours (Click image to see it full-size.)

Are you a bleeding-edge adopter of kanban? GreenHopper is decent for that. The columns on your kanban board are customizable, so you can create any columns you want. You can also set a WIP limit for each column. You can't, however, set up horizontal "swim lanes" for different service level agreements (SLAs), such as a row for items that need to be expedited.

Above: The column turns red when the WIP limit is exceeded

The Jira dashboard also offers a reasonable approximation of the cumulative flow diagram (CFD) that replaces burn downs in a lean / kanban process. It does show items created vs. resolved, but it doesn't graph items in-progress. The chart also counts sub-tasks as items, which you may not want.

Above: Almost a cumulative flow diagram. Close, but no cigar.

GreenHopper is an add-in to Jira, so you still get all of the Jira functionality unchanged. Like Jira itself, GreenHopper is extensively configurable; almost annoyingly so because there are so many options it's hard to know what to do with them. Fortunately the default configuration is reasonable, although there are some setup steps required to enable item ranking, which is so fundamental that it should have been done out-of-the-box.

What is it lacking?
  1. If you're a large organization with a portfolio of inter-related projects, Jira + GH doesn't do much to show you the big picture across multiple projects.
  2. Although you have a hierarchy of versions, such as a release containing multiple sprints (described here), it doesn't do much; the planning board simply indicates that one version is a "master" of the other. GreenHopper doesn't offer a timeline view showing the version hierarchy.
  3. You can create a hierarchy of backlog items, for example to have large-scale epics that contain many user stories, as described here. However, this feature isn't enabled by default and requires an adminstrator to configure it. As an alternative, or in addition to the "epic" feature, you can create associations between items for this purpose, but there is no easy way to visualize the relationships. There is free task hierarchy plug-in that will show the hierarchy, but only for one top-level item at a time. 
Overall, especially for smaller teams without portfolio management needs, I give the tool high marks.

Wednesday, December 16, 2009

Definition of Ready (DoR)

All good agile teams have a Definition of Done (DoD) - the common set of criteria that every feature must meet before it's considered complete. I wrote about the DoD previously in this post. But what about a Definition of Ready? How do you know when your backlog items are ready for the team to accept them?

Serge Beaumont spoke on this topic among others at the 2009 Scrum Gathering in Munich in his presentation Practical Tools for the Product Owner: Focus, Value, Flow. He describes the Definition of Ready as a negotiation between the Product Owner and the team, where the team ultimately decides if a backlog item (user story) is defined well enough for the team to estimate and implement. His checklist for the DoR for backlog items includes:
  • Why? Business Value
  • What? Outcome vision
  • How? Implementation strategy & cost
  • Does the backlog have enough items for 1 and half to 2 sprints?
  • Is the size (granularity) of the backlog items acceptable?
I would personally aim for a smaller number of items in the "ready" state; 2 sprints worth of items increases the risk that time will be spent analyzing items that end up in the trash heap.

Serge also advocates using a kanban board with 4 phases to track the readiness of backlog items:
  • New
  • Preparing (going through analysis)
  • Ready
  • In sprint
I'll be adding the DoR as a standard part of my Scrum implementations.