Driving and software… idiots and maniacs

We’ve been getting our fair share of snow this winter in upstate New York, and on those particularly bad morning commutes, the dreaded “idiots and maniacs” pattern is on display in all its glory.

There are the overly cautious drivers creeping in front of you (idiots), and the NASCAR wannabes lapping you in the passing lane or riding your tail (maniacs). And we, with all our prudence and common sense plod along smugly with our morning coffee rolling our eyes at the outliers.

Developers are sort of the same way. Perhaps ‘idiots’ is not the best word, but there are those who take their time, sometimes a lot of time, focusing on perfect design, code elegance, premature optimization, etc. at the risk of ever delivering product. While the maniacs (you could argue that term does fit) are flailing at their keyboards with only an occasional thought of following patterns, robustness, etc. Their primary focus is getting software out the door.

And in both winter driving and software development falling somewhere in the middle is usually the best place to be. Like our prudent winter weather driver, we choose a balance between delivery and perfection, between performance and maintainability. To be neither an idiot or a maniac.

But everything is relative. Surely, you’re a reasonable driver that everyone else can look up to. Right? But that idiot in front of you thinks you’re the maniac, and that maniac that’s just zoomed passed you… well, you’re the one in the way.

Thankfully spring is just around the corner (I keep telling myself that). But coding continues, and so does that balance between perfection and delivery. And that’s okay.

Some days it’s better to be an idiot, some days a maniac. What will it be today?