la⋅zy

adjective

1. averse or disinclined to work, activity, or exertion; indolent.
2. causing idleness or indolence: a hot, lazy afternoon.
3. slow-moving; sluggish: a lazy stream.
4. (of a livestock brand) placed on its side instead of upright.

Nowhere in the definition above does it mention anything about a disinclination to think. In my mind “The Lazy Programmer” is not a derogatory term. In fact the best programmers are lazy. They would rather think before acting in order to prevent more work later.

Those programmers who are not lazy often code themselves into corners. They are too busy writing code to stop and think about what they are doing. They are the same programmers who get married to one programming language, one tool, or one methodology. They are the same ones who will copy and paste the same piece of code all over a program when a class or library should have been refactored out.

The Lazy Programmer will be an ongoing section where I will pick one software development topic and explain what it means to be lazy.