Saturday, October 16, 2010

The Importance of an Iteration Demo

When I first started using Agile, I really didn't make a big deal over demos. We did them once in a while, but if we skipped one here and there, no big deal, right? The product managers and business folks will come around at some point and we'll show it to them then, right? The classic purpose of an iteration demo is to gather feedback from your stakeholders. What I didn't take into account were the benefits of doing demos that had nothing to do with feedback.

A few years ago, I started a new project at work. One of my first orders of business was instituting an iteration "rhythm". The subject of demos came up and I was initially pretty unenthusiastic about it. I was alright with scheduling them but if we missed them that was fine too; we'd get the product manager to come down later. I had a colleague who was adamant that we have a fixed scheduled demo and and after some spirited but half-hearted resistance, I acquiesced. After the first 3 or 4 sessions, the affect on the team became obvious and I have completely changed my mind about the importance of a demo.

1) A Demo is a Deadline.
The first thing I noticed was that because the demo was scheduled in advance and was difficult to move, it served as a kind of unofficial deadline for the team. In previous iterations, the work always seemed to"bleed" over into the evening on the last day, or maybe even a little into the weekend or the next iteration. We always finished, but the end of the iteration was never really crisp. The iteration demo provided a specific time when everything needed to be done, working and ready to show to the team. While this created a little bit of panicked last minute work the first few times, over the next iterations it forced us to be a lot more disciplined and we started thinking very carefully about when things needed to be done before the demo.

2) A Demo is a Motivator.
Feedback is an important tool for improving software, but it is also an incredible morale builder. For most programmers, there's no greater compliment than hearing that someone really appreciates the software they've built. Of course, if you have somebody who's habitually trashes everything you do, this could blow up in your face, but as long as the good aspects of the software are acknowledged and the criticism is constructive, I guarantee you your developers will walk a little taller for the next few hours.

3) A Demo is a Test.
Software always has a tendency to fail in catastrophic ways right before a demo. It's easy to chalk this up to Murphy's law but demos by their very nature exercise the software as a user would, and often result in a more comprehensive test than you would create otherwise. In all likelihood you are uncovering bugs that would eventually show up in production. While this may make for a few uncomfortably bad demos, better to find out now than after you've shipped. Obviously, this information can be used to improve testing in future iterations which is always a good thing.

4) A Demo is an Education.
Just clicking through the software and showing that all the buttons and tabs work is one thing, but showing your customer that you understand how they need to use the system creates a whole new level of discussion. One of the rules in all our demos is that they must be scripted (well, at least loosely anyway) and that they must demonstrate how our customers will actually use the system. If you're building accounting software, then pretend you're an accountant attempting to create a quarterly report for his company. If you build music recording software, then record a simple song to demonstrate how the software would really be used in the field. Of course, this might require some research, but your team will better understand the needs of the customer as a result. In my experience, a better understanding leads to better software.

A good demo is more than showing your boss that you're actually doing something at work. If you catch yourself skipping iteration demos more than you should, it might be time to rethink their purpose. If done well, a demo can be a powerful tool to improve your product and motivate your team.

1 comments:

  1. Interesting. Creating a meeting or commitment could be a useful tool for any important project, even in non-computer fields. :)

    ReplyDelete