Why the Best Programmers Are Lazy and Act Dumb
It seems to defy all logic, but the best programmers have two usually undesirable traits: They’re lazy and dumb.
That’s the point of a classic post by web developer and blogger Philipp Lenssen that I came across recently, and his ideas don’t stay controversial for long. He explains why programmers with those characteristics actually do the best work:
Lazy, because only lazy programmers will want to write the kind of tools that might replace them in the end. Lazy, because only a lazy programmer will avoid writing monotonous, repetitive code—thus avoiding redundancy, the enemy of software maintenance and flexible refactoring. Mostly, the tools and processes that come out of this endeavor fired by laziness will speed up the production.
Doing your best to get around any extra work certainly sounds like the definition of laziness. But Lenssen asserts that in the process of eliminating those unnecessary steps, the “lazy” programmer also is getting rid of future drudgery. If this programmer has to do something more than once, he will consider automating it, thus speeding up and improving the process.
Being lazy also will drive a programmer to determine which software tools make work easier and to ensure that work can be maintained and refactored easily. A lazy programmer will find tools that help him stay lazy instead of creating a tool himself, preferring to take advantage of the efforts of the open source community. If there is an existing solution that has already been tested and proven, this programmer will find it—and once again, his laziness has actually streamlined productivity.
The other half of Lenssen’s assertion says good programmers must act like they are dumb:
Because if a programmer acts like he's too smart, he will:
a) stop learning
b) stop being critical toward his own work
Point a) will make it hard for him to try to find new techniques to allow him to work faster. Point b) will give him a hard time debugging his own work, and refactoring it.
A programmer who adopts a “dumb” mindset usually finds the best solutions to problems because he takes simple, fresh, and unconventional approaches toward the issues. A dumb programmer will ask “Why?” and other basic, childlike questions that will usually help reveal an answer. Believing you have the right solution from the start may prevent you from discovering a better one.
Being too confident in your own intelligence can often make you complacent and think your work is above critique. Consequently, you will stop learning from your own mistakes, which is one of the best ways to improve your work. Being dumb—or at least trying not to be so clever—can help you remain humble and open to your colleagues’ advice.
You may want to rethink these so-called flaws. Being lazy and acting dumb can actually make you a better, more productive, constantly improving programmer.