Programmers Like Being In Control - Until You Hit Cancer, When You Aren't

May 22, 2009

My mom was just diagnosed with lung cancer, despite being a lifelong non-smoker. Although both my dad and her's smoked much of their lives, neither ever got the disease. We are still waiting for the oncologist appointment to get the details. At 78 lung cancer is common (although only about 15% happen to non-smokers) but although there are many treatments depending on the precise variety and phase, the prognosis is rarely good.

As a programmer I am always confident in my ability to code anything, debug anything broken, find some way to make things work. Programmers in general like to be in control, our comfort zone increases the more source we can look at, the better tools we have, the more expressive and productive our languages, frameworks and environments are, and the more we can manage how the code is written. It's when something gets in our way, keeps us from doing it the best way we known how, or simply impedes our progress that we get antsy, angry or antagonistic. We live in a world of our own making, where we can actually change everything to suit the coding need. Create a new language, write a new framework, even code a new operating system if necessary. Of course the reality is there will be limitations of money, time, management, etc. Still we linger in our desire to make things work in whatever manner we desire.

In facing her cancer, I look at an enemy I can do nothing about. The source code is mostly unknown or hard to decipher (understand what DNA really does is like comprehending 100,000 pages of APL code, character wrapped) , the debuggers are terrible and expensive, gray areas abound, there is no way to reboot, you can't easily make changes to see what happens without possibly losing the patient. Biological systems are oddly non-logical; it's like every copy of the program is slightly different. Sometimes you have no clue what is actually wrong. In my mom's case she had 0 symptoms until a few weeks ago, and then only what appeared to be a simple cold. A program that runs perfectly for 78 years and then crashes? No such thing.

Feeling helpless as your code crashes is usually followed up by figuring out what went wrong. But with life it's more like seeing your plane's wings fall off and knowing you can't stick them back on real quick, or wait until you hit the earth and start up the debugger.

I enjoy watch House on TV since the stories are based on real doctor's experiences (there is a diagnostician running the show, although the timeframes are often compressed) and always thought diagnostics was like debugging code, but when you face real people the analogy loses its punch. Of course if I was a doctor I would know more (I started college as pre-med but made a D in anatomy) but even talking with friends who are doctors, there is such a huge body of things that can go wrong, and limited ability to always get the real problem, that sometimes you have to hope for luck.

At least with my mom the diagnosis is fairly common and understood. My dad died of hemochromatosis, which is where the body piles up iron in all the organs until everything shuts down. Before the mid-80's many doctors didn't even know it was a problem or would recognize it; his final doctor was a recent graduate and knew its signs but it was too late. Today it's one of the easiest diseases to treat if you discover it, basically regular blood-letting. In his case the lack of knowledge was fatal. If I have source code I can find a problem I never knew existed, if it's closed-source I can at least ask someone who does have it (and hope they want to help). In medicine it's like much of the code is encrypted or lost.

So here I am not in control and have to depend on other's ability and on medicines still primitive solutions to cancer. Cut it out or blast it with radiation and fatal drugs; like attempting to build a transtator with stone tools and bear knives (Spock quote). In my almost 28 years of professional programming I've seen generations of changes happen in our industry but the pace of medicine never moves at that same speed. Most people who get lung cancer will never see 5 more years. My code in Deltagraph has now been continuously maintained for more than 20 years now and has to be incredibly nasty by now, yet it still works even though the original development team wanted to chuck it after 5 years. There are Cobol programs still in use after 40 years or more. Sure people live longer than that but not with the same productivity and with constant updating.

So meanwhile my sister (a VP at IBM) and I will see what happens and how we will support our mom. Coming from a profession were anything is possible since we can control our own universe it will be hard to have no control over anything but have to continue on faith, hope and love.