Readers: 0 | Updated: 2008

Tending Your Software Garden

Translate Into:

Software: do you write it like a book, grow it like a plant, accrete it like a pearl, or construct it like a building? As Steve McConnell notes in Code Complete 2, there's no shortage of software development metaphors:

A confusing abundance of metaphors has grown up around software development. David Gries says writing software is a science (1981). Donald Knuth says it's an art (1998). Watts Humphrey says it's a process (1989). P. J. Plauger and Kent Beck say it's like driving a car, although they draw nearly opposite conclusions (Plauger 1993, Beck 2000). Alistair Cockburn says it's a game (2002). Eric Raymond says it's like a bazaar (2000). Andy Hunt and Dave Thomas say it's like gardening. Paul Heckel says it's like filming Snow White and the Seven Dwarfs (1994). Fred Brooks says that it's like farming, hunting werewolves, or drowning with dinosaurs in a tar pit (1995). Which are the best metaphors?

I think we're leaving one metaphor on the table which more accurately reflects the way software is built in the real world: flail around randomly and pray you succeed by force of pure dumb luck. Sometimes it even works. Not very often, but just enough to confuse people who should know better into thinking they're smart, when what they really were is lucky.

The answer, of course, is whichever metaphor helps you and your team get to the end of the project. Personally, I see them as more of a battle cry, a way for a team to communicate a shared vision and a set of values. They're heavy on imagery and metaphor, and light on specific, concrete advice.

Even as Steve McConnell argues that most software development metaphors come up short, he quite clearly picks a favorite, and spends quite a bit of time defending his choice. It's not exactly a secret, as it's in the subtitle for the book: Code Complete: A Practical Handbook of Software Construction.

As much as I respect Steve, my software project experience to date doesn't match the controlled construction metaphor. I agree with Thomas Guest; software is soft; buildings aren't. I'm more partial to the model that Andy Hunt and Dave Thomas promote, what I call tending your software garden.

American Gothic, a painting by Grant Wood

Programers as farmers, if you will.

All the best software projects I've worked were, for lack of a better word, alive. I don't mean that literally, of course. But the software was constantly and quite visibly growing. There were regular, frequent release schedules defining its evolution. There was a long term project commitment to a year out, five years out, ten years out.

To me, the parallels between farming and software development are strong and evocative. Steve disagrees.

The weakness in the software-farming metaphor is its suggestion that you don't have any direct control over how the software develops. You plant the code seeds in the spring, Farmer's Almanac and the Great Pumpkin willing, you'll have a bumper crop of code in the fall.

To be clear, all these metaphors are abstract and therefore heavily subject to interpretation (and/or useless, take your pick), so I don't want to get too wrapped up in defending one.

That said, I disagree with Steve's dismissal. The strength of the farming metaphor is the implied commitment to the craft. Farming is hard, unforgiving work, but there's a yearly and seasonal ritual to it, a deep underlying appreciation of sustainible and controlled growth, that I believe software developers would do well to emulate. I also think Steve was a bit unfair in characterizing farming as "no direct control". There's plenty of control, but lots of acknowledged variables, as well -- which I think more accurately represents the shifting sands of software development. Farmers do their best to control those variables, of course, but most of all they must adapt to whatever conditions they're dealt. Next season, next year, they know they'll be back with a renewed sense of purpose to try it all again and do better. Not so coincidentally, these are also traits shared by the best software developers I've known.

In particular, the rise of the web software development model has made the farming model more relevant. Where traditional software like Office might go through a bunch of monolithic, giant construction project updates every two to three years -- from Office XP, to Office 2003, to Office 2007 -- websites can be deployed far more often. Seasonally, if you will. Some websites even "harvest" monthly, organically growing new features and bugfixes each time. The guys at 37Signals apparently noticed this, too.

It recently dawned on me that software grows much in the same way that plants grow. New features are the flowers of the software world. And just as most plants aren't flowering all year long, software isn't sprouting features all year long. There's flowering season. There's new feature season. There's infrastructure season.

