In the past I wrote quite a lot about the nature of software developer. There was a comparison to scientist, then engineer, martial artist and finally to something based on medieval craftsman, who combines all three to an extent. However, some time ago I’ve encountered yet another metaphor for our profession that felt quite appealing.
It’s the Software Gardener. The person that works not on an inanimate object, but on living, organic ecosystem that is constantly changing in unpredictable ways, and depends greatly on environmental factors. Let’s see what it’s all about.
Birds Are Chirping About the Gardener
The metaphor is not that common. I sit quite a lot on LinkedIn (probably more than typical software developer does and should) and I recall only one person that called herself that. Google finds about 5k results on “software gardener”, not much compared to 159k on “software craftsman”, 33M on “software developer” or 44M on “software engineer”. While the parallel to software craftsmanship was first drawn in 1992 by Jack Reeves, the parallel to gardening is not that young either. It was mentioned in 1999 in the same book that made craftsmanship popular. You can read about it in an interview with their authors from 2003. Then, there was the famous article from 2011 by Chris Aitchison. I’ve also found article from 2013 by Nicholas Tuck, and one from 2014 by Craig Berntson. Patroklos Papapetrou wrote great one in 2015, and authored the book titled The art of Software Gardening.
The Software Gardening Manifesto
Every software gardener believes and embraces the following:
- We treat software systems as gardens and code as flowers. Although we don’t disagree regarding software as a “craft”, we believe that software is a living and breathing “being”, not just an object, created using the best materials.
- We constantly mentor young developers and we share our knowledge at every opportunity. Junior developers are like flowers that need to be irrigated to blossom. We are the water, the sun, the soil, the fertilizer for every (young) software professional.
- Software development is a lot more than slinging code. We know the practices and we apply them effectively. We make use of the most productive tools and our skill-set includes both soft and technical skills. We also understand that our overall attitude is what defines us as software gardeners.
- We care about our code and this care, we show it continuously, day by day, every moment in every single line of code we write.
- We are not only able to respond to change but we are prepared about the endless – internal and external – environment reform.
- We treat customers as the people who will walk in our garden and smell our fragrant flowers. Having said that we engage them from the first day, to make sure that all their needs, requirements and expectations will be met.
Craftsmanship and Gardening Alignment
The common part is about mentoring, professionalism, communities, responsibility and basically being good at what we are doing. Articles on the subject tend to sketch a contrast between old school approach to software engineering and modern techniques and do not care for most of the time if you call them craftsmanship or gardening. The new ingredient however is this observation that software, like garden, is a living thing that grows by itself and needs to be watered, trimmed, fertilized and weeded. Otherwise it will quickly descent into chaos, or the natural state of being if you like. It’s mostly about dealing with many forms of technical debt, which is nothing new, but it kind of fits the metaphor beautifully. Medieval craftsman produces sword after sword, which may very well be different, but the craftsman does not much with the sword after it is in the hands of its owner. On contrary, software system is (hopefully) maintained after the initial release. Aside from new features, it must be cared about much like the aforementioned garden. Refactoring, cleaning, restructuring, tuning, removing harmful things, all that stuff.
Articles often mention the importance of environment. It’s not only about the craftsman tools and workshop, but about the amount of sun, wind, rain, temperature, humidity and all that stuff that affects our little organic ecosystem. The environment we work in, whether it is something close to the code like the build automation tooling, or something remote like sanity of the guy with the Excel file, has tremendous impact on the final result. As different climates around the world determines the shapes of gardens, different organization cultures determine the shape of software systems and mental health of its creators. Dessert is very different from tundra, and so is big investment bank from travel search startup. The garden is changing constantly along with the environment.
Where Is Your Software Tractor?
After reading few articles convincing me that I am the software gardener, I arrived at the article titled You are NOT a Software Gardener, which argues that we are in fact farmers, not gardeners, because farming is a serious business that needs proper plan, estimations and must make money in the end. Farmers are stiff professionals who go to agriculture schools, and gardeners are just hobbyists. Somehow, it was no surprise to me, that the author turned out to be project manager, not software developer. To my knowledge, gardener is a profession, and being able to create and sustain beautiful gardens requires a lot of skill, and often a big team of people. It’s just a different business, much as software development is different than car production. Unfortunately comment section under the article was closed after the first two entries…
Happy management, testing, development, science experiments, engineering, artistry, crafting, gardening, farming or whatever is that you do out there. See you next week!