Tending Your Software Garden

Sorry to disagree, Coding is like Poetry. Real Poetry, not the free verse crap that is seen so much these days. Look at poetry, you take words and combine them into lines that both have to convey both meaning and at the same time have a rhythm and a flow. The lines tend to pack a extreme amount of meaning in a very small space.
Like Coding, if the line structure is changed in poetry, both the meaning and how quickly(the flow of the words together) the lines can be read without the words spilling over on one another.
I don’t think that it was chance that the first programmer, Lady Lovelace, was the daughter of one of the most famous English Poets, Lord Byron.

Jeff Atwood wrote

If code is like plants, am I the farmer or the fertilizer?

I always thought it was more like calculus and writing put together. It doesn’t really make a coherent metaphor, but it describes the process well.

I see some non-gardeners are posting. As a gardener/coder I agree it’s a good metaphor. I would back off slightly from focus on a single plant though. Coding to me IS like gardening. You have to plan, plow, seed, weed, stake, and water. A WHOLE garden is the sum of its plants. A badly written… ummm tended… garden is chaotic, weed-choked, and the wrong plants are getting shaded, crowded, or over-fertilized. A well tended garden is a thing of beauty with grace, elegance, and abundance. The plants work together and really a good garden grows and evolves and is alot like a piece of poetry or beautiful mathematics or great code, whichever metaphor hits you best.

I’ve allways said that we are more like plumbers…

I think the word you’re looking for is cultivate. It’s more accurate than farmer or gardener.

But I hate software metaphors and similes. Building software isn’t like anything else but building software.

Metaphors are only useful when you’re trying to describe how we build programs to non-techs, and in that case an anti-metaphor is probably better. i.e. Software is not like building a bridge because …

PG compares hackers to painters.

I like the comparison. I’ve found far more similarities between developers and artists (painters, musicians, writers) than any engineer. For me it’s a little like gardening, but it’s less organic since code doesn’t really grow in and of itself - everything must be synthesized, torn apart, re-built, simplified, beautified, and obsessed over. Think Guns n Roses’ Chinese Democracy album, or [insert delayed Microsoft product here].

Ahem.

If you use the words like, or as, it’s a Simile, not a Metaphor.

E.g., That blog is LIKE a trainwreck vs That blog IS a trainwreck.

Metaphors are normally stronger than Similes. An Allegory is an extended Metaphor.

Parables are used not to be true to fact except to drive home a single point.

All of these are known as Figures of Speech. At one time around 240 were catalogued (prior to the Dark Ages). Some 212 are found in the Bible. Ask an English Phd how many they are required to know.

To say programming is just like gardening would probably be a rather incorrect Simile.

I’m not sure about the gardening comparison. My mother has a beautiful garden, she is a great gardener. But it is always the same, she has too many other interests (bridge, travelling, golf, bicycling, internet and visiting art museums) to really have the time and energy to change it and to improve it.

If a developer never improves his or her ‘garden’ he/she will be running out of business.

I thought it had long since turned into shopping at the mall. Its all pushing your trolley down the infinite aisles of prepackaged libraries and frameworks. I seem to recall Jeff being harassed for not getting his HTML validator out of a can.

I usually use the software angle on life, and it helps me see things better. This is a new metaphore baout software that I have heard, its nice metaphone, nothing wrong with it, sounds good. I kind of thought that software development on the whole is like assembling an automobile, its all nuts and bolts, the size of nuts and bolts may differ, parts of the automobile reamin the same, the varius tools that one might use, but in the end it still amounts to the basic nuts, bolts, wrench etc. Or its like cooking either you cook for yourself, or for others, or make something from the leftovers. I think programming is art of communication with the computer, you are taking to the computer to usign your language to get the necessary output.

The farming metaphor is great because everything that Jeff said makes sense and both have to deal with bugs. As a software farmer you have to spay some virtual pesticide (unit testing) all over the place to help make sure they don’t cause your crops to fail.

Jeff has been very defensive of his blog posts lately. Launching into attacks:

Did you click on the links in the first quote? Do you know who those people are, and why they’ve established those metaphors for software development? The answers might surprise you. And who knows, you might even learn something about some other well respected software developers, or, y’know, writing software.

no, farmers make a living from farming. gardening doesn’t even com close. a romantic view, perhaps.

doh, come

I agree with voyager…

Software building is like plumbing you just have to get from point a to b and there are many different routes to get there, some better than others.

In plumbing there are are are only 3 rules; hot is on the left, cold is on the right, and sh!t don’t run uphill.

My favourite:

Software development is like…playing with lego.

Dude, calibri stinks on chrome - get with it, cross browser - why not stick to Arial?

Zorro, Charles and Anonymous Cowherd are about spot on.

Metaphors (Eng. Lang. pedantry notwithstanding) can be useful sometimes when explaining a design to someone, although the number of stretched-so-thin-they-squeak metaphors I’ve heard used (please don’t ask about me about the ‘bouncers, tickets and cat swinging’ metaphor used by a colleague of mine) is somewhat depressing to think about.

When an industry is so insecure that it has to cast around for some descriptions to name the activities it performs then I think that industry needs rather to concentrate on getting those activities right and worry about metaphysics later. As Zorro implied, Code Complete is not holy scripture, just full of common sense and good ideas that we can use now.