Tuesday, July 1, 2014

Anger-Driven Development

If you've been a programmer long enough, then you've come to realize one simple, universal, unassailable truth: all other programmers are morons.  Then if you've been a programmer a little bit longer, you realize that to every other programmer, you *are* the other programmer, but I digress.  There's been a slew of X-Driven Development methodologies talked about over the years: Test-Driven Development, Behavior-Driven Development, etc.  While those are all good in theory, what I find that actually gets things done is what I like to call Anger-Driven Development, or Frustration-Driven Development.

The basic gist of it is "these floors are dirty as hell and I'm not gonna take it any more!".




Here's how it goes:

1. You repeatedly have to do some mundane or menial task that the idiot who designed the system should have automated (note: the idiot might be you).
2. You get sick of doing it, and yell "Khaaaaaaaannnnnnn!!!!!" a lot.
3. You channel that anger, ignore your deadlines, and automate it away so you never have to do it again.

Or alternatively:

1. You have to maintain some software written by a moron.  You know you've been there.
2. You keep having to use some awkward-to-use, obtuse interface that only makes sense to the moron who wrote it.  Good thing he no longer works there or you'd give him  piece of your mind!
3. You cry when nobody's looking (hopefully nobody's looking).
4. You channel the rage and rewrite or wrap the problematic code so that you don't have to waste one more second of your precious life dealing with it.

That's basically it.

1. Situation sucks
2. You get angry enough to do something about it
3. You fix the glitch.
4. ???
5. Profit

The problem with all that anger is, if you bottle it up too much, it tends to come out in powerful bursts.  You become the Hulk and rage on the source of your frustration, which is counter-productive.  Joss Whedon, the wise sage, has taught us the secret in the recent Avengers movie:



I think that's about where we need to be as developers: always angry.  We maintain a base level of righteous indignation about the code we have to work with, but we keep the Hulk at bay by fixing just enough of the brokenness to keep the blood from boiling over.  Always just on the cusp of blowing up, but channeling that anger into productive change.  You let the anger drive you to produce better code, better systems, and better processes just so you can sleep at night, despite someone being wrong on the internet.

I'd like to say I'm at that point of anger zen, but I still let the Hulk out at times.  Fortunately for me, my current situation is very empowering, so I'm able to fix things as I run into them for the most part, and Hulk stays within.  For now.

No comments:

Post a Comment