Finding a good metaphor for software development is a recurring theme in books, blogs and talks. Creating a quality piece of software is not guaranteed no matter what methodology is applied, so with metaphors people try to look up to other disciplines that are more successful in producing quality products.
I got one too: Software development IS like SOFTWARE DEVELOPMENT. That's all it is. It's not science, it's not gardening, it's not engineering and it's not writing or any other art. It has elements of those and even shares some techniques with some of them - sure; but it's nothing like them. It's a multidisciplinary effort, a unique process, with its own weird set of rules, practices and pitfalls. Comparing it to something it's not is not only useless, but harmful too.