Tuesday, February 17, 2009

Best Practices: Totally Useless

Favorite quotation from this article:
Throwing a book of rules at a terrible programmer just creates a terrible programmer with a bruise on their head where the book bounced off.
This is exactly what happened to me recently.

I was leading a project being executed by a team of cargo cult followers with copy'n'paste being the favorite technique. I've tried to nudge the developers gently into not doing certain things that were making my hair stand on end. Then, I was confronted with the statement saying that I'm being nitpicky, and need to make up my mind and "set expectations" (another beautiful corporatese term). Grudgingly, I put together the list, trimmed it down to a couple of dozen items, and passed it up. Lo and behold, it's been declared that they understand the futility of trimming down (because the "best practices" get lost in the process), and that they will take care of collecting "the words of wisdom".

Next thing I knew, the Holy Writ expanded to over two hundred commandments, and it was declared that the mental capacity of one can never be sufficient to hold that much knowledge.

And indeed, the behavior demonstrated by participants was alike to the way a sponge reacts when it is saturated: all extra water simply drips off, never penetrating the surface.


In this particular case, the only technique that actually worked was - vigilant activity monitoring (post commit, hence, post factum, unfortunately), combined with vigilant followup and correction enforcement (using terms of originally referenced article, "making sure you reach the unreachable"). After several months of this, the developers either finally started to comprehend what was required, or, possibly, got tired of redoing the same stuff fifty times and decided that it would be simpler for them to just follow the directions from the beginning rather than to try to be lazy and cut all corners possible.

The downside is that such an approach is bogging you down and forces to shift the attention to mundane things ("Never wrestle with a pig. You get dirty, and the pig enjoys it"). However, given the situation when "you have to work with the team that you're given" (which is often the case in enterprise, especially now that extreme cost savings are in effect), this may be the only option left.

UPDATE: Fixed typo.


  1. Beautiful, though, especially the concluding paragraph... :)
    P.S. "shif" = "sheaf"?

  2. "shif" = "shift + typo"

    Shame on me. Fixed.