If Software’s Like Farming, How Do I Certify Organic?

The abundance of software metaphors is amusing.

Before writing code, we used the archaic but apropos writing instructions. That is because writing instructions is literally what we did, uh… and still do.

If I used Twitter, and you followed me, you’d find that on most days,

Bob is slinging instructions.

Metaphors abound for the stuff that happens between digital nothingness and an app one can demo. A sampling from blog posts Why Software Development isn’t Like Construction and Tending Your Software Garden borrow metaphors from several industries attributable to various software luminaries (see table).

Metaphor Industry Remark / Attribution
Building an app Construction Software is soft, buildings aren’t (McConnell)
Creating an app Theology It’s a science (Gries, 1981); It’s an art (Knuth, 1998).
Growing an app Farming Hunt and Thomas, and others
Accreting an app Oyster Farming e.g., system accretion (McConnell); oysters make pearls
Driving an app Transportation like driving a car”” (Plauger and Beck)
Producing an app Entertainment like filming Snow White and the Seven Dwarfs” (Heckel)

Teams freshly introduced to agility might feel they’re divining an app; not unlike a dowser might try conjuring up Sahara groundwater from the nearly imperceptible twitches of his divining rod.

I am partial to the Farming metaphor. Are you? I have started using grow instead of build in professional conversations – whenever I can remember.

In keeping with the post Simple Design or Swiss-Army Knifing, I pledge to strive to minimize my natural tendency to over-fertilize (i.e., I will deny the impulse to shovel on piles of steaming manure – one method, one purpose).

If software is like farming, how much manure should we use?

4 thoughts on “If Software’s Like Farming, How Do I Certify Organic?

  1. I would rather say “throwing” than “growing”. Growing implies the software knows what to do given rich soil and a little water and all we have to do as farmers is plant it in a way that easy to harvest.

    Throwing leaves the control in the hands of the skilled potter. You can add or remove clay as the piece requires or with a twitch of the wrist destroy the work and start again.


  2. “If builders built houses the way programmers build programs, the first woodpecker to come along would destroy civilization.” –Gerald Weinberg


  3. There are lots of other metaphors that explain software development:

    * Trekking/Hiking: http://blogs.agilefaqs.com/2005/04/03/software-development-a-trekkers-way/
    * Driving on Indian Roads: http://blogs.agilefaqs.com/2007/07/14/driving-on-indian-roads-and-software-development/
    * Coking: This is an old metaphor, but very very relevant.
    * Rock Climbing: http://www.codinghorror.com/blog/archives/000830.html
    * Craft/Martial Arts (more on learning and feedback aspects)
    * Book Writing/Composition/Poetry
    * Painting – Iterative and Incremental

    And so on…


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s