I happened to read The Great Pyramid of Agile over at Worse Than Failure the other day. Despite feeling slightly misled when I learned that agile development isn’t, in fact, a giant pyramid scheme, I did stumble on a pretty fair criticism of the whole agile trend. It’s a shame though – the pyramid scheme angle might have made for a more interesting article.
I’ve been calling myself an agile developer for a little while now. No, I don’t subscribe to any of the much publicized (and well monetized) methodologies that exist today. To me, “being agile” simply means creating a sustainable development environment that makes it easy to adapt your application to change. I guess I’m referring to “agile” in the original sense of the word:
1. Characterized by quickness, lightness, and ease of movement; nimble.
2. Mentally quick or alert: an agile mind
When you make the effort to create such an environment, change becomes tolerable, and so prototyping and iterative development tend to just “happen”. They’re one of many pleasant side-effects of being agile: shorter release cycles, less coder defensiveness, ability to incorporate feedback quickly, and so on.
Now whether you’re working on the latest web application or a 15-year enterprise monster, I believe that every good programmer is agile on some level. When you write code in anticipation of change, even inside a small piece of a larger puzzle, you’ve made some effort to make your code agile. When you write unit tests that help you discover and debug errors faster, when you use source control, or even a code-completing editor – these are all steps towards becoming agile.
I guess what I’m trying to say is that agile development isn’t about SCRUM, XP, trade conferences or selling books. It’s about being smart about development. It’s about being agile according to the dictionary meaning of the word.