I've heard a lot of people's attempts at explaining programming to non-programmers (I've even tried it myself a couple of times), but I've never heard someone use the metaphor of dreaming before.
Despite being somewhat clunkily translated from the original Russian, I think it's worth reading.
I like the metaphor of programming as creative writing - you start with a blank editor (sometimes) or existing code (more likely) and revise (refactor)/craft it into something tangible that is of utility.
Despite being somewhat clunkily translated from the original Russian, I think it's worth reading.