A couple of days ago I gave a presentation to one of my customers, in which I stated that "A good programmer is a lazy programmer."
This led to some heated discussion afterwards, in which I explained what I meant. I want to summarize this:
I would prefer to work with programmers that when facing a problem will try to think of the solution that will make their work the shortest the possible. If there is a 3rd part product that solves it - they will use it. If there is a solution which involves writing 100 lines of code instead of 1000 - they'll go for it. When tackled with a routine task - they will try to automate it because they will get bored by it quickly.
I want programmer that understand that if they'll finish their task in half the time - they can go to the sea, or home, or basketball, or whatever they want. I don't want them in the office at 8pm. I want them out by 5pm, after their work is done.
Will super-geeks accomplish that? I suppose they can. Will they want to accomplish that? I'm not sure. But lazy programmers will do their best to be out as early as possible, and so will do their work as efficiently as possible.
And that's the reason I believe that a good programmer is a lazy programmer.