My take on bonsai
It might seem strange to attempt a connection between something as organic as a bonsai tree with something as constructed as software, but bear with me for the duration of this post. I hope you will see a few things you haven’t noticed before and gain some inspiration from it.
What are bonsai?
Bonsai (盆栽) is a Japanese word. The two characters mean “pot” and “plant”, so in the most basic sense a bonsai a plant in a pot. The Japanese art of bonsai came from China to Japan via Buddhist monks where it became an art of its own. It gained popularity in the West through Japanese immigrants to the United States and also spread to Europe and other parts of the world. Bonsai are potted plants. The very basics are those of gardening: placing your plant, soil, fertilizing, fungus, pests, seasons, pruning and constant care.
Personally, I picked up bonsai1 as a hobby when the pandemic started. I’ve spent a year studying in Japan in 2006 and we wanted to visit Japan again in 2019, but had to cancel our trip because of travel restrictions. Growing my own trees reminded me of my time in Japan, especially Kyōto in fall, and I’m grateful to them for getting me through these rough times.
My take on bonsai
What people see initially is probably the cutting, the bending and the wiring and how you change the “natural” growth of a plant. My personal view is that you try to bring out the best in a tree.
Very much like you prune roses so that they bloom again beautifully, you apply your techniques to trees you have planted in a pot in order to nurture a beautiful plant that grows healthily for many generations of humans who take care of it. The oldest bonsai are heirlooms that have been handed down from parent to child for centuries. There’s a white pine that survived the bombing of Hiroshima or a 1000 year old ficus in Italy. Those trees, their history and what they’ve been through over the course of their lifetime really inspires me.
In order to bring out the best in your tree, you have to give it constant care. Many trees need to be watered two or three times a day. Not too much water, not too little. You need to choose the right kind of soil and its components that suit the tree. Some need more moisture, some need good drainage, some need good aeration. There is no precise formula for a tree, but in building a relationship with it, you learn what it needs and to read some of its signs.
When you cut, you remove branches that cover others and take away light from the inner parts of the tree. You try to enable balanced instead of rampant growth. You choose the traits in a tree that you want to support, but you cannot make branches appear out of nowhere. You also cannot regrow the same branch that you’ve cut. That makes cutting one of the scariest things for new bonsai gardeners. There’s also no guarantee that a branch will appear in the place you thought. A bird might pick away at the sprout too and there goes your plan for that new branch.
You can bend branches in order to bring out a beautiful shape, but you can’t bend them all at once or they will break. You also cannot wire them too tight, or they’ll leave marks on the tree or damage the branch. If you don’t take the wire off in time, the same can happen. So you need to watch your tree and the wired branches closely every day during the growing season. A more gentle approach is to use the wires to hold the branch down instead of wrapping it with wire. You need to choose the right approach for the right branch.
So to me, the shape the tree ends up in is decided by both the tree and the bonsai gardener.
Software grows like an organism
What connects software and bonsai is the fact that it’s us humans who work on them. We determine the shape of the new growth, but it’s not us who decide where it grows. Instead, the growth in software is the choice of our customers and other external factors. We might have to upgrade the operating system of the servers or the base image of the container we’re using for deployment. Someone might discover a bug or a security flaw in one of the libraries we’re using and force us to pause what we’re doing and upgrade immediately.
Like with bonsai, you need to constantly keep your code cleaned up (pruning) and watch the duplications and structures that emerge and influence your architecture (wiring) to keep the growth in check. Software also takes the shape that resembles the way of thinking of the person working on it. It also often mirrors the structure of the organization it grows in.
I’m planning to write more about software and bonsai on this blog as inspiration hits me. I’ve already written a full article on it for Java Magazin (in German) if you’re interested. There is some overlap between the blog posts here and the article, but if you want to read a concise and structured take on this topic, I suggest you read the article.
I will try to elaborate and expand on the article here as things come up. Please check back.
I’m using bonsai as the plural form because the original word in Japanese doesn’t have one. You can safely say bonsais if that feels better to you. Having learned some Japanese, I chose to keep the original version that feels more natural to me. ↩︎