The existentialist developer, or the absurdity of code quality

12 Dec 2015

When my colleagues learn that I did a degree in philosophy, the reaction is often one of mild amusement. Sometimes this revelation is followed by a comment that it explains a lot about me. I hope that they mean that as a compliment, but I can't be sure.

When people talk about 'being philosophical about things' they usually mean something that bears little resemblance to the course I studied. It wasn't so different from any other arts degree - reading a bunch of books, talking about them, and writing essays about the ideas in them. I can't claim to have been the best student, but the experience definitely had an influence on me, and I think it helped to shape the way I think about things.

One of the writers whose work resonated with me the most (and influenced me to study philosophy in the first place) was Albert Camus. He tends to be popular with misanthropic teenagers. One of his best-known works relates the legend of Sisyphus, who was punished by the gods by being condemned to roll a boulder up a hill. When he got to the top, it would roll down again, and he'd have to do it all over again.

Sometimes work as a web developer feels similar. Certainly a backlog can often feel like a heavy boulder that would pick up downward momentum if you don't keep pushing it. But what do we do once we've pushed our boulder to the top of the hill?

There's often a strange sense of anticlimax when a project goes live. After months of hard work, the thing that you've been so obsessed with is out there in the world. And then what? For most projects, there's the most minor of fanfares, and a moment of appreciation before getting back to work. If you're lucky there might be some kind of party, but you'll probably have to keep an eye on server logs to make sure the site stays up.

Most of the time, we're straight back onto the hamster wheel, to mix metaphors. Either with the same project, or on to something else. According to Camus, that's the tragic moment - as you head back down the hill, getting ready to do it all over again.
But there can be something reassuring about knowing where your next job is coming from, and maybe it's easier to get on with your next ticket than face the enormity of considering what life is all about.

One of the central questions of Camus' work is how there can be values if you don't believe in an afterlife. If you think that we all end up as worm food in the end, what does any of it matter?

Some might imagine that recognising the meaninglessness and absurdity of life might lead to nihilism, but it seems pretty clear that there can be clear values in a world without God. Values and meaning come from embracing the absurd.

When you break most things down into their component parts, there's something ludicrous in them. Who's to say that how I spend my leisure time is any more or less valid than another choice? Who am I to pour scorn on people who are into historical re-enactment or trainspotting or scuba diving or shopping?

In my free time, one of my favourite things to do is to get on a bike, ride out of my house, go up some hills, go back down those hills, and then ride back home. Sometimes when I'm staying in a hotel I'll pedal a bike that doesn't even go anywhere. Other people lift things up and put them down again, or run without going anywhere.

It's all pretty pointless. Except it's not. The point is that we create our own values in the world, by caring about things. What seems pointless or boring to one person can be the thing that gives meaning to the life of another.

Which brings me back to developers. Camus was talking about all of our lives when he talked about the futile search for meaning in a world without God, but I think that a lot of developers tend to have a fairly well-developed sense of the absurd, or at least a certain black humour. We all love sharing stories about the ridiculous requests we get from clients.

As has been discussedat great lengthelsewhere, clients don't care about code quality in itself. In the grand scheme of things, what does it matter if the indentation is inconsistent, there are typos in the comments, or there's a mix of camel-case and snake case?

But it does matter.

Like a picture that isn't hanging evenly, it's hard to unsee these apparently trivial blemishes once you've noticed them. They irritate and distract you, reducing productivity, and potentially stopping you from spotting bigger problems.

And there is something satisfying about the sense of self-righteousness that you can feel when you get rid of unsightly code. You might even be able to convince yourself that it's progress. As I've said before, I think that keeping your code clean will help you to track down the real bugs that might otherwise be lurking there. Besides, fixing those things is an expression of intent that you care about doing your job right, like a craftsman keeping his workspace in order.

Having said that, you have to get your priorities right. I still haven't entirely forgiven my colleague for the pull request where he tried to do a global find and replace of incorrect instances of "a" and "an" - we saw a lot of exceptions to the general rule during that epic piece of nerd sniping.