Metaphors are leaky abstractions, yet they are little step that take you closer to understanding.
My fave is that building software is often though as a process similar to architecting a house. Yet it's more precise to think of it as creating a system which prints out a custom-architected blueprint based on some parameters and builds a different one for each of its users. In geek talk that be meta-architeting.