Essentials of Agile Software Development

How many times do I have to tell you this?

Agile software development, with one exception mentioned below, is iterative. An iteration consists of a short time-box, from one month down to one week. The length of the iteration, averaged over random teams I hear about, seems to be coming down from one month (the original Scrum standard) toward one week, the XP cycle which I currently recommend. I’d guess the current mode is about two weeks.

But I digress. The essential element of Agile, the sine qua non, the necessary condition, the prerequisite, the thing you must do or be laughed out of town on a rail is:

The team must deliver running, tested, integrated software, “done-done”, as the Scrum people like to say, at the end of every iteration.

There is no way out of this. You can’t deliver software every other iteration. You can’t deliver mostly-done software and fix it next iteration. Don’t even bother to twist on the hook. You have to deliver software.

One Exception

If you’re looking down here to be cut a break, you have come to the wrong place. The single exception to delivering done-done software every iteration is to deliver it more frequently than that. Some top teams are now operating in a sort of “kanban” mode where they deliver features essentially continuously, typically every few days.

Sorry, No Way Out

Real, running, integrated, testing, done-done software. Every iteration, or else all the time. When you set out to do that, you’ll surely run into some difficulties as you learn what it takes to do this. You’ll surely discover that the meaning of “done” is further than you think. Of course done includes the manual. Of course it includes user training. Of course it includes whatever impossible thing you’re thinking of.

Falling Short of Perfection

Your team is probably falling short of perfection on getting all this done every iteration. (If not, get in touch: I’d like to observe and see how you’re doing it). What you’re supposed to do when you inevitably find room for improvement is what Scrum calls “Inspect and Adapt”. As Kent Beck put it: “Find your biggest problem and solve it the XP way, then repeat.”

If you need a little help, there are lots of people who can coach you. I might even be one of those myself.

Now start shipping that software!

One Response to “Essentials of Agile Software Development”

mhedgpeth

January 15, 2009

1:37 pm

permalink

Great comments, Ron. Releasing is such a powerful motivator to clear out the waste in your process. Any counterargument to what you’re saying here is an action item.

For example, we can’t do that because…
1) The user wants us to test for three weeks first (well then fix that)
2) They don’t want what we’re doing right now (well then fix that)
3) They don’t want to bother to figure it out (are you sure you’re doing the right thing, because if you were, then surely you can find *someone* who wants to use it!)
4) We need to “shake out all the bugs” before we can release (are you unit testing? Are you acceptance testing?)

Recent Articles

Why Did You Do That, Ron?

Piers Thompson sent me a good question about my recent database articles. I suspect others would like to hear the question and answers.

Events & Classes

  • No events.