Charles Miller

Somebody on the Confluence user mailing-list asked whether anyone was using Confluence and JIRA for 'agile' development, and if so, how?

Yeah, I know the recommendation is to stick with user stories on physical cards, but for various reasons I think I might get better adoption if they're available electronically, in an easily updatable place, where we also organize the tests that go along with them, etc.
pair-programming.jpg

Given that the Confluence team had significantly ramped up its agility in recent releases, I thought it was a good opportunity to chime in about how Atlassian, and the Confluence team in particular (JIRA and Confluence are run quite differently), eat our own dogfood. We've had an interesting time finding the right balance between various approaches, and have finally ended up with a process that works well for us. You can read the original forum post if you want, or I've adapted it to be more blog-friendly below:

Rule 1: Everything goes in JIRA.

JIRA is our source of truth for what has been done to Confluence, and what still needs to be done to Confluence. When we write release-notes, JIRA is what we have to consult to see what changed, and when a user complains about a bug or missing feature, JIRA is the only place we can really send them for more information.

JIRA activity (votes, watchers, comments) is also a useful indicator of the priority of any particular development task, so we pay attention to that.

We also use JIRA in preference to cards for scheduling our bug-fix releases. All candidate fixes go into the next point release, and they're worked on in order of priority/impact/ease of fixing/etc. After a week or two, all the so-far-available fixes are packaged up into a release, and the outstanding bugs are moved back to the next version number.

