I was at a BBQ the other day. It was one of those wonderful occassions where people stick around into the wee hours of the morning reminiscing and sparking up conversations with new friends. During one of these conversations I was explaining that developers at 8th Light are called “Software Crafters”, and was pressed as to why the prententious moniker, “I mean you guys just build software right?”. “Yeah,” I explained, “but it’s about the quality of the code yada yada yada.” My new friend just shrugged and changed the topic.

I thought about it more and decided to people outside the industry, the term “crafter” and even the idea of craftsmanship is abstract, hard to grasp, and doesn’t really jive with preconceived notions about the industry. From what I can gather, and based on my own memories of my own assumptions about the industry, software is viewed somewhat similarly to an architect. We design, we build, we move on. It’s not the worst analogy, but I think it really fails to properly convey the color and richness of our line of work*.

In 1986, Frederick P. Brooks suggested in No Silver Bullet that the software development was in need of a shift of metaphors away from building software, to growing it.

The building metaphor has outlived its usefulness. It is time to change again. If, as I believe, the conceptual structures we construct today are too complicated to be specified accurately in advance, and too complex to be built faultlessly, then we must take a radically different approach. Let us turn nature and study complexity in living things, instead of just the dead works of man. Here we find constructs whose complexities thrill us with awe. The brain alone is intricate beyond mapping, powerful beyond imitation, rich in diversity, self-protecting, and selfrenewing. The secret is that it is grown, not built.

The growing metaphor resonates with me and so I think it makes sense to start thinking of software crafters as professional growers – digital gardeners. If the idea of craftsmanship fails to gel with what people think about the industry the idea that we are gardeners is probably even more jarring. That said, I think it makes it easier to describe and comprehend after being imbued with a bit of context.

Let’s try and replay that conversation from the BBQ, but this time explaining software craftsmanship using the analogy of a gardener.

Friend: “I mean you guys just build software right?” Me: “Yeah, but I think there’s a misconception about building software actually means.” Friend: “Ok” Me: “Well, it’s not like software is this static thing. It’s not like a permanent structure that’s going to be around forever If it was, it would become very quickly outdated. I mean just think about how much the web has changed from it’s inception to what it is now. Imagine if that software didn’t evolve.” Friend: “Yeah, ok so build might not be the right word.” Me: “Yeah, I think of us more like gardeners.” Friend: “Huh?” Me: “Well, gardening is primarily about cultivation and maitenance. It’s a daily effort to give your plants what they need and groom them to grow the way you want. Software, is growing all the time, not just in volume, but also in complexity. We tend to that and make sure it doesn’t completely overtake our garden” Friend: “Ok, that’s kind of weird but I get it. You guys really care for the well being of your code, you recognize it as this ever-changing, evolving thing and construct, and maintain it with that in mind” Me: “Yeah, more or less”

We can debate the if that kind of conversation would ever play our remotely close to what is above, but I think as far as metaphors go, the fit isn’t bad. Gardening, like software, is a craft but it’s a specific representation of the abstract idea of craft, and one I think people can take hold of a bit more firmly. The metaphor isn’t perfect, no metaphor is, but I think it elegantly encapsulates both the nature of software as a living, changing, moving thing, and the nature of a software crafter as an individual whom makes it their business to tend to these sometimes fragile and sometimes overgrown forms.