I don't know how many times I've tried to explain this phenomena to people in my company, or others who work with/for programmers, but the truths espoused here are so very self-evident to us programmers, but maybe not so much with everyone else. Anyhow, great article and here is a link to it: "Programming is like a dream"
Here's my favorite excerpt:
My brother contends that it is this same phenomena that makes programmers so bad at estimates. The problem is, as he says, that the programmer already knows everything that needs to be written. When you have it all in your mind, it seems like it should be easy to write it all down. But it's not. The physical act of writing the code takes a long time. But more importantly, your mind never thinks about all the "meaningless" details. It knows how to code them so well it doesn't even need consider their existence anymore. Unfortunately, the computer still needs them. It can't infer. All those loose ends, niggling details and corner cases end up eating a great deal of time... sometimes more than the rest of the program.