<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.conchango.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Mit creme</title><subtitle type="html">Musings on Agile development, Java and other, unrelated aspects of life</subtitle><id>http://blogs.conchango.com/gavyndowst/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.conchango.com/gavyndowst/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.conchango.com/gavyndowst/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.20423.1">Community Server</generator><updated>2006-12-18T10:11:00Z</updated><entry><title>Testing in Agile - Part Three</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/gavyndowst/archive/2006/12/21/Testing-in-Agile-_2D00_-Part-Three.aspx" /><id>http://blogs.conchango.com/gavyndowst/archive/2006/12/21/Testing-in-Agile-_2D00_-Part-Three.aspx</id><published>2006-12-21T11:26:00Z</published><updated>2006-12-21T11:26:00Z</updated><content type="html">&lt;strong&gt;Minimising the Bug Debt - A question of size&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I think most people would agree that on a real world development project of any scale, bugs will exist. Apply all the best practices in the world in the shape of unit testing and automated functional testing but there will be bugs. &lt;br /&gt;&lt;br /&gt;Minimising the size of the debt that is allowed to accrue is essential to staying within a single iteration of release. A useful way to achieve this is to keep everything else small. It is already widely accepted that quality is improved if the functional tasks themselves are broken down into small discrete items. A very small functional requirement with a few defined acceptance criteria is far easier to get right than a large complicated requirement with 10s of acceptance criteria. &lt;br /&gt;&lt;br /&gt;Extending this philosophy, keeping the sprints themselves smaller is also advantageous. I will personally never run a project with sprints longer than three weeks again and wherever possible I will aim for two weeks. &lt;br /&gt;&lt;br /&gt;The obvious advantage of smaller sprints is that less code can be developed in any one sprint and consequently fewer bugs can arise in the first place. Of course, this is offset by the fact that you have less time to find and resolve those bugs and if you&amp;rsquo;re still writing bad code then it probably won&amp;rsquo;t help! Another benefit though should help and that is that a shorter sprint encourages the team (development and business) to break larger functional tasks down into smaller ones and, as mentioned earlier, this is an acknowledged way of improving quality.&lt;br /&gt;&lt;br /&gt;Other advantages of smaller sprints are more frequent opportunities for retrospectives and, consequently, opportunities to modify anything that&amp;rsquo;s not working, more frequent releases to the customer and a greater number of total sprints in which to react to changes from these releases.&lt;br /&gt;&lt;br /&gt;In summary then, just as KISS (Keep It Simple, Stupid) has become an acronym for development and code design,  it seems it could  be employed to mean &amp;ldquo;Keep It Small, Stupid&amp;rdquo; too!&lt;br /&gt;&lt;br /&gt;This post is the last of those that I had pre-written in another form and was to be the last of my blog posts on the testing in Agile subject. These things are never fixed though and a comment on a previous post has triggered another area of thought. So, probably after Christmas now, I will post something on the topic of &amp;#39;Functional testing vs. unit testing - the right tool in the right place&amp;#39;. &lt;br /&gt;&lt;br /&gt;Have a nice break all.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5412" width="1" height="1"&gt;</content><author><name>Gavyn.Dowst</name><uri>http://blogs.conchango.com/members/Gavyn.Dowst.aspx</uri></author><category term="agile" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/agile/default.aspx" /><category term="testing" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/testing/default.aspx" /></entry><entry><title>Testing in Agile - Part Two</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/gavyndowst/archive/2006/12/20/Testing-in-Agile-_2D00_-Part-Two.aspx" /><id>http://blogs.conchango.com/gavyndowst/archive/2006/12/20/Testing-in-Agile-_2D00_-Part-Two.aspx</id><published>2006-12-20T11:30:00Z</published><updated>2006-12-20T11:30:00Z</updated><content type="html">&lt;strong&gt;Managing Bugs in an Agile Project - Agile debt collection&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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 &amp;ldquo;at a later date&amp;rdquo;. 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.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Every sprint outstanding bugs are retested to confirm that they still exist and the backlog updated accordingly. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;The backlog is continually prioritised by the product owner. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each sprint planning meeting a portion of time is put aside to estimate the bug backlog, assigning estimates to new bugs&amp;nbsp;and revising old bug&amp;nbsp;estimates armed with any new information gathered. &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;This process remains ongoing every sprint.&lt;br /&gt;&lt;br /&gt;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&amp;rsquo;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&amp;rsquo;s worth. &lt;br /&gt;&lt;br /&gt;Working in this manner is an effective way to manage bugs and has some clear advantages. &lt;br /&gt;&lt;br /&gt;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&amp;nbsp;the&amp;nbsp;perception&amp;nbsp;of quality of the teams&amp;rsquo; deliveries.&lt;br /&gt;&lt;br /&gt;Re-estimating the backlog every sprint keeps the bugs in the teams&amp;rsquo; 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&amp;rsquo;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5404" width="1" height="1"&gt;</content><author><name>Gavyn.Dowst</name><uri>http://blogs.conchango.com/members/Gavyn.Dowst.aspx</uri></author><category term="agile" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/agile/default.aspx" /><category term="testing" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/testing/default.aspx" /><category term="scrum" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/scrum/default.aspx" /></entry><entry><title>Testing in Agile - Part One</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/gavyndowst/archive/2006/12/19/Testing-in-Agile-_2D00_-Part-One.aspx" /><id>http://blogs.conchango.com/gavyndowst/archive/2006/12/19/Testing-in-Agile-_2D00_-Part-One.aspx</id><published>2006-12-19T10:23:00Z</published><updated>2006-12-19T10:23:00Z</updated><content type="html">&lt;strong&gt;&lt;em&gt;Musings on the meaning of &amp;quot;potentially shippable&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;One of the mandates of Scrum, and a mainstay of Agile processes in general is the concept that every sprint or development iteration should produce potentially shippable code. In essence this is taken to mean that the day after any sprint is completed the fruits of the teams labour can be released immediately. Release could be to a UAT environment for final fit-for-purpose testing, or directly to a production environment but this is an extraneous detail. The key point is that there&amp;rsquo;s an expectation that the developed product will have no significant bugs and require no further development before being moved on to the next stage of project implementation.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;The question that has been occupying my thoughts for some time now&amp;nbsp;having&amp;nbsp;been&amp;nbsp;through&amp;nbsp;a&amp;nbsp;number&amp;nbsp;of&amp;nbsp;Agile&amp;nbsp;development&amp;nbsp;project is whether this premise is actually achievable in the real world. Having failed to reach a definitive answer on my own I raised this as a discussion point at the recent Scrum Gathering in Minneapolis which provided some useful experiences and opinions on which to draw. This helped lead me towards a conclusion which is not so much an answer as a redefinition of the premise.&lt;br /&gt;&lt;br /&gt;Potentially shippable code is code that is never more than a single iteration away from release.&lt;br /&gt;&lt;br /&gt;In taking this approach it is possible to maintain agile development practices without significantly impacting the release as soon as it&amp;rsquo;s complete enough mantra. As a sprint backlog is worked through, code is developed to a high quality, tested at a unit level, functionally tested and bugs uncovered. In my experience, these bugs are generally rated by criticality and then handled in one of two ways. Regardless of the number of criticality levels, there is a dividing line with bugs sitting above that line being fixed immediately, within the current sprint, and bugs falling below that line being queued up for later attention. It is these queued bugs or &amp;ldquo;bug debt&amp;rdquo; that this final, &amp;ldquo;snagging&amp;rdquo; sprint provides the time to resolve.&lt;br /&gt;&lt;br /&gt;In subsequent posts I will post some thoughts on how to both minimise and manage the inevitable bug debt.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5390" width="1" height="1"&gt;</content><author><name>Gavyn.Dowst</name><uri>http://blogs.conchango.com/members/Gavyn.Dowst.aspx</uri></author><category term="agile" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/agile/default.aspx" /><category term="testing" scheme="http://blogs.conchango.com/gavyndowst/archive/tags/testing/default.aspx" /></entry><entry><title>Why blog?</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/gavyndowst/archive/2006/12/18/Why-blog_3F00_.aspx" /><id>http://blogs.conchango.com/gavyndowst/archive/2006/12/18/Why-blog_3F00_.aspx</id><published>2006-12-18T10:11:00Z</published><updated>2006-12-18T10:11:00Z</updated><content type="html">So, here it is, my first blog post on my first blog. Why blog and why now? Well, a number of reasons really. Several people have been on at me to start blogging for quite a while now, most notably &lt;a href="http://blogs.conchango.com/howardvanrooijen/default.aspx" title="Howard&amp;#39;s Blog" target="_blank"&gt;Howard&lt;/a&gt; and &lt;a href="http://blogs.conchango.com/colinbird/default.aspx" title="Colin&amp;#39;s Blog" target="_blank"&gt;Colin&lt;/a&gt;. In addition, I&amp;#39;ve recently started writing stuff down in emails, text files, wherever and have decided that it really helps with getting your mind in order. A few people saw some of my mind scribbles and commented that it would make good blog material so, whereas previously I thought I&amp;#39;d never have the time to blog, it suddenly seemed that this wasn&amp;#39;t the case. &lt;br /&gt;&lt;br /&gt;So, here we are. I have a blog and, I have a backlog of potential posts so that, at least initially, we should be able to make this blog a fairly rapidly changing, if not mildly interesting place.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=5380" width="1" height="1"&gt;</content><author><name>Gavyn.Dowst</name><uri>http://blogs.conchango.com/members/Gavyn.Dowst.aspx</uri></author></entry></feed>