I recently ran across the article A Good Programmer is a Lazy Programmer and it reminded me of the my high school programming teacher's favorite quote: "Be Smart & Lazy". More on that in a minute, but first a brief detour down memory lane.
We had an amazing programmer department & Mr. Kirkwood was an amazing teacher. Ok, he was a bit kooky too, but that kept things interesting. He taught us sort algorithms (bubble, insertion, merge, matrix, etc.), data structures (linked lists, doubly linked lists, trees, etc.), the C programming langange, and even the Big O Notation. And this was in high school! This foundation definitely got me started on the right foot.
Alright, back to the principle. The key to the principle is grasping both pieces-- Smart and Lazy. I've met plenty of programmers that were lazy. These are the kind who just cut and paste code over and over. Or they download and quickly use snippets of code off the Internet without understanding them. This just leads to inefficient, difficult to maintain code. So, the key is to be both smart and lazy. Be smart and look for the patterns in your code and create reusable libraries. And the laziness will kick in when you're able to deliver solutions with less work. I think build servers & unit testing fall into this principle too. It may not seem like you're being lazy when you spend more time up front writing tests and configuring servers, but when you have an automated build system that tests your code for you after every check in -- then you'll feel the rewards of being Smart & Lazy.