Tuesday, October 9, 2007

Agile Indian vs Mainstreet Cowboy

I feel the need to distinguish the “Agile Indian” from the “Main street Cowboy”.

Agile is an interesting and powerful set of methodologies, but I hate to see the collapsing of more than one term into one, especially to the detriment of Agile. I also hate to compete inside my organisation against Cowboy coding masquerading as Agile.

Let us start by distinguishing “Cowboy” coding.

  • Just leap into the project and start programming as fast as you can.
  • No thought to testing each function.
  • The emergent behaviors and corner cases in the product may not be considered up-front, only when they are proven to be a problem do they get addressed.
  • Whack a Mole style development, just hit the problem in front of you.

Then distinguishing “Agile” programming.

A set of methods that allow the following results.

Small / Quick / Short feedback loops:

Allowing any mistake or wrong direction to be quickly and cheaply rectified.

Techniques: continuous testing, client on site, fast iterations, small teams

Optimal process control:

Any process that is not required increases the cost, reduces morale, increases risk.

Techniques: no Quotes, Stories not Endless/Perfect a-priori Requirements, Optimal Metrics, One methodology per project.

I hope this makes sense, comments are encouraged.