Illness, Age and Death: The Divine Messengers Of Programming

Nathanael
3 min readApr 9, 2021

In Buddhism illness, age and death are sometimes referred to as divine messengers because they can teach us stark truths about our world. We can ignore these messages 🙈, or fight them. Nevertheless, as far as I can tell, everyone is ill at times, ages, and eventually dies. The messages are said to be divine because understanding and accepting them can nurture a greater appreciation for life, more peace, etc. Good stuff.

I have found Buddhism to be a great source of wisdom, which can generally be applied at many, many levels. I write software for a living and so it’s been gratifying to find that some of these deep, intimate, existential teachings also apply to programming. Here are some reflections that help me find some peace of mind in the midst of a buzzing professional life.

Programs Are Subject to Bugs

Bugs can be seen as diseases of the software world. Plenty of the programs I’ve written or contributed to have contained bugs at some point or another. Most likely all of them have. You could argue that all programs of a certain size always contain some amount of bugs and I wouldn’t object. They can be very subtle, minor, inconsequential. They can also be bad.

Realizing that a program you’ve written contains a bad bug can be a very stressful experience. Anxiety crops up. Maybe some shame too. The heart tightens and beats a little faster than usual. I can become frantic, sending messages left and right, asking questions without really thinking. It’s as if my wife’s water just broke and I’ve got to deliver this fix NOW NOW.

And I have felt this way even in organizations that were clearly and explicitly not judgmental and completely understanding of the reality of bugs. Nobody blamed me but me. That alone was a heavy weight.

So take a breath and read these words carefully, me and anyone else who can relate: Programs are subject to bugs. They will inevitably happen. It’s not your fault, it’s simply the nature of programs. Knowing this will help you take appropriate precautions, but bugs will still happen. Discovering and fixing them is a normal, regular, integral part of the job. 🧘

Programs Are Subject To Aging

At any given time I have a mental list of functions, classes, frameworks, etc, that I would like to refactor. They feel old, poorly designed, inadequate, just wrong. I badly want to give them a facelift.

Usually there are more pressing things to do. But, every now and then, I’m able to go and work on one of those items. Oh boy, let me tell you, most of the time… it’s actually fine. Sure, maybe if I had to rewrite it from scratch I’d do it a little differently. But it works well, it’s not bad as I imagined, and sometimes it’s even better than what I thought to refactor it with.

Software is a fast-paced industry. Every day a new way of doing things. New languages, new tools, new patterns, new libraries. The programs we maintain can’t always be using the last awesome thing we learned. They won’t always be young and what we think of as pristine. They grow, they age. It’s their nature. We can make peace with the beautiful patchworks they become, and we can better care for them once we accept what they are.

Programs Are Subject To Death

Cue the momentous music. Yes, programs are also subject to death. So too are their components. Programming languages are subject to death. Programming patterns are subject to death. Frameworks and libraries are subject to death. Best practices are subject to death. Maybe you can see where I’m going with this.

Sometimes we hold on to some of these things a little too tight. We forget that dying is in their nature. Remembering it can keep us humble and help us appreciate the process of renewal that death enables.

So Java, if you would please just…

--

--