Sunday, May 29, 2011

Agile – Its more Disciplined than you Think

Sometimes Agile gets branded as being the cowboy methodology. Some folks who say they are Agile, use it as an opportunity to abandon processes and documentation so that they can enjoy the wild west life. These cowboys know that they get away with pretending to be Agile since many folks, particularly their up-line management have no idea of what Agile really is. Some folks like to term whatever they are doing as Agile in order to be on the Agile bandwagon.

However, it is the cowboy and those that want to pretend they are doing Agile that propagated the myth that Agile is an undisciplined approach. Ultimately, these pretenders can give Agile a black eye in the organization and industry since others will believe that Agile means no process, implies an ad hoc approach, and is undisciplined.

For those that have followed the formal approaches of Scrum, Kanban, eXtreme Programming (XP), Test Driven Development (TTD), and more, realize fairly quickly that Agile instills much more rigor and discipline than most cowboys can tolerate and more many some folks realize. Some who follow Scrum for instance, learn quickly that there is much more discipline than they originally thought.
One of the early introductions to Agile practices is Sprint (or iteration) Planning.  Imagine every two, three, or four weeks you revisit the backlog to prioritize it, then scrub each story, size the work, and commit to the work. This is meant to be a rigorous day of really understanding the work for the sprint where typically your brain will hurt upon conclusion of this day-long session!
Now let’s visit the Daily Stand-up sometimes known as the Daily Scrum. Imagine every day that someone asks you 'what you did yesterday' and 'what you are doing today', and “what are your impediments”. Imagine, every day this is occurring! This starts to get you into a laser focus of the work because you don't want to go for too many days saying you accomplished nothing.

Finally imagine that at the end of each sprint, you have to actually have working software per the end of sprint review (aka, demo). This means that within the end of a two, three, or four week sprint (aka, iteration), you need to build a function into a meaningful and viewable piece of functionality for validation by customers (and you cannot show customers junk, can you?). And to add to this, during the sprint each story (aka, requirement) you work on has to meet the rigorous “done criteria”. Done criteria can imply (for example) that each story that is worked on, must be checked out, incrementally designed, coded (following appropriate coding standards), possibly code-reviewed, built, unit tested, checked-in/promoted, merged, integration built, smoke tested, and system tested. Whew, is that enough discipline for you yet? All of this within a sprint so that you can have some tangible to show the customer so that they can validate if you are meeting customer needs.

Or course there are many more rigorous Agile practices. The discipline helps with the productivity and because we are empowered as a team, the discipline ensures we all remain focused on the work. So next time someone says Agile is undisciplined and ad hoc, it is clear that they certainly have never actually done Agile, but more importantly, explain to them the real rigors of Agile and if you have Agile practices occurring, invite them to sit in or participate.