What Does Buddhism and Software Engineering Have in Common?
Non-obvious, practical perspectives
Hiya everyone!
If you like what you read, please hit that like button, share it, or leave a comment so that the Substack knows to let more people read it. Please suggest a topic for a future essay here!
I have recently read No Death, No Fear by Thich Nhat Hanh (notes after reading.) He was a Buddhist monk and peace activist who significantly influenced Western practices of Buddhism. He was the main inspiration for "engaged Buddhism."
To be clear, I am not religious and will not preach Buddhism to you; it surprised me how many relevant practical things we can draw from Buddhism.
Impermanence
Nothing is permanent in life; the same is true in software. The new code becomes old; the old code gets deleted or rewritten. The line of code you wrote today might be rewritten tomorrow. And that's okay.
We should focus on developing isolated, resilient and adaptable solutions and preparing for the impermanence of technologies, frameworks, and best practices. We should code for obsolescence.
Nothing is Born, Nothing Dies
It is an odd concept on the surface - there is no end and no beginning; there is no birth and death; there is no coming and no going. There is only manifestation - if the conditions are sufficient, things will manifest.
No application or code is truly born or dies; it merely transforms from one state to another — through updates, refactoring, or repurposing. Once you understand that, it can help you approach engineering with a sense of continuity and respect for the "legacy" and "bad" parts of the code. New code is legacy code - a continuation, part of a neverending cycle of change.
If you ask, "But what was before the code existed?" a Buddhist answer will be, "It has always existed; the conditions (business & others) were sufficient for it to appear."
In the same way, we can very tangibly "feel" the presence of people who wrote the code before us (Git history) - they never "die", and they are always with us.
No Self and Interconnectedness
A cloud cannot manifest without water, a tree cannot exist without oxygen, a fire cannot exist without oxygen, and you cannot manifest without your parents, grandparents, great-grandparents, etc. We are all particles from the cosmos, so we are a part of the cosmos. But we are also our own thing.
Software is the same - there is no new code without "legacy code"; no code without a larger ecosystem of software, hardware, users and business, and no code without people.
Understanding the interconnectedness will help you appreciate the broader impact of your work. Understanding the "no self" will help you be an engineer in "your own right" and collaborate and work with others.
Personal Growth and Problem-Solving
Buddhism believes that fanaticism and intolerance create suffering, so it suggests not to be idolatrous about or bound to any doctrine, theory or ideology, even Buddhist ones. They say, "If you get caught in one idea and consider it to be "the truth," then you miss the chance to know the truth."
Approaching problems with an open mind, free from attachment to specific outcomes or technologies, can lead to more creative and effective solutions. Detaching from preconceived notions and fixed ideas can lead to continual learning and personal growth.
Happy Coding! 🧑💻