Why Good Programmers Are Lazy and Dumb:
Lazy, because only lazy programmers will want to write the kind of tools that might replace them in the end.
Second (and I will elaborate a bit more on this because I find the concept to be less known than the first) a good programmer must be dumb. Why? Because if he’s smart, and he knows he is smart, he will:
a) stop learning
b) stop being critical towards his own work