There are two equally convenient routes from my house to the airport. The fastest is to take a toll road that passes about a mile from the house and goes directly to the airport. But that costs $8. The other route takes about 10 minutes longer, but saves me those eight dollars. Sometimes I take the first route. Other times, I’ll take the second.
There’s no one perfect way for me to get to the airport. Similarly, there’s no one perfect way for a team to be agile. This is why agile is best defined by its principles rather than specific practices.
Despite this, there are people who think agile can be turned into a set of thou-must-do-it-this-way rules. Some people tell me every team benefits from timeboxed iterations (sprints). Others insist that sprints of a certain duration are always the best. A popular book on Scrum insists that the daily scrum must be conducted left to right starting with the person to the left of the ScrumMaster.
They don’t. They aren’t. And it shouldn’t.
Scrum is deliberately incomplete. Sure, some group of gurus could get together and decide once and for all what sprint length is best. They could decide that all sprints should start on Tuesdays, and that teams must do pair programming on exactly 70 to 80 percent of all code they write. But these are decisions best made by the team.
And just like me en route to the airport, some teams will choose one way, and others will choose another. And that’s how it should be.
So, perhaps there is one true way to do agile—the way that works best for each team.