Tending Your Software Garden

I like the garden metaphor, and I first heard it when Dan Bricklin started his company Software Garden in the 80s. His products Demo (the first RAD tool, IMO) and Page Garden were must-haves for developers of custom DOS apps in those days.

Credit world does rock, though.

This is the first I’ve heard of the garden metaphor for software development.

In my case however, I would be moisture vaporator farming on Tatooine. :slight_smile:

In the 37signals example, the developers are determining how the plant grows, when it flowers, and what the plant looks like. In that case they are more Gods than farmers.

But anyway, yes we are just farmers, we are just typists. What’s your next article, that we are just garbage men or those guys that clean your windows at traffic lights?

Gardening is a reasonable metaphor, it’s just more like bonsai than growing vegetables in your back yard.

In that case they are more Gods than farmers.

That would be the Programmers are just playing Populous post…

I tend to agree more and more with this point of view the longer I work in the field. In fact, over the last few weeks I’ve been changing the title I give myself in my head from software craftsman to software gardener. On the rare occasion that I have to opportunity to write a tightly-focused library from scratch, I see the work as most analogous to my woodworker grandfather crafting objects in his workshop. But at my day job, where I gradually weed out cruft, plant the seeds of strangler vines to replace deprecated systems, and trim overgrown methods - there the most apt metaphor is definitely gardening.

As a farmer-turned-programmer, I agree with the farming metaphor!

What’s your next article, that we are just garbage men or those guys that clean your windows at traffic lights?

In this case, it’s just a comparison of all the different software development metaphors out there (and boy there are a lot of 'em – click the links in the first McConnell quote!). Everyone has a favorite; I favor the gardening/farming one.

I’ve been spending some time with Lean Thinking and I like their very general principles and complete lack of metaphor. I dismissed Lean for a long time because manufacturing isn’t like software. What I’ve learned since is mass manufacturing isn’t like software. Mass manufacturing is a bad idea with a lot of momentum, even in manufacturing.

Lean manufacturing is a completely different animal which resembles good (agile) software practices so closely I found it spooky.

That said, Mary Poppendieck’s paper which relates Lean to software is just ok. It piqued my interest, for which I’m grateful, but the paper draws some trite analogies which really irked me. Reading Lean Thinking and relating the principles back to software myself was good use of my time.

Ever experienced the reverse, wherein software development becomes the metaphor for things in everyday life?

I think it’s helped me keep my house neat.

Ever experienced the reverse, wherein software development becomes the metaphor for things in everyday life?

http://stackoverflow.com/questions/168805/what-real-life-good-habits-has-programming-given-you

So, would Easter eggs be the hemp of the software world ?

Jeff,

I really like your blog but it would be very nice if you had pretty urls. In any of your posts there are a dozen of links pointing to other articles and I tend to just hover to see the title, but instead get some number.html.

The gardening metaphor is nice. My only problem with is that it implies that you can see the whole thing (that is: the project/program) which clearly makes it easily manageable.

It seems that great deal of the difficulties of programming are due to us not being to see everything in it, let alone understand all the relationships between the moving parts. This does not relate only to the source code per-se. If your program takes information from an external service, a web-site, or a remote server, then these are also parts that make up the whole.

I first heard about software as a city in a talk describing the notion of a href=http://www.dreamsongs.com/Feyerabend/Breathturn2006.htmlUltra large scale systems/a. It strikes me as an excellent metaphor: you can’t plan a complete big city in advance. It is just too big. You also don’t want to do that: you’ll have a better city if you do it piece by piece, see its current status and react to it.

I guess I ought to blog about it someday, as it is my favorite metaphor.

It’s not like building a house (at least not anywhere with gravity), if it were I couldn’t have started, for instance, with the roof, then build the fundament, install electricity, add some walls, dig out the fundament, build a terrace, add doors, build doorframes. :wink:

The beauty of software is that it’s NOT physical you can do different parts in (almost) whatever order you like and still have something testable while doing it. You can even start using the software with some components still missing, and even replace the fundament (for instance the database) without destroying the construction.

We’ve all heard of growing software, but I’ve never heard it described as farming before. It’s a much better metaphor really, I like it.

If we’re being agricultural about it, I’d prefer ‘gardening’ over ‘farming’. Farming, for me at least, evokes something more macro-scoped and less hands-on. Gardening, for me, is someone on their hands and knees tending individual plants and small plots of earth instead of mass-planting acres at a time with machinery and mass harvesting with little to no attention to the individual plants involved.

‘Farming’ matches up with the no-direct-control disagreement, while ‘gardening’ leaves room for lots of direct involvement at a lower level with more attention to detail.

Bonsai tree growing sounds more like project management to me. You create the framework around which the project grows and you trim, bend, block what needs to be adjusted to direct the project over time.

Maybe a good extension of this gardening metaphor is actually home-garden-grown salad-making. You grow the fruits and vegetables (the methods and classes) in your garden (the framework) to produce the salad (the software package) you want. And then digestion would be the user experience. And so on… Maybe?

Not to be overly critical, but so what? :S

Except you can’t wear gardening gloves and type…