Agile is not a Condiment
I coach teams and organizations from size 1 to 1000 to adopt and assimilate Agile into their processes, organization and culture. As I look at the agile adoption curve, I would say we are somewhere in the early majority phase. This means more and more folks are adopting Agile and making some of the same mistakes along the way. The biggest mistake I see is folks just simply adopting the most convenient or appealing principles and practices. Teams lull themselves into a false sense of belief by adopting the some practices and believe they are Agile and will be granted all the promises of Agile. It just simply doesn’t work this way. Either things get worse or only marginally improve. It’s a Cargo Cult Agile mentality.
I often stop and reflect on the benefits of the two major Agile methodologies, especially Scrum and Extreme Programming (XP). There is some amount of beauty and perfection in these methodologies. Both are found on Agile Principles and Values, but tackle the beast of software development from different perspectives. Scrum is like a great seven-course meal. We have our Product Owner, Scrum Master, Team, Sprint, Daily Standup, Demo, and Retrospective. All seven pieces are critical and you can’t just leave one out. Doing so would be the equivalent of a seven courses meal with only 4 or 5 courses. XP on the other hand is like a great recipe. Every practice feeds off one another just like every step in a great recipe is crucial to each and every other step. Skipping a step or leaving out an ingredient is going to make for a really bad experience. I’ve gone back and forth over time debating if the Agile evangelists are really right when they say you have to adopt all of the XP practices to really be successful. I have come to realize that they’re probably not too far from the truth, each of these practices really feed off one another. Pairing forces developers to collaborate at the lowest and simplest level, 2 people. We must have tests to provide a safety net for refactoring. Test Driven Development (TDD) insures we have the tests by doing them first. Once we have tests we can leverage them for continuous integration and as a more effective and executable documentation. Each practice supports one another and is marginalized without these supporting practices. You can’t just decide to take a few of these practices and expect them to work in harmony. You got to follow the recipe to create a great seven-course meal or a great main dish. Failure to do so will leave a bad taste in your mouth like crème brulee and hot sauce.