Monday, September 3, 2018

Hard Work Doesn't Always Pay Off in the End

I had a coworker who used to always say that lazy people were the best programmers. Her reason was that we don't like to do anything twice.

I think she was right that good programmers often look lazy. I'm not sure that the reason is what she thought it was.

When we bump up against a hard problem, most people have one of two impulses: Give up or try harder. Both of these approaches are unlikely to succeed - although they do both succeed more often than I would have guessed. Often, when you run into something really difficult, the best expenditure of time is the one that makes it a little easier.

Good developers are doing this all the time. Rather than work to shove a feature where it won't fit, they work to change the design so it fits the feature. Rather than struggle to understand a bug in the debugger, they work to make the affected code more testable, gradually excluding possible sources of error. Et cetera.

This is why there is an apparent connection between laziness and good developers: they both share the trait that they don't like to work hard.

So, the next time you're faced with a challenge, don't rise to it and don't shrink from it. Instead, look for a way to undermine it and make it not be as much of a challenge any longer.