Tending Your Software Garden

God, what a series of numb and tasteless posts.

Coincidentally, I wrote a software project metaphor a couple of days ago. It’s like building a wagon wheel.

http://commadot.com/the-ux-of-wagonwheel-projects/

It’s actually just one circumstance, but it felt relevant.

Software development is a bloody pain.
Never in the field of professional endeavour has so many people with so much talent produced so much crap.

In Tad Williams science fiction novel ‘Otherland’, volume 1 - he makes the exact same reference to tending the garden, from a software / hacker / VR / future sense. Can’t remember the exact chapter (read it about 10 years ago), but it’s one of my favourite passages of all time and I always think of it when developing stuff I’m into.

I stroke my software, like a cat. Sometimes it purrs. Sometimes it bites my hand and poops on the floor. But there’s always, always fur all over the place. And it smells of cat.

Yeah, I love the blog but the posts here lately, this one in particularly, have really sort of smacked of the all too common pseudo-intellectual blogosphere jibber jabber.

Best metaphor I adopted so far is that building software is like carving a sculpture. At first you erect something that barely resembles desired output, and then carve, and look at it, and carve, and look at it, to determine what places need further carving. At some point you let viewers to look at it, and touch it, and they complain, that something does not look the way they like or that they have cut themselves on some sharp edge. And then you carve and polish some more. It’s hard to satisfy your viewers because they not only look, but also use your sculpture to do useful things. They open beer with it. They use holes in your sculpture to keep their stuff. So you carve. And all you have, is your eyes, mind, hands, and your trusty chisel.

have really sort of smacked of the all too common pseudo-intellectual blogosphere jibber jabber.

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.

Also, is our children learning?

If we’re being agricultural about it, I’d prefer ‘gardening’ over ‘farming’

On gardening vs. farming – isn’t gardening just small-scale, boutique farming?

Re Knuth and The Art of Computer Programming - it’s 1968, not 1998

I always think of the movie Caddy Shack:

Be the ball.

Be the computer.

After all, you have to be the computer to write code.

I like the Hunting Werewolfs metaphor :slight_smile:

One thing I like about the farming analogy is that it captures the distribution of a farmer’s time.

A farmer spends a lot of their day not tilling the earth or planting or watering, but mending fences, maintaining tools and equipment, generally keeping up and improving the infrastructure that supports farming.

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.

You are not Steve McConnel…not even close, Jeff.

The phrase ‘empty vessels’ springs to mind. ;-/

That’s right all you Jeff haters - Keep coming here with your nerd rage and bumping up Jeff’s ad revenue. That’ll show him!!

Anyways, interesting post. Glad to see SO didn’t make this blog die.

If programmers are just farmers then beware the competition from the Amish.

I like the garden or farming metaphor. We even have droughts, floods, and lots and lots of, uh, fertilizer flung around.

It seems that comparing programmers to farmers seems to have touched a nerve with a lot of people…

I guess I just don’t understand the notion of JUST a farmer, as if they are somehow not as good as other people.

I actually think farming is a great metaphor. Farming is actually a complicated science.

Several metaphors could apply for different scenarios, I just read that chapter 2 of code complete recently to write a post about it and now I found your post.

I’d never think about the farming approach with web development but it seems very nice, what about software is like a tamagochi, it never stops you to ask you for something, demanding your time, its not a alive but it looks like… _ just kidding.

So if we are farmers which is the best tractor to work on?? VS2008??

Software engineering is like what you make it to be. There are gardeners, but there are also major food industry corporations.

Software development is like…software development. The reason we have so much trouble finding a good metaphor for it is because it isn’t like anything else. Sure, it’s sort of like construction because we ‘build’ the software, and it’s sort of like gardening gardening because our code keeps growing and… well, you get the picture.

The truth is, the only thing that software development resembles is more software development. It is a thing unique in the world, and it attracts a unique cast of characters. Still often more art than science, and more often driven by hope, fear or money pressure than reality, still it works more often than not (although with enough horrors to fill the pipeline of sites like The Daily WTF a hundred times over).

The fact that Code Complete is still relevant is not so much because of the underlying metaphor, but because it is full of common sense. Coding mantra’s will come and go, and our tools will continue to change and evolve, but as long as we have human programmers cutting code, the same simple rules of code crafting will still apply. So use a metaphor if it helps. Just don’t carry it too far.