Sometimes software is working on its roots. Bolstering its infrastructure. It's growing underground where the public can't see it. It looks like nothing's happening, but there’s really a lot going on. Without those roots new features can't sprout.

And sometimes it's rest time. Plants rest in the winter. Software often rests in the summer (it's too nice to work too hard in the summer). Everything can benefit from a deep breath, relaxation, and sleep. Chaotic constant growth and change doesn't make room for order and organization. Growth requires new energy and new energy requires rest.

Another thing I've noticed is that tending to websites, which usually have community features and user-generated content at the forefront, feels a heck of a lot like weeding your garden. You grow a lot of content, but not all of it is exactly what you had in mind.

I scrutinize every comment, and I remove a tiny percentage of them: they might be outright spam, patently off-topic, or just plain mean. I like to refer to this as weeding my web garden. It's a productivity tax you pay if you want to grow a bumper crop of comments, which, despite what Joel says, often bear such wonderful fruit. The labor can be minimized with improved equipment, but it's always there in some form. And I'm OK with that. The myriad benefits of a robust comment ecosystem outweighs the minor maintenance effort.

And when you don't weed your garden? The weeds threaten to choke out your crops. Eventually, your software garden looks neglected, and then abandoned.

web weeds

As Steve says, some software development metaphors are better than others. But when it comes to web development, at least, you could certainly do a lot worse than tending to your software garden.

[advertisement] Lighthouse — taking the suck out of issue tracking. Developer API. Email integration. Github integration. Used by thousands of developers and open source projects including Rails, MooTools, RSpec, and Sproutcore. Free for Open Source projects.

From The Blogs

Coolbuzz

2008
Addictive face morpher helps you kill valuable office time
I just spent the last three hours adding ungodly details to my boss’s already ungodly face with this amazing new Morphases Editor that lets you morph people’s faces. And I found that it was really... 查看全文

Download Squad

2008
Should software be native or web-based?
Filed under: Business, Internet, Features, Windows, Macintosh, Blogging, E-mail, Office, Productivity, Web services, Apple, Google, Microsoft, Shareware, Freeware, web 2.0How many of the applications ... 查看全文

Persistence Unlimited

2008
15 Inexpensive or Free Software Tools for Goal Setting & Success
Back when home PCs were still new, I remember a group of friends sitting around a table laughing about how PCs were just “overpriced checkbook balancers”.  Most casual users, before the Internet becam... 查看全文

Success Begins Today

2008
5 Quick Tips For Word 2007
When you first open Word 2007 for the first time, you’ll probably be surprised by the changes that Microsoft made to the user interface. Instead of the usual icons and menu selections, you are present... 查看全文

Socyberty

2008
Five Ways to Cheat French Class
You can cheat French class or any other foreign language class for that matter by using a free foreign language translator online. Ask and any high school student who has to study a foreign language w... 查看全文

OnStartups

2008
Why You Should Attend Business of Software 2008 In Boston
If you read this blog, there's a pretty good chance you're somehow involvedin the business of software. By that, I mean you are trying to (gasp!)make money in the software business. If that's the case... 查看全文

Download Squad

2008
Educational software for your computer
A reader dropped us an email recently, requesting information on where to find educational software for elementary and middle-schoolers. 查看全文

Product Reviews Net

2008
Photoshop Express Reviewed vs. Google’s Picasa
Early today peter reported on the free web-based Photoshop Express that launched today as a beta, this photo software is going to be a real big hit and it’s direct competition will be Google’s Picasa.... 查看全文

Internet Observation

2008
Google-Kingsoft Powerword
2 p.m., May 8th, Beijing time. Kingsoft and Google, the biggest search engines company in the world, jointly held a press conference to officially declare the release of their joint-brand Google-Kings... 查看全文

b5media Technology Channel Feed

2008
Photoshop Express the next step in online photo editing or the next step in free software? [Maple Leaf 2.0]
There has been a lot of discussion about the new Photoshop Express (this is just a sample from last night):Adobe Launches Hosted Services With Photoshop Express - GigaOM Adobe Unveils Webtop Version o... 查看全文
More Articles