Motley says: "Agile just means going fast"

Summary

Motley: Agile software development is all about going fast.

Maven: Agile development leads to high quality efficient development, and is based on these principles: simplicity, embracing change, incremental iteration, continuous feedback and improvement, collaboration, and eliminating waste.

______________________________

[Context: Reflecting on his recent development, Motley is wondering what 'agile' really means]

Motley: Hey Mave, check out this photo of my cat, Mr. Pnurf.

Maven: Whoa! That's extreme close-up dude! He doesn't look too happy!

Motley: Oh, he's happy. You just can't see the smile on his face. He was just outside scampering along on the top of the fence chasing birds. Quick… like a cat, I suppose. As I was watching him, I kept thinking to myself, "man, that's one agile creature!". His reflexes were lightning quick. That got me thinking… that's just like software. You've been sharing some of these agile techniques with me like Test-Driven development. They're all about going fast!

Maven: Well, your cat definitely sounds agile. Just keep in mind - both for cats and for software - agile is about much more than being quick. The "quickness" is kind of a side effect.

Motley: The bottom line is that we - both the cat and me - are quick at what we do.

Maven: Yeah, but what gets them that way? For the cat, there are fundamental concepts that make them agile - their muscle make-up, stealthy movement, and predatory instinct. They need them all to catch all those little birdies.

Motley: Ok, so you're looking deeper. I'll give that to you - cats are not just quick. There are some fundamental concepts that make them quick. I guess with software there has to be some fundamental concepts that make development quick too, right?

Maven: You are soooo right, and I bet you already know what they are. Let's try and come up with a few principles behind agile development. There are various takes on what the principles are, but I bet we can come up with our own list that makes sense. Let's start. What is the best kind of design?

Motley: A good one? Hehehe. That's probably not what you were after. Well, good designs are often simple right? That makes them easier to implement, understand, and maintain.

Maven: You bet! Simplicity is a core principle of agile development. Always doing the simplest thing possible and only adding complexity when necessary keeps us quick. Let's try another. What's generally the biggest problem with waterfall processes?

Motley: Waterfalls make pretty photos. But for software, hmmmm… to be honest, I'm not sure. Waterfall processes have lots of good characteristics.

Maven: There are some solid ideas in waterfall, but what happens when I spend a few months specifying requirements, a few months designing, and then the user changes their mind?

Motley: Well, you're f-

Maven: Motley! This is a family-friendly conversation! But you're right - you have a lot of rework to do if you mess up and don't catch it until later. That's why embracing change is another agile principle. With everything we do, we cannot be afraid of change and have to adjust on-the-fly. The next one is-

Motley: I bet a I know. To cure the problem you just described with waterfall, what about doing a bunch of mini-waterfalls, so to speak. If we implement in smaller chunks, mistakes are not so costly.

Maven: You the man! That's great - incremental iteration is another key principle. Software should be shippable (as is realistic) and iterations limited to 30 days or less. Now, if you decide during an iteration that developers are not checking in code with high enough code coverage, what should you do?

Motley: You mean before or after you beat them? Just kidding of course. Bottom line: you fix it!

Maven: Right again! Continuous feedback and improvement is another fundamental principle. Always take a look back at what you just did, keep doing the good stuff, and fix the bad stuff. Ok, the next one involves a concept around a frequent activity that we do. What is it?

Motley: Well, you talk my ear off and I can't get you to leave me alone.

Maven: Yes! Well, sort of. We spend a lot of time communicating and collaborating. The more frequently your communication is with the team, the more in tune everyone is with the internal workings of the team. It's even better if you have frequent collaboration with the customer - then you help make sure that any change they want is incorporated sooner rather than later when the cost is less. Last one, Mot. What's the problem with a huge design document that no one reads?

Motley: There really is no problem if you use it for toilet paper. But alas, I guess what you are getting at is that you just wasted a bunch of time for no reason.

Maven: You are an agilista! We want eliminate waste whenever possible. Doing stuff that doesn't add value to our development only slows us down. We spend time doing activities that don't matter. Implementing extra rarely used features and doing long documents that are of no use are examples.

Motley: I have to admit, this all makes sense. I've been living by these principles for the past little while. In your typical annoying way, you just pointed out what I have already been doing and put some simple concepts on it.

Maven: You bet. It's not rocket science. If you live by the principles you can be as agile as your cat, and leverage them to make yourself a more efficient developer. Of course, there are values that go with the principles - like quality - but that's another discussion.

Motley: Great. Oh, and don't call me an "agilista" again or I'll pop you one. I don't know what it means, but it sounds weird. I'm heading home to learn more about software development from Mr. Pnurf. I wonder how I can apply throwing up a hairball to software development?

______________________________

Maven's Pointer: For guidance on what it takes to develop software with agility, check out the Agile Manifesto at https://www.agilemanifesto.org, which was written by a group of software industry veterans while out skiing for a weekend.

Maven's Resources: Exercising Agility, James Waletzky, MSDN Magazine, May 2007.