Once Upon a Time I spent 4 nights a week making pasta and all day Saturday selling it. I took cleanliness seriously. First and foremost: I was making food for people to eat and I wasn’t trying to get anyone sick. …but also, making pasta by hand is a decidedly messy business and I was doing it in my home kitchen. The floors were a problem - seriously, flour gets everywhere - but the counter was my focus since that’s where the actual food touched.
I had a routine. I would clear-and-clean the entire counter before starting, make as many balls of dough as I could in 4-5 hours, and then clean the entire counter again. Clean Before, make pasta, Clean After. Every Time.
One night I Cleaned Before, I made dough, I Cleaned After.
I went to the bathroom.
I walked back into the kitchen to grab a beer.
My wife’s iPod was on the counter that I had just Cleaned After. I actually took a picture of the goddam thing and sent it to my business partner. “Do you see the conditions I have to work under?!” (Side note: I may be dating myself here a bit - who remembers iPods? Also: I am still happily married because I am a model of restraint.)
Fast forward 7-8 years. Something occurs to me while rummaging through a bathroom drawer for the toothpaste; specifically: why on Earth am I rummagin g for a thing I use multiple times a day I take stock of the drawer. In it, there is one thing I use daily (to wit: the toothpaste), a couple of things I use a few ? times weekly/monthly (Q-Tips, nail clippers, &c), and 437 things I do not and will not ever use.
Do Androids Dream of Electric Sheep? introduced me to the concept of “kipple” - a term for the entropy of human life. There are some tenets of kipple that I only vaguely recall (it’s been a while since I read the novel) - kipple attracts other kipple, kipple pushes out non-kipple, kipple can’t be stopped/can only be locally-contained, etc.
Software and systems work like this. The more complex the software, the more complex the system, the more pervasive the kipple. This isn’t quite the same thing as technical debt, at least not in the traditional sense. I’m not talking about making a conscious decision about a technology tradeoff that can be “paid down” in the future. I’m not even talking about the kinds of things with a “// TODO” or even an outright “// HACK” comment. I’m talking about a long, slow, and above all unintentional decline into disorder over time.
So what can be done?
Well, we could do nothing. This is an attractive option in that it requires zero effort…but sitting around waiting for the heat death of the Universe doesn’t seem terribly productive. Also, most of the people reading this probably make a living delivering software in one way or another and probably appreciate having a roof over their heads, so this is kind of a non-starter.
We could simply ignore it - accept that there is no solution, embrace entropy, and move on. I don’t like this much. Sure, it requires no effort up-front…but in the meantime you still have to find the toothpaste.
We could build systems to contain it, ala PEP8. I’ve often said of Python that while I may not agree with its opinions I can appreciate that it’s opinionated. The astute reader might point out the irony of using software (which is itself kipple-ful) to de-kipple other software, but this at least seems like a step in the right direction. (Related: Remind me to tell you an amusing anecdote about PEP8 some time.)
…which ultimately leads me to: be vigilant. Combat entropy through conscious effort. Understand that you cannot eradicate the kipple “once and for all”, but you can at least keep it in check in your corner of the world. In short: don’t rummage for the toothpaste, clean out the fucking drawer.