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.
In the comments to my first post on this topic, Kevin Schlabach offered this reference from Mike Cottmeyer:
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?
I like your definition, but I think you’ve got the order wrong. Agile is first and foremost a set of values. Then a set of management practices and a set of engineering practices.
The values are the most important because they are universal; they get everyone’s attention, even that of top management.
I wouldn’t get too excited about who’s second or third. Perhaps a slight preference for agile management. It makes it possible for top management to accept agile software development – otherwise uppity developers are kind of scary 😉
[…] Defining Agile Development (part 2) […]