Defining Agile Development (part 2)
In my first post, I expressed my disappointment with the Agile software development definition on Wikipedia. In this post, I’ll try to work to a concise working definition of Agile.
UPDATE: Also see my refinement to this Agile Development definition.
In my quest for a brief definition of Agile software development, I’ve tried to a number of sources. I’ve already discussed the limitations of the definition on Wikipedia. On Britannica, I found no entry. So, let’s start with a dictionary definition of agile:
1. quick and well-coordinated in movement; lithe 2. active; lively
3. marked by an ability to think quickly; mentally acute or aware
[French from Latin agilis, from agere, to drive, do]
Dictionary.com Unabridged (v 1.1). Retrieved August 11, 2008, from Dictionary.com website: http://dictionary.reference.com/browse/agile
I like this because it nicely describes attributes of Agile development, but it doesn’t really say how it works. It also misses the adaptive nature of the approach.
Where to go next? I’ve covered some of the founding principles of early Agile thought leaders. Martin Fowler’s work, The New Methodology is also a good early defining paper. Various flavors of Agile methodologies are described well and compared in a number of sources. Still, these don’t offer concisely what Agile is.
I recently saw a post from Tom Perry offering bullet points around agile development. In 22 bullets, he offers topics to be covered in transitioning to Agile. It is mainly focused on Scrum, but we could add to it and include other concepts to broaden it and create a more complete menu (paired programming, spikes, emergent design, etc.) While better than the bullet points in Wikipedia and useful from an implementation perspective, 20+ items does not get me to my goal of a concise definition.
Agile is basically three things: a set of engineering best practices that allow for rapid delivery of high-quality software, a project management process that encourages frequent inspection and adaptation, and a leadership philosophy that encourages team work, [self-direction] and accountability.
Now we’re starting to get somewhere. I added the bracketed words to get a sentence I think I can use to explain Agile to a VP of Development or CEO and have them start to see the value of further exploring the benefits and the whats and hows. I can evaluate these three areas and help teams understand how well they are doing in each. It allows for many of the laws of development while permitting experimentation outside of specific methodologies.
Thanks Kevin and Mike. Think you can help with the Wikipedia mess?