Here is an interesting article on the "Psychology of Programming".
I have always said that the most important factor in making a good programmer is not creativity, but laziness. Well, you definitely need both....laziness alone isn't good enough. But a truly determined laziness is essential!
Think about it. How has any innovation come about? It isn't from the person who scrupulously follows step after tedious step of the current methodology...it's the person who says to herself, "My god, this is taking forever!! There must be a faster/easier way to accomplish this!" So she creates a tool to save herself the time and trouble....and everybody profits from it.
The whole idea of computers is to do tasks more quickly, more easily. What kind of personality do we need to come up with new programs/tasks/processes? Somebody who refuses to do anything slowly. Somebody who can't stand tedium. Somebody who is way too lazy to do any sort of repetitive work....so she finds a way to make the computer do it for her.