The First Virtue of a Programmer


This Garfield strip has a lesson in it.

The soul of a
programmer.

You need a certain amount of laziness to build cool tools. Patience is usually a virtue, but sometimes it causes you to tolerate typing in the same thing over and over.

Larry Wall appears to agree with me. Well, he said it first, so really I agree with him. But it’s my blog, not Larry’s.

Laziness

The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don’t have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.

I know a guy who types git commit -m every time, and uses escaped newlines to type a commit message, rather than use Vim for it because he doesn’t want to learn Vim. He’s also unwilling to take the 5 minutes to figure out how to set his $EDITOR environment variable to Sublime Text, so that he can just open it in there.

This makes him averse to typing detailed commit messages. My condolences to his teammates.

He never uses Makefiles. Instead, he types out every single filename if there are less than 20. Any more, and he uses this command that he looked up:

for i in `find . -name '*.c'`; do cc $i -o $i.out; done

This is a bad idea since it involves re-compiling every file in that directory, and doesn’t recurse into nested directories.

A lazier person would create a Makefile.

He also spends several minutes a day formatting his code nicely. I’m all for nice looking code. But I’m lazy. So I took an hour to find auto-formatters for every filetype I normally use, and an editor extension that auto-formats on save.

So I now write sloppily formatted code that looks even better than his, because man can’t beat machine in this.

The takeaway, which Larry was kind enough to say lucidly 26 years before me, is that you should spend a little energy now to save a lot of pain later. If nothing else, it’s less boring to solve your problems in a novel way.

Related Posts

Use of emphasis in speech

Generating a lot of language data with a theorem prover

"Litany Against Fear" in Present Tense

When it's time to party we will party hard

these are people who died

divine carrot

the frog

what it’s like to get nail phenolization

Why 0 to the power of 0 is 1

Lines and Points are Circles