Automation Paralysis and False Laziness

Laziness is a virtue in programmers, but like any virtue, it's easy to take it too far (or not far enough), in which it becomes a vice.

When my career in technology started, I was a system administrator. If you think programmers are lazy, you don't know many really good system administrators. My rule was "If I'm bored four days out of five, I've done my job well." A bad system administrator will ignore problems. A good system administrator will prevent problems, often through a combination of automation and monitoring.

That discipline is good for programmers, too. (Programmers need a healthy sense of paranoia about all of the things that could go wrong, from anything like hardware failures to interaction with real users who never, ever, ever read instructions.)

That laziness is bad for programmers, too.

When I first released Modern Perl: the book, I didn't render an HTML version because I was falsely lazy. I didn't want to do the work of turning the plain XHTML templates into something attractive and usable.

Eventually (second edition), I did add the book's text in entirety to this web site. It took a couple of days of spare time to fit everything together in a way that made me happy enough, or at least didn't make me too unhappy.

For at least most of 2013, I've meant to go back and add simple SEO optimizations to the chapters, for things like meta descriptions and better titles. Doing it the quick and easy way will take me an hour.

The problem is, I want to do it right. I know I'll have a new edition of the book ready to go in the next couple of months, and then I'll have to spend another hour or two getting the on-page SEO elements back in place. I don't want to do that manual work twice. Instead, I'd rather automate the entire process so that I can type one command and render the book in multiple formats all ready for the printer, for electronic delivery, and for plain static HTML hosted on this site.

In other words, I've put off doing something simple which will help people find what they're looking for because it'll take at most an hour of manual work in favor of not spending several hours automating that process.

That is false laziness, and it affects far more that my hobby projects. I have to fight it on almost everything I do. (When I was a child, I spent an afternoon attempting to invent a machine which would make my bed for me, because that was more interesting than spending 90 seconds to make my bed.)

What's the solution? I'm not sure. In my professional work, the relentless push to deliver good data to clients and to satisfy the business requirements of a growing business helps me remember that my goal as a programmer is to produce value. Undelivered value isn't value at all. That's no excuse to do a sloppy job or release code I'm not proud of, but it's a constant reminder that my work isn't some theoretical exercise of perfection. It has to exist and it has to work.

The reticence to do something because I think there might be an abstraction or automation or simplicity that I'll eventually get to? That's dangerous, if it keeps me from doing useful and necessary things.

Modern Perl: The Book

cover image for Modern Perl: the book

The best Perl Programmers read Modern Perl: The Book.

sponsored by the How to Make a Smoothie guide



About this Entry

This page contains a single entry by chromatic published on October 5, 2013 6:00 AM.

Functions Shouldn't be Methods, Yet Another Reminder was the previous entry in this blog.

Do Successful Startups Respect Infrastructure? is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by the Perl programming language

what is programming?