Dec 04

Programming with Passion

Software engineering shouldn't be 9 to 5 job. It should be a source of constant intellectual stimulation, in an environment of constant change. However, experience tells me that there are plenty of people for whom programming is the process by which a specification document is turned into a paycheck.

It's no secret: I'm a geek.

I start work at around nine at the Day Job, designing, writing and testing code, and fitting reading research in when I can or need to.

When I finish for the day (usually around five - work smart, not long) I often launch into some personal project or other. Or I make sure I'm up-to-date with the programming reddit, or some of my favourite technical blogs, or just plain spend time thinking.

(And no: I don't have children. I guess my schedule would be a little different if I did.)

The point is that, for me, programming is more than a job - it's a lifestyle, something I think about most of the time, and to a certain extent defines my identity.

I have found that not everyone is like me.

There are innumerable programmers (I suspect in the majority, squirrelled away in IT departments in companies for whom IT is non-core) who come in every day, turn a specification into a paycheck, and go home again. Jeff Atwood calls these guys "the 80%".

We - you, I, anyone else who reads or writes blogs for interest, for whom programming goes beyond the daylight hours - are the 20%, the other part of the Pareto split.

What does this mean?

First, I don't think it means that most programmers don't care. I've known plenty of people in the 80% who cared that their software worked, and was delivered on time.

However, for the 20%, "worked" and "delivered on time" simply aren't good enough. We strive to create software that's faster, smaller, more elegant, and more beautiful. We want it to delight you. Even more, we want it to delight us. We will spend all our waking hours doing this. We love the process where software gets bigger as you write it, but then gets smaller and smaller until it does what it is meant to do and nothing more.

(Microsoft? No? Thought not.)

Our software is beautiful.

Software produced by the 80% is not beautiful. Typically, these are in-house, custom solutions. From the outside, they tend to be ugly, with difficult-to-use user interfaces. Internally, they're invariably sprawling monsters, grown from an initial ill-thought-out requirement that was never questioned, merely implemented. Fix is layered on feature, and performance goes down the tubes.

Beautiful software is flexible through simplicity and transparency. There is no magic; actions are clear to users, be it a web page, a batch processing system, or a desktop application. This is the design ethic that Apple (mostly) understands, and underpins the way they approach everything from hardware right up the stack to end-user software.

This is hard. It requires you to think. You need to be able to challenge what you're being asked to do, and to say "no". Beware of the WIBNI, and scope creep.

But mostly it requires you to be passionate, to care about your craft.

Imagine what we could do if we got that 80% to be passionate too.


This won't be published anywhere, it's just in case I need to contact you.

You can use Markdown in your comments. Be sensible!

Sorry about this, but I don't want spam comments.