During his excellent software craftsmanship session at Lean Agile Scotland, Sandro Mancuso made an analogy between software maintenance and gardening. A garden needs constant attention – lawns need cut; flower beds need weeded; old and diseased plants need replaced. As all you gardeners out there know, I could go on. The list is long and each season brings its own distinct tasks.

http://farm8.static.flickr.com/7248/7697781466_ea258e8fab.jpg

It got me to thinking about a bus journey I took many years ago from Inverness to Dundonnell. I got into conversation with a young woman (as one does) and she introduced me to a new term: permaculture. Permaculture borrowed widely from earlier practices, such as organic and no-dig, and synthesised a different way of thinking about horticulture. Rather than fighting against nature, work with it. Plant ground cover to suppress weeds. Use mulches to avoid the need to dig. Zone your holding so that the areas you visit most are closer to your house. Maximise the utility of every design decision.

Adopting permaculture is not easy. It requires a change of attitude. There are new skills to acquire and master. Perennials require less input than annuals, so a re-examination of your cropping plan is necessary. And sometimes you may decide to keep doing things the old way for specific crops.

A lot of parallels could be drawn between permaculture and various movements within the software development community, but I’m going to restrain myself. The point I’d like to make is a simple one. Regular, tedious effort is not a given in gardening or software development – it is the result of choices made. Once you know there’s a choice to be made, then you’re free to make an informed decision. If you don’t know there’s a choice then you’ll probably keep on weeding, digging and cutting the lawn, whether they make you happy or not.