July 23, 2006

...Learn TDD with Codemanship

Outdated Work Ethic

I am, like all good software developers, congenitally lazy. Give me a goal, and I will look for the easiest way to achieve it. Actually, I don't mind a bit of hard work - just as long as it doesn't take too long. I like plenty of free time to play, and work kind of gets in the way of that. What I'm doing right now doesn't feel like work. It feels like play. Nobody has asked me to write this blog post. Nobody expects it to be up on the site by 9am tomorrow morning. It doesn't need to go through a committee to get approval. I don't have to write any documentation for it. I'm writing this because I feel like it. I have the muse. I'm inspired. So I fire up the laptop, go out into the sunshine as far as my wireless network will allow, and start pouring out a stream of consciousness on a topic that is on my mind today.

That's not to say it won't have any value. Posting it will trigger several thousand people to come to the site, and a handful of those thousands of people will buy something from the site or enquire about my services. And yet I write largely to please myself. (You may have noticed.) I persue topics that interest me and use the blog purely to explore my own thoughts and ideas. 99% of the time it's pure self-indulgence, which is what makes it so easy to find the time to write it - I like doing it so I make time!

And how I feel about my blog is becoming how I feel about my career in general. Specifically, that it shouldn't feel like work. I haven't learned much in my years as a consultant, but there are two things I know for certain:

1. When they give me a technical test, the project will turn out to be crap
2. If it feels like work, I'm doing something wrong

Sometimes I notice that my blog has been neglected for a while - often during very busy periods when finding the time is much harder - and I force myself to sit down and write something. The results are inevitably disappointing. When I'm not in the mood, I should leave well alone.

The same goes for software development. When I force myself to sit down and write some code, it almost always leads to problems down the line. When I haven't got my coding head on, I might as well not bother because - eventually - I'll end up going back and completely rewriting it anyway. Much of the work I force myself to do turns out to be anti-work - work that takes me even further away from my goal. I'm better off doing no work than doing anti-work.

I think a lot of it has to do with creativity and how my mind works when I'm "in the zone". It's not like taking out the trash or shampooing the dog. I can't do it when my mind is elsewhere. And I can't predict when I'll be in the right frame of mind or when inspiration will strike. There are patterns, though. I tend to be more analytical and have better concentration in the morning, so that's a good time for things like programming computers and doing my tax returns. I tend to be more free-thinking and "whacky" in the evenings - so that's a good time to do anything that requires a bit of colouring outside of the lines. But there's no guarantee. It's not like a factory whistle blows at 08:00 and I'm John Q. Programmer until the whistle blows again at 12:30.

The protestant work ethic just doesn't do it for me when it comes to any kind of process of innovation. Culturally I feel under pressure to create and innovate in a predictable manner, like I'm the guy who puts the jam in the donuts from 9-5 every day. Culturally I feel like I'm supposed to be a factory worker, and people keep telling me that software development is factory work. Personally, I think that's an industrial dysfunction. The whole concept of productivity needs to be seriously reconsidered. We still measure productivity by effort, not results. In our post-industrial mindset, a joke that took 4 guys 8 hours to write should be funnier than a joke that took one guy 5 minutes to think up. Those in the know will tell you that a funny joke takes no longer to dream up than an unfunny joke. How funny we are is not a function of how hard we try. When they're in the zone, the best comedians tell us that being very funny feels effortless - they just are, and that's that. But they're not often in the zone, and if you go up to a comedian in the street and ask them to "say something funny" you'd probably end up disappointed.

And I can't help feeling that what I do - and what you do (if you haven't come here by accident looking for "nice 1000000 photo sex", of course) - has more in common with writing comedy than it does with filling donuts...
Posted 3 weeks, 1 day ago on July 23, 2006