I have a challenge for anyone who would like to participate. This year, all year, when attempting to describe or discuss software development, only use *development* examples and metaphors.
A lot of folks use construction or manufacturing examples to help others understand how the undeniably more fuzzy process of software development works. Others try to use examples from art or drama to try to emphasize the creative aspect of developing software.
These comparisons aren't wrong, but they do fall short. Of course most comparisons fall short of the actual thing at some point. But what is intriguing to me is that humans have been developing things for centuries. We have *plenty* of development examples all around us yet non-development comparisons seem to be the norm.
Now certainly, examples of non-software development will still fall short. In fact, I know they will because most examples of development are of some kind of physical development such as a tangible product. Software is different, but less so in most examples I can think of. Software differs because the economics of its final production is inverted from that of physical products. With physical product development, it is usually more expensive to have to remake the physical thing after it has been initially developed. However with software, if you consider its final production nothing more than compiling or interpreting, its remaking is so cheap its free.
This is not meant to contradict concepts like baking quality it and the obvious increased costs of finding bugs late, or worse finding nobody wants or needs your software after you've built it…but again, with software, those are simply development or design issues, not production of the software.
So what do you think? Can you do it? You up to the challenge? For a full year, when discussing software with anyone, friends, family, colleagues or clients…use other development examples. It should at least make for an interesting mental exercise!