I listen to people talk about Agile who toss the term around like a cliché without really knowing what it means. When I follow up and ask what they mean by “Agile”, I get all kinds of responses like fast and cheap or pivot-on-a-dime or flexible. And, when people use this phrase, they use it to describe how they want their web developer to behave or react. This is not what Agile is about.
What’s worse are web development shops that say they are Agile, go through some of the motions and use some of the buzzwords but truly lack a deep understanding of what Agile really is, what it’s not, why it works, and when it doesn’t. When traditional waterfall development shops, or shops with no real methodology other than winging it, say they are Agile – then that just devalues the concept and adds to the confusion.
But the real problem is when the procurement and contracts folks want web developers to deliver a firm fixed price proposal with a guaranteed scope of work and timeline but then say they want us to be agile, i.e., fast, cheap and flexible to scope creep without charging them more money or slipping the delivery date. The truth is that Agile embraces change so long as cost, timeline, scope of work, or quality is flexible. Flexibility goes both ways when it comes to Agile – flexible on the client side as well as the developer side.
In one of the most well-written books on Agile and Extreme Programming (XP), The Agile Samurai: How Agile Masters Deliver Great Software, by Jonathan Rasmusson, we learn about the three (3) simple truths of software development:
- It is impossible to gather all the requirements in the beginning
- Whatever requirements you do gather are guaranteed to change
- There will never be enough time or money to do all you want
If you can accept these truths and embrace Agile in its truest form, then you can accomplish a lot and keep your development team happy and motivated.