The beauty of NOT doing agile development… is that failure comes as a complete surprise, instead of being preceeded by months of worry!
Often in traditional development projects, everything seems to be going so well, right up to 80% completion or perhaps even later.
Then things start getting harder…
Things start looking less and less likely to meet the planned end date. Until eventually you concede that you can’t hit the date because it’s just too late to do anything much about it…
In agile development, there are a few key principles that highlight such issues early. Distressing though this is, the issues are highlighted whilst there’s still time to do something about it.
One reason why this is a common problem in traditional software development projects is because the testing is one big lump all at the end. Consequently it’s very hard to gauge quality until late in the day and it’s very hard to judge how complete the product really is, because you don’t know how many more bugs there are to find.
In agile development, testing is integrated throughout the lifecycle, features are completed one by one, and for each feature “done” really means “DONE!”. In addition the product owner or user representative is actively involved in order to see the product frequently and steer its development every step of the way.
All of these principles go a very long way to ensuring clear visibility of progress, and providing a clear and unambiguous measure of the product’s completeness on a very regular basis.
But in addition to this, the Scrum agile development approach also offers a daily burndown chart that beats any traditional status report hands down!
The daily burndown chart is a simple tool. But it’s also a very powerful one. Take all the tasks or features to be delivered in a particular iteration, or Sprint in Scrum. Put down the estimated time to complete. Update the time to complete each task on a daily basis. Be honest about what effort you believe is required to complete each task (that’s complete each task), regardless of how long has been spent to date and regardless of what was estimated in the first place. Your goal, quite simply, is for the team to reach zero by the end of the Sprint/iteration.
The beauty of this approach is that it’s a numeric view of progress and can therefore be plotted visually on a graph. Plot the original estimates for the Sprint on one line, and the current estimates to complete on another line. When the current line tracks below the original line, you’re on track. When it tracks higher, you’re running behind. Simple as that!
I’ve also found it useful to annotate the graph with ‘speech bubbles’ describing key events along the way. This is a useful way to record significant events so they’re not forgotten by the time of the Sprint review, and it’s also useful to communicate important things to management and stakeholders instead of producing a separate status report.
Using a burndown chart, when you spend one day on a task and discover a whole load of problems or effort you hadn’t anticipated or estimated for, the estimate to complete jumps up, creating an all-too-visual indicator of the problem for all to see.
When this happens early in a project, and/or on a large scale, believe me it’s pretty scary! Suddenly you’re not so sure about all this new-found visibility. It seemed like such a good idea at the time, but can you really stick that burndown chart of the wall?!
But you do gain one big advantage. One enourmous advantage, actually. You get to see where the project really is, every day, and in all its techni-colour glory! And whenever you hit problems in a project, you actually see them, and see them when you might just have time to do something about it.
10 Key Principles of Agile Software Development
Testing is integrated throughout the lifecycle
Features are completed one by one
“done” really means “DONE!”