A cure for what ails you
I flew back from Richmond on Friday. There are many things I dislike about flying, but they are all redeemed by flying giving me the ability to read without interruption (be it from internal or external stimuli).
I finished The Screwtape Letters, which I had been working on throughout the week, and since I had more time I ended up going through Camper English’s history of the gin and tonic which I had downloaded a year or so ago but never cracked open. (Or whatever the digital equivalent of cracking something open is.)
It was a delightful little book that answered a bunch of questions I didn’t really realize I had (What is quinine? Where did carbonated water come from?) and traces the arc of the gin and tonic from its humble roots as a dilution of poorly-understood Peruvian bark meant to ward off malaria into the quintessentially British (and/or yuppie) highball it is today.
A curse of mine is that I can squint at any sufficiently interesting text and interpret it through the lens of software development. Take this passage:
Early medicine wasn’t exactly super scientific. Diseases were characterized by their symptoms rather than their underlying causes. So for both a hangover and brain disease you’d be suffering from headache. That’s why malaria was locally named for its symptoms and the place you got it, like Chickahominy fever, rather than the actual cause of said fever.
…
Early malaria cures included:
- Bloodletting and blood drinking
- Limb amputation
- Amulet wearing
- Application of split pickled herrings to the feet
- Consumption of viper’s broth, crab’s eyes mixed with radishes, wolf’s eyes, cabbage, or brandy mixed with cat blood and pepper
- Throwing a patient headfirst into a bush
- The embrace of a bald-headed Brahmin widow at dawn
- Sucking on cobwebs
- Reciting Homer’s Iliad to the patient
- Mixing the patient’s urine with flour and throwing that on an anthill
You caught that part, too, right? Diseases were characterized by their symptoms rather than their underlying causes. Isn’t this how we think about software?
We look at buggy code and say “there are not enough tests”. We write a prescription of “more tests!” instead of looking at the circumstances that caused the tests to be omitted and the poor code to be written.
We look at neglected code and say “someone should update this!” We write a prescription of “more time!” instead of looking at the incentive structures that cause us to neglect software that isn’t immediately useful or vital or profitable.
We look at slow code and say “someone should speed this up!” We write a prescription of “faster code!” instead of understanding the lack of architecture around performance testing.
We look at unreadable code and say “someone should clean this up!” We write a prescription of “refactor this!” instead of internalizing the gap between our understanding of a component at a business level and our understanding of a component at a software level.
Everything is downstream from something else, even gin and tonics. It is tough to swim upstream — I have trouble shaking the impulse of “okay, let’s write a regression test and then fix the thing and then move on with our day” — but otherwise we’re treating malaria with cobwebs.
These are not new lessons, nor are they revelatory ones: but they are ones that I find myself learning again and again and again.
Happy Sunday.
I hope you avoid being thrown headfirst into a bush.