Why Zen?

Making software can be stressful. Resources are always limited and resources are always considered rare — we can’t escape living in an economy after all. Yet can we escape stress?

This is where our quest starts. We are looking for something, maybe it's a theory or philosophy, maybe a practice — whatever it is, our goal is to find a way to build software in calmness.

One of the seminal books of Zen Buddhism in the West is Zen Mind, Beginner's Mind, by Shunryū Suzuki, the founder of San Francisco Zen Centre and of Tassajara Zen Mountain Center, the first Zen Buddhist monastery in the West. While reading this book, in addition to calmness and peace, I identified many ideas and practices — more than I imagined — that I already know are conducive to high quality software making.

"In the beginner's mind there are many possibilities, in the expert's mind there are few."
— Shunryū Suzuki, Zen Mind, Beginner's Mind

The book's title refers to the fact that a beginner's mind is much more open to new possibilities than an expert's. A beginner does not know what to expect, so they expect anything. Yet an expert is limited. There are very few unknown unknowns in the mind of an expert. In software, it's extremely rare that all unknowns are known. Adding to software’s inherent complexity, our industry is developing so fast that the beginner's mind is not only a good practice, but possibly even a required one.

“If your practice is good, you may become proud of it. What you do is good, but something more is added to it. Pride is extra. Right effort is to get rid of something extra.”
— Shunryū Suzuki, Zen Mind, Beginner's Mind

Pride alludes to ego. Ego is correlated with lack of empathy, arrogance, difficulty in being part of a team — all of which lead to low quality software making.

“If you lose the spirit of repetition, your practice will become quite difficult.”
— Shunryū Suzuki, Zen Mind, Beginner's Mind

Laziness to do the same thing over and over again is sometimes hailed as the indispensable trigger for a programmer to automate something; and thus add yet one more tool in their inventory. However, repetition is important to any practice and we can't deny it in software building too. Doing the same thing once is our introduction to it; doing it twice and more is how one understands and feels it.

“When we say something, our subjective intention or situation is always involved. So there is no perfect word; some distortion is always present in a statement.”
— Shunryū Suzuki, Zen Mind, Beginner's Mind

The limits of language are all around us. ”There is no perfect word” — because many times we are looking for exactly one, i.e. the name of a variable or function.

“If you take pride in your attainment or become discouraged because of your idealistic effort, your practice will confine you by a thick wall.”
— Shunryū Suzuki, Zen Mind, Beginner's Mind

This quote presents pride and pefectionism as two poles of the same dimension. On the one hand, we already established pride as problematic due to its connection with ego. On the other hand, perfectionism is also problematic in the form of discouragement due to lack of the ideal result — in a way, also connected to ego.

“In order not to leave any traces, when you do something, you should do it with your whole body and mind; you should be concentrated on what you do. You should do it completely, [..] you should burn yourself completely, like a good bonfire, leaving no trace of yourself.”
— Shunryū Suzuki, Zen Mind, Beginner's Mind

In this last quote, Shunryū Suzuki encourages the Zen student not to leave any trace when they are doing something. I associate this to a complete focus on the matter at hand, so much that there is not even a self. In what we call the state of flow, there is no self, is there? At least I don’t think I feel it.

Finally, there is something else in Zen that makes me think of software: its commitment to simplicity and elegance. Shunryū Suzuki makes the case that Zen is all about zazen, the meditation practice in which one just sits. No intricate theories or abstractions, no arguments or explanations, nothing complicated; only one thing that cannot get more obvious: just sit.

In a bit more than three weeks, Friday 15 September, we’ll be participating at Torch and Zen with the intention of building high quality machine learning-enabled software while escaping stress. We’ll be doing just that and nothing else. It will be challenging but let’s follow Shunryū’s tenets and not get discouraged if we fail.