blogs.conchango.com

welcome to the conchango blogging site
Welcome to blogs.conchango.com Sign in | Join | Help
in Search

Mit creme

Musings on Agile development, Java and other, unrelated aspects of life

Testing in Agile - Part Two

Managing Bugs in an Agile Project - Agile debt collection

Previously I spoke of the bug debt and how, over the course of a project, bugs will arise and will either be handled immediately or held over to be completed “at a later date”. In order to maintain the concept where you are only ever a single iteration away from shippable, these holdover bug items must be collected and budgeted for.

One approach to managing this is to maintain an additional backlog listing all of these carryover bugs. This backlog is maintained using three simple rules:

  1. Every sprint outstanding bugs are retested to confirm that they still exist and the backlog updated accordingly.
  2. The backlog is continually prioritised by the product owner.
  3. Each sprint planning meeting a portion of time is put aside to estimate the bug backlog, assigning estimates to new bugs and revising old bug estimates armed with any new information gathered.

This process remains ongoing every sprint.

If at any point the total estimate of the bug backlog, your bug debt, exceeds your sprint capacity then you are no longer a sprint away from shippable. You’re debts have exceeded your means which in this model, as in life, is not a tenable position! As such, as soon as this situation occurs it is immediately resolved by taking as many bugs from the top of the backlog off and feeding them into the next sprint as is necessary to reduce your debt back to a sprint’s worth.

Working in this manner is an effective way to manage bugs and has some clear advantages.

Giving the product owner visibility of the bug backlog for prioritisation keeps him very much aware that bugs exist but, will also make him aware, through the estimation, of how minor the effort of fixing these is in relation to the effort expended on value add functionality. This will help provide perspective and reinforce the perception of quality of the teams’ deliveries.

Re-estimating the backlog every sprint keeps the bugs in the teams’ consciousness and will allow them to address the issue if they are making a modification to a problem area to facilitate new functionality and it doesn’t cause impact. It can also act as an ongoing aid memoir of what has gone wrong previously to help people avoid similar bugs in the future.


Published 20 December 2006 11:30 by Gavyn.Dowst
Filed under: , ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

john.rayner said:

I think that having a "bug backlog" is a great idea.  But how do you get the product owner to assign relative priorities of bugs against features?  Otherwise the team will simply plough ahead with features until the bug debt exceeds a sprint and so you'll end up with an occasional "bug-fixing sprint".

December 22, 2006 01:10
 

Colin.Bird said:

I'm not so sure about a separate backlog for bugs as this removes the “single view of the truth” but I do like the concept of a view that shows whether the team are within a Sprint of a releasable product. My personal preference would be to ensure that the impact of the bugs is visible at the Product Backlog level (i.e. the PB items with bugs are not “Done” and have an estimate of time against them). In this way the Product Burndown graph will continue to show the team their overall progress that includes any bug debt. To assess whether the team are within a Sprint of a releasable product simply provide a report that shows the total work outstanding against all product Backlog items that have been started.

January 5, 2007 10:53
 

john.rayner said:

Colin: so your version of "Done" includes "no known bugs", which means that it's not a very stable state (i.e. PB items wiil tend to oscillitate between Done and Not Done as bugs are discovered and fixed).  It's also possible that low impact bugs will accumulate over time, which would then result in more and more PB items being Not Done even though they may be acceptable to the business.

January 5, 2007 13:13
 

Julian.RHarris said:

Definnition of 'DONE' as I'm sure you know is core to Scrum. I brought up the point about Product Backlog Items not done and rolling over at Mike Cohn's Certified Scrum Master training -- and yes in his expert view there was a consequence that if a Product Backlog Item is not 'done' then it carries over to the next Sprint, albeit with less tasks. HOWEVER the size of the Product Backlog Item doesn't change as a result of this process (it might change due to needing to reestimate but that's another story).

This, Mike agreed, does mean that when it comes to release planning you get bumps -- one of the exercises was 'If you can't fit A, B, and C but end up doing 'quite a lot' of C, you still presesnt C in entirety for the next Sprint.

My subsequent experience at Conchango suggests there some detail around this that really helps me and our Product Owner. What my experience leans on is that there is very often an elaboration / breakdown of Product Backlog Items into smaller ones as the sprint progresses -- and that this is done while maintaining the tenet of representing some clear business value. Let's take an example similar to one I had in my project:

We started with Product Backlog Item (PBI):

'As a web user I want to use a mortgage calculator so that I can get an illustration of the costs involved'.

After design and user experience and stuff it becomes clear half way through the sprint that it doesn't fit into the Sprint, i.e. it won't be DONE. Traditional software processes say 'delay it so it fits' which is of course in violation of the basic tenet of fixed time, fixed quality, variable scope, and Generally A Bad Thing (why? -- business users start whining they've not seen anything, they're not part of the journey, they then have less empathy if Things Vary From Plan).

So I (myself as Scrum Master) sit down with the Product Owner and the tech lead and we come to an agreement that we split it into 2 smaller stories:

'As a web user I want to use a mortgage calculator so that I can get an illustration of the costs involved'

BECOMES

1. 'As a web user I want a noninteractive illustration of typical mortgage payments so that I can get an indication of the costs involved'

2. 'As a web user I want to be able to interactively change the values used in the illustration of typical mortgage payments to more closely match my personal circumstances'.

So the Product Backlog Item was SPLIT -- but as a result, using good ol' User Stories, rewriting the requirements in 2 bits focused the 2 elements well. In my Product Backlog I employ simple traceability so that when a Product Backlog Item was split I refer to the original parent Product Backlog Item for verification later.

In regards to what 'done' is -- yes you're right, in essence what you're saying is that there are TWO KINDS OF DONE (sorry for upper case -- there is no styling support in comments here ... ):

'Potentially releasable' DONE

'Releasable' DONE

(I use 'releasable' because you don't ship web software really, you release it. Small, insignificant tweak. )

I think this is a good thread; perhaps we should pick the essence of it up in the next Conchango Agile Community of Best Practice?

January 6, 2007 09:02
 

Gavyn.Dowst said:

It's nice to be the instigator of some good debate, thanks guys. I see your point about not having a complete view of the truth if you keep the bugs on a separate backlog, Colin but I my concern would be whether you could always relate a bug back to a specific product backlog item. It could be a core bug that affects many PB items, would you go through the PB and mark all the items affected as not done with a time estimate equal to the time required to fix the issue/no of items affected? Or, would you put all the time against the PB item that was being tested at the point of discovery of the bug?

The wider issue of what constitutes 'done' that Julian picks up on is definitely worthy of further discussion. I have to say, I do like the idea of breaking down a product backlog item but I would contend that this action should have occurred at the sprint planning stage anyway rather than on the fly. The other thing that I don't quite understand about this is why? Breaking a PB item down into two items from one simply so you can declare one of them done seems like it's being done for show as it doesn't actually get you any further towards completing your original parent PB item than you would be by coding half of it and declaring it not 'done'?

January 8, 2007 15:33
 

Howard van Rooijen's Blog said:

Last November I attended the 2006 Scrum Gathering in Minneapolis along with fellow Conchangoens Colin

February 15, 2007 12:14

Leave a Comment

(required) 
(optional)
(required) 
Submit

About Gavyn.Dowst

One time Java developer, some time Java architect, part time geek and full time human.
Powered by Community Server (Personal Edition), by Telligent Systems