introducing randomness into chaos: culture, oblique strategies, and tarot for engineers
In Tarot for Hackers, Christine Dodrill lays out a method of applying traditional cartomancy as a tool to help one debug. It's a cool post—go read it. Back now? The stereotypical response one might imagine: it's just random; why would you try to find meaning in randomness? Why would you introduce a random element upon which to perform exegesis? Especially in the context of debugging, when you have limited clues and an intrinsically imperfect understanding of the context, when you're already struggling to suss out what is signal and what is noise, why would you give yourself this random bit of noise to ponder?
I think there's a compelling answer.
Scott Alexander has written a very interesting review of the book The Secret of Our Success (by Joseph Henrich). The review is worth reading, and it's gotten the book on my queue, but here I'll just excerpt a small part.
A certain skepticism is warranted venturing into this; pop anthropology is a dangerous game. The status of the Removed Anthropological View is a self-assigned superiority that it's too easy to assume in one's normal human relations. You exist within the strictures of society; I have awareness of these strictures and therefore have an existence outside of them as well. (See also: cognitive bias, logical fallacies, anything psychoanalytical...) But if we give up all pop social science, none of us will have any interesting anecdotes at parties anymore, so best to strike a careful medium.
Alexander cites Henrich citing the Naskapi foragers of Labrador, Canada: If a hunter shows any bias to return to previous spots, where he or others have seen caribou, then the caribou can benefit (survive better) by avoiding those locations (where they have previously seen humans). Thus, the best hunting strategy requires randomizing. Can cultural evolution compensate for our cognitive inadequacies? Traditionally, Naskapi hunters decided where to go to hunt using divination and believed that the shoulder bones of caribou could point the way to success. To start the ritual, the shoulder blade was heated over hot coals in a way that caused patterns of cracks and burnt spots to form. This patterning was then read as a kind of map, which was held in a pre-specified orientation. The cracking patterns were (probably) essentially random from the point of view of hunting locations, since the outcomes depended on myriad details about the bone, fire, ambient temperature, and heating process. Thus, these divination rituals may have provided a crude randomizing device that helped hunters avoid their own decision-making biases.
That is: Divination can introduce something close to true randomness into decision-making where a random distribution is better for the society as a whole than the aggregation of many individuals' careful choices. Okay, sure, you may say. But that's an aggregate benefit. For individual engineers? For debugging? Can a random factor really bring us closer to understanding what may seem like chaos?
There's some “test of creativity” where you list all the uses you can think of for an object. Everything you can do with a brick: go! Your list is then rated: did you think only of the solidity of the brick? Its weight? Did you fail to consider what its sturdiness unlocks? Its color, to be ground for pigment? When your thinking becomes locked in to one idea or another, one perspective on brick-ness, it becomes harder to come up with other uses tied to aspects outside of that perspective. (Thermal properties of the brick: heat it in a fire and use it to keep a small space warm.)
But you can see here that I am using a mechanism to unlock my perspective: I am listing properties of the brick. By setting down one property of the brick and picking up an orthogonal one, I make it easier to think of a new use.
In the situation where I am trying to imagine what may have caused an issue, so that I may seek out new data to confirm or disconfirm our hypotheses (well, sorry, if you've reached Full Observability perhaps none of this applies to you), I can get similarly stuck. Perhaps I hypothesize that it's got to do with malformed input. This hypothesis, even if disproven, may influence my thinking to narrow to similar causes, and these can prove similarly fruitless. If I allow a random factor to guide me away from where my reasoned understanding is pointing me, I may have a better chance of coming across the real cause.
So when Dodrill suggests laying out Tarot cards to divine the nature of a bug, there are a lot of levels on which this strategy works well.
But something didn't connect with me about the post-not because I don't truck with divination, but because I truck heavily with it.
The thing that's really beautiful about astrology, about Tarot, about palm-reading: they have crystallized a way of looking at the world. Divide up all your concerns in life into weighted categories, please. How will you do it? What is the Huffman encoding of your life? If it were me, an embarrassing thing to admit is that I could probably devote one whole twelfth to The Explaining of Systems, as with whiteboarded box and line graphs, or awkwardly non-linear emails. In a sense, divination is a way of reminding me to not weight these concerns too heavily: family, travel, partnership, romance, money, friends... each of these has its slice of the medieval sky. Intellectual concerns, work success, they have lines on the palm, stars and houses-but their part of the distribution is limited. The transient metrics that can define my day at work are nowhere to be found: Latency is not given a Tarot card, nor CPU utilization a planet in the sky.
So I don't want to take the meanings of Tarot and apply them to my work, not when I rely on them to slap me in the face and remind me that the world is wider than failed unit test assertions. But as I've laid out: I think there's really something here for us engineers, be we debugging or designing.
We shall consult another resource: decades before my time, Brian Eno and Peter Schmidt wrote a deck of Oblique Strategies, which C J Silverio has made programmatically available on Github. This itself is kind of what we're looking for: cryptic prompts for further exploration of a problem. The format, a deck, suggests a similar cartomancy. But the phrases alone seem sterile to me; better to provide the subconscious mind more hooks to catch at insight.
So I present to you a mapping, courtesy of Darius K. on github's lovely Tarot JSON, of Tarot cards to strategies. I suggest joining this data to whichever fields of Darius's tarot interpretations seem like the right amount of “woo” to you, and to present yourself with a randomly chosen entry. (Those of you who are more advanced will probably want to draw a physical card and only refer back to these entries; this carries superior juju and will keep your coworkers on their toes.) Consider it carefully, and imagine that it contains, however cryptically, the solution you seek. Take it to an extreme, or apply it subtly. Exhaust its possibilities. Don't pull another card just because the one you have seems obviously inapplicable; consider it as if it must be applicable, if only from some other angle.
And with it, I wish you good fortune.