Search This Blog


Friday, December 14, 2007

Unconsciously Agile may not be Agile

I ran across an article entitled Agile Software Development Thoughts: Unconsciously Agile. Basically it says that a lot of teams are doing Agile Development, even though they don't do it consciously. All it takes to be admitted into the Agile club is to have lots and lots of releases and patches:

I am speaking of maintenance releases, patches, and hotfixes. Forget for the moment that these are created out of necessity due to problems with “the big release” and that they are often done under intense pressure. Forget for the moment that sometimes you have to redo a hotfix with another hotfix. The need for the second hotfix is often found by the intense scrutiny that is in place during the aftermath of the first hotfix and due to the fact that the hotfix probably didn’t get the full spin cycle of the normal QA process.
"So, let’s review. Your maintenance release has the highest quality, was produced in a short time, and it has a fair amount of new features in it. Guess what? This is very close to Agile development. Surprise! But then of course, you revert back to your old habits." (emphasis mine)

Damon Pool's posts are usually insightful. But I simply can't agree with his point (Updated: Damon Pool has updated his post to clarify his meaning, he's targeting the people in waterfall process, which already has a QA process to vet out bugs. But for those who don't have such benefits, the below points still applies)

Unconsciously Agile may not be Agile.

To have Agile Development, you need to have at least the following:
  1. Frequent releases
  2. Iterative development
  3. Customer collaboration
To sustain the Agile development and to have quality releases, having the above 3 criteria is not sufficient. You need to add a lot of disciplines to that. You need to have
  1. Unit Tests
  2. Proper feature prioritization
Without these discipline you will need to release hotfix to fix the holes in your hotfix. True, your software is released in a relative short period of time, but is the release of high quality? If it is you probably don't need to release hotfix to fix hotfix problems right?

Unconsciously Agile may not be Agile, it's usually cowboy programming.

Agile Programming gives you high quality release, cowboy programming gives you releases that are full of regression bugs.

Agile Programming builds customer's trust, cowboy programming destroys it

Agile Programming gives you confidence to change your code, cowboy programming gives speculators confidence to short your company's stock symbol.

Agile Programming encourages collective code ownership, whereas a cowboy is allergic towards other people who tries to modify his code. How dare you change my code! You don't know all the intricacies behind my logic.

Agile Programming is good, whereas cowboy programming is bad. QED.


Damon Poole said...

Thanks for reading my post! Your response gives me a good opportunity to clarify what I meant.

I'm no fan of Cowboy Coding, and it takes a lot of work to move from traditional development to Agile.

When I say that sometimes traditional teams come close to Agile, I mean it is like they are "forced" into it out of necessity and they revert back as soon as they can. Though it is close, or even overlaps a little, it is impossible to be truly Agile without understanding Agile and intending to be Agile.

The reason for my post was to get folks in traditional teams to consider the following thought: "if my best releases are my maint/patch releases, and they are similar to what Agile teams do on a regular basis, perhaps I should take a closer look at Agile."

I will update my post to try to make this clearer.

Soon Hui said...

Thank you for clarifying your post. Now I can understand better what you meant.

Ralph Miner said...

The other agile practice that is missing - is retrospectives. If the team would think about how to do the not patch better - then you would be on the way to a true agile team

Soon Hui said...

Raiph, thanks for pointing that out!

リュウスケケンジ said...


リュウスケケンジ said...