5 years ago I started to follow Buddhism as a way of living. I don’t consider it a religion, so I’m not identifying as a “Buddhist”. There are more formalized ways to embrace this lifestyle, like taking vows and joining a sangha – something that will equal in the West with “becoming a monk” – but I’m not there. I still have a job, I live among people and, generally speaking, I pay my rent by writing code.
And with that, I’m rapidly segueing into the topic of this blog post. After reading sutras, practicing yoga and various forms of meditation, I realized I internalize all the concepts better if I “translate” them in a language that I’m more accustomed to. Like, for instance, the geek language. That’s not a typo, I didn’t want to write “Greek”, I actually wrote “geek”.
The “geek” language is something that programmers, or people into information technology (computer scientists, hardware engineers, software developers, you know, the usual nerds) use to understand each other.
What follows is a translation of some Buddhist concepts into something – hopefully – easier to understand for people who finish sentences starting with “If” by rapidly saying “then, else”.
The Language versus The Framework
Let’s start with what Buddhism, as a way of living, is. I already told you I’m not considering it a religion – or at least I’m not practicing it that way.
As programmers, we all know to code in a few languages. But we also know the benefits of working with some frequently used building blocks, which are making the task easier. Usually, these collections of building blocks are called frameworks. Think CodeIgniter, for PHP.
That’s how I see Buddhism, as a framework for life, a collection of building blocks which are making my life both easier and more meaningful.
Even if we do use a framework, we will still have to do the work, we will still have to code. The framework will just barely make our life easier to understand, that’s all.
Impermanence, Or The Unavoidable Obsolescence Of Your Source Code
You code will become obsolete at some point, no matter what. There will be a new library that needs updated, a newer, improved version of the compiler, some new hardware advancement that you have to take advantage of, something will have to change at some point and this process, my friend, is endless.
Nothing stays the same. You may get the illusion that your UI is at its best now, but in two years you’ll get bored by it. Scratch that, you may get bored in two weeks, if you’re like me.
In Buddhism, this is called “impermanence”, or the understanding that nothing, ever, stays the same. We may live with the illusion that it stays the same, but, just as our UI has to change, the reality will relentlessly flow from one second to other, no matter how hard we cling to it.
There Is No Single Reality – Or The Infinite Number Of User Interface Constraints
Your app is never exactly as you see it. It will always be molded to fit in the user’s device. You may hope that your UI will gets across as accurately as possible, just as you hope your words will mean exactly what you want when you talk to someone, but truth is people will never understand you the way you expect.
They will understand you based on their current language skills, life experience, prejudices and cultural biases. They will literally translate what you say into their own, specific language, that only they understand.
If you ever had to write a mobile app, then you know what I mean. There are countless UI constraints, screen sizes and font renderings quirks that will make you crazy. At the end of the day, you just have to do your best, cross your fingers and hope they will be able to use it, somehow.
This touches briefly on the Buddhist concept of “emptiness” (which is significantly more complex than that). “Emptiness” means that nothing is really fixed, and there is no single, unique point of view. Emptiness is the source and the fabric of all that we experience, and since it pervades everything, every individual reality is something different, unique, something that you experience and produce at the same time.
The good news is that you can actually modify your reality, if you want to improve it.
The bad news is that you can actually modify your reality, if you want to make it worse.
Karma Is Built One Commit At A Time
The dominant interpretation of Karma in the Western culture is “eventually, justice will be made”, something like “there will be a judgment day and everybody will have to pay for their deeds”. While this is technically true, it is also incomplete. In the sense that there is no “external” judge that will analyze your activity and reward / punish you.
Karma means simply “action” and combined with emptiness and confusion, it can be a real bitch. Why? Well, since you experience and produce at the same time your reality, your actions (karma) will tend to crystalize in habits, and, eventually, in mindless (as in auto-pilot) activities. If you do something consistently, then, at some point, you will do that with less and less effort, and even without thinking that you’re doing it. Think how easy it is to use keyboard strokes to open your favorite editor, indent code, or copy and paste. Before becoming these auto-pilot keystrokes, those were all conscious actions, that you repeated on and on and on, until you’re not even realizing you’re doing them.
If your actions are “good”, then you will produce “good” outcomes on auto-pilot. You will literally have a hard time avoiding all the good stuff that will come into your life.
But if your actions are toxic (and by that I mean actions which are harming others – or yourself – in a consistent way) then the outcome will also be hard to avoid.
So, knowing that Karma is just consistent action crystallized in auto-pilot activities, if you “zoom out” enough, then you will understand how things like breathing, or your heart beats, are caused by “karma”. They are actions that you simply can’t avoid doing now, because their inertia, combined with emptiness, is so strong (I know, it’s a bit hard to understand how your body is the result of your past actions, because it requires a really big “zoom out”, to the point of reincarnation, but this is a central concept in Buddhism too).
Zooming back in to our programmer lives, each commit you push is actually karma, and will generate consequences. If your code is good, then the outcome will be positive. You will continue to write even better code, people will respect you and you won’t be made into a bad meme on the Internet. If the code crashes a lot, or harms the user’s computer, then the outcome will be, obviously, not good: your repo will be a mess and nobody will want to do pair programming with you.
To continue in the same language, this article is just the initial commit of my ideas about “translating” Buddhism into “geek”.
Pull requests welcome.