I’ve noticed that all of the really good programmers that I’ve ever met are lazy. Not exactly lazy in the conventional sense of not doing anything hard or time-consuming, but in that special programmer kind of way. Stuff like instead of doing some tedious computer-related task by hand, you write a script to do it instead. Even if this involves learning a new scripting language, spending time putting it together, going through the task multiple times to debug it, and ends up taking much longer than it would have taken to just do the original task by hand. But hey, at the end, you now know more about Regular Expressions or Python or VBA or something!
You can call it laziness as far as not wanting to do the original task in the tedious, boring, manual way. It’s also industrious in that you take the initiative to learn something new when you didn’t have to. It’s essentially a comparison of enjoyment – I’d get much more enjoyment from playing with some unfamiliar technology than in copying and pasting something a hundred times.
That gets down to the core of why this is true – to be a good programmer, you have to truly enjoy learning new things and working with new technology for its own sake. When hiring programmers, people often look for things that signal this indirectly, like working on side projects and contributing to open-source projects at home on your own time. Maybe this is a better way, since not everyone wants or is able to spend their free time coding. Imagine the interview question: “Tell me about a time that you had to do some rote task to accomplish your goal and used a programming tool to do it rather than do it manually.”