You are here
I Do Agile
There are three main methods of agile in use these days: Scrum, Extreme Programming and Lean. Amongst the three Scrum is being used the most by far. Though I base my practices primarily on Scrum, I always say that I do Agile, not that I do Scrum. The reason for this is that each of the three have value to add to the mix. They complement each other very well. I'd rather be free to mix and match than to be constrained to just Scrum.
Scrum provides the basic framework. You organize your work into a prioritized backlog. You attack the backlog items incrementally in short iterations (called sprints in Scrum; I tend to say iteration rather than sprint since it is more generic). Each iteration, you do iteration planning, daily stand ups (called scrums), demos (called sprint reviews) and retrospectives. Key roles in Scrum are the ScrumMaster (I don't have a better generic name for this; facilitator doesn't quite capture it), Product Owner and Team Member.
Extreme Programming has some of these activities, but also adds good engineering practices. Things like continuous integration, simple design and refactoring, and collective code ownership. It also adds some things which I would consider more of a cultural shift such as test driven development and pair programming. See this blog entry for more on what Extreme Programmings adds to the mix.
Lean has been around the longest (in lean manufacturing), but has only recently been adapted to software and added to the arsonal of agile methods. It adds some valuable principles and philosophies to the mix such as deciding at the last responsible moment, focusing on cycle time and quality (rather than cost), reducing work in progress, focusing on one thing at a time (the most important thing), optimizing the system rather than the parts, eliminating the root cause of errors, etc. In many ways lean helps to explain why agile works. See this blog entry for a review of an excellent book on the subject by Mary and Tom Poppendieck.
By using Scrum as a base and adding on key principles and practices from Extreme Programming and Lean, you can really get the most out of your software development.