(We've since changed this process slightly, in response to complaints from users who saw their issues being repeatedly pushed back, version after version. Now we have a bucket for all "point release candidate fixes", and issues are only targetted for a specific release when they are concretely scheduled.)

Rule 2: Planning goes in Confluence

Planned (or potentially planned) features each get their own Confluence page. We call these "user stories", but they're generally a lot bigger in scope than an XP user story -- each page describing
an entire feature like "autosave", "labels", or "mail archiving". The pages start pretty bare: a short user-story-like description of the feature, some links to JIRA issues, and maybe a point-form spec
if someone's thought about it already. Then, as we have more ideas about the feature, they get jotted down onto the Confluence page and discussed in the comments. Confluence allows us to capture the
conversations we have about features so that when we come around to developing them, we still remember the obscure ideas we had six months earlier.

We have a simple page template for features that provides just enough structure to make the story pages look similar.

I find cards are great for stuff you're doing Right Now, but things that are to be done in the future just aren't useful sitting in the back of someone's pile of cards. There are 800+ open feature and improvement requests for Confluence, and that's just too much for a stack of physical objects to handle gracefully.

Having everything in Confluence and JIRA means that anyone can find the "card" and scribble their thoughts on it, no matter where they are in the world or what time of day it is, which is pretty useful.

When we're doing iteration planning we make a nice Confluence page for the iteration with a picture of whichever river we're using as a code-name (pictures are important, even irrelevant ones, because they make a page look more inviting), the administrative details of the iteration, and links to those stories we're planning to tackle.

We find that Confluence is the perfect place for our "project status dashboard", especially now we have the chart macro to play with:

Also, our nightly build script posts its results to Confluence via XML-RPC:

One of the JIRA guys came up with a Confluence custom-field, which uses the Confluence remote API to give you a popup page picker from a JIRA issue, to easily associate a JIRA issue with a Confluence page. I'm rather ashamed to admit we haven't got around to using this yet. Trackback has served us well enough so far.

Rule 3: Stories go on Cards

Once we've committed to an iteration, we move stuff onto cards, estimate them, fit those we can into the iteration and stick them on the wall.

A single story page in Confluence can turn into five or ten different cards of varying estimations, which is useful because it gives us more flexibility to move stuff in and out of scope as the planning game progresses.

The advantage of cards is immediacy and physical presence, which makes them great for representing the things you're doing right now.

Rule 4: Tests go in CVS

If we had a manual test-plan, it'd probably go in Confluence. I'd consider writing the test plan for each feature as a child-page its story page, so it's easy for developers to find when writing the feature, and adding a "test-plan" label to each of those pages so they could then be aggregated on some uber-test-plan page.

Instead we have an increasingly large suite of automated tests, and they live alongside the codebase in CVS.

We experimented with wiki-based testing frameworks, including writing one of our own, but we found that the process was too cumbersome. The frameworks didn't give enough scope for refactoring common functions into a single place, or if they did they made it really inconvenient. So whenever you, say, renamed one of the buttons on the "Edit" page, you'd have to go through and modify two thirds of your tests, instead of just changing the "editPage()" method in your test helper class.

14 Comment(s)

Re: moving away from wiki-based testing frameworks
I'm assuming that in Atlassian's case, the people who specify the features are also developers and understand Java so there's really no point in using another level of abstraction. Even you did want to use a DSL, I'd probably just use Java to create it.

By Jason Yip at January 12, 2006 6:31 PM

Is there any chance whatsoever for you to release the XML-RPC script for posting the build results into Confluence to public? Implementing one is not trivial and having a sample would be wonderful!

Also regarding the Project Status Dashboard charts - do you manually update the values for the graphs or are the value changes somehow automated?

Confluence is already quite nice a tool for documenting software projects but with tools like the build reporting script released publicly, I think that'd increase the adoption rate of Confluence as a software development tool.

By Sulka Haro at January 12, 2006 10:29 PM

Jason: with sufficient abstraction, you can make it pretty easy to write functional tests. Quite a few of our tests were originally written by students with limited Java experience: IDEA's auto-complete is a wonderful tool.

If you want business people writing tests, why not pair them with a developer? The normal benefits of pairing still apply - one party's domain-knowledge is combined with the other's ability to make maintainable and well-factored tests, so it's a win on both sides.

By Charles Miller at January 13, 2006 4:24 AM

Charles: It's not so much the writing part that I'm concerned about as the maintaining. Pairing helps but even before that, there needs to be an understanding of testing style.

By Jason Yip at January 13, 2006 12:02 PM

Maintainability is a huge advantage of a Wiki based integration test tool like Ward Cunningham's FIT. The other big advantage is the exposure the tests have to the users. They can see exactly the cases where the code is failing, and run them whenever they like. I can see however that for a tool/product development such as Confluence itself, such tests have less relevance, as most of the testing is at a lower level and more suited to traditional unit testing.

By Jed Wesley-Smith at January 15, 2006 4:27 PM

It's not clear how you created the charts. Did you do something custom to generate the wiki tables the chart macro uses? Is this supported in the yet to be released JIRA 3 Macro Library? Or did you do this somehow with the jiraissues macro?

By Benjamin Berry at January 17, 2006 7:48 AM

Benjamin: I just write the tables for Confluence's chart macro myself. At some point the pain of maintaining the data manually will drive me to write something more complex, but until then it only takes me a couple of minutes a day to update the graphs.

By Charles Miller at January 17, 2006 2:55 PM

This is a great post. Any chance the Jira team can post something similar?

By jeff barrett at January 18, 2006 10:34 PM

Charles: where and when does your "analysis" take place? I mean the transition from stories to development.

In our environment, we practice SCRUM. Our iterations are 2-weeks sprints, where we start them off with 2-3 hours of sprint planning. In these planning meetings, we break the stories down to dev tasks, estimate them, and stick them to the wall. This is a precious time - we cannot use the planning time to do requirements gathering, use cases analysis, system requirements, learn OEM branding, etc. Product owners and architects need to be ready w/ these answers for the planning meetings, and feed developers w/ work.

You mentioned that you author a Confluence page for the iteration planning. How do you author/organize, in Confluence, the data captured from the analysis process? This is more than just discussing desired stories or pointing to them, this is more like investigating and responding to stories. And it requires defining roles and permissions (who can edit), workflow (when to edit/comment), and stakeholders (who should be informed).

Let me know your thoughts ... thanks.

By Jacob Landsman at January 28, 2006 11:38 AM

I live at 61727 Commonwealth in Seattle. Been up here before?

By Mike Flacklestein at June 17, 2006 2:07 AM

Hi,

We are using Jira latest version in our Organization on Linux environment.

I have got a query that " Is it possible to display Jira portlets on another webpage"

Could some help me if you have any idea!!!

By Shiv at December 13, 2007 3:35 AM

Our technology group is implementing JIRA and possibly Confluence and besides the valuable information above I'd be interested in any other Best Practices with regards to useage & implementation.

I'm also extremely interested in - We find that Confluence is the perfect place for our "project status dashboard", especially now we have the chart macro to play with: How would I get a hold of the MACRO and are there instructions on useage?

Thanks

SB

By Scott Boudreau at August 14, 2008 2:21 PM

Hi

How do you link a Confluence page to a Jira issue?/Claes

By Claes Westberg at November 17, 2008 7:26 AM

I don't know if anyone will answer this, but you say every user story goes on a separate page in Confluence, which makes a lot of sense, but you don't mention any type of prioritized backlog of user stories, from which you'd pick the top ones to work on for a given iteration. Do you use that concept? If so, how? JIRA doesn't seem to support such granular prioritization except with this plugin:
http://confluence.atlassian.com/display/JIRAEXT/Custom+Issue+Order
but that's 1.5 years old.

thanks!

By Éric St-Jean at April 8, 2009 6:36 PM

Post a comment

If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.





Remember personal info?

Type the characters you see in the picture above.