Metaphors Power Software Development

Some recent forum topics regarding programming language phenomenology, language oriented programming, and natural programming languages may be connected through a common theme of software metaphors.

Software is entirely and thoroughly metaphorical. Metaphors pervade every element and aspect of software, from the lowliest variable name to the largest of enterprise architectures. Software is so steeped in metaphors that we often overlook the extent and nature of these metaphors. Like fish in water, software developers often do not perceive the medium that surrounds us: our natural languages, natural conceptual models, and the natural and linguistic metaphors we use every day in our software designs. Even so, software developers borrow ideas, terminology and organizational structures from every field they encounter and every problem they solve.

Should we explicitly include consideration of metaphors and characterize any gaps between the expressive power of our natural languages and programming languages in any phenomenological study of our programming experience?