Week of 2021-12-06
This issue is a continuation of a larger “Jank in Teams” series. If you want to catch up on the whole story, check out Jank in Teams, which starts at the beginning.
OODA and Intention
The ability to make predictions is an astounding quality of retained-mode systems. Unlike the imaginary immediate-mode beings, we can start seeing what might be. And we humans are blessed/cursed with the ability to go one step beyond that: we can imagine alternatives. We create multitudes of “what might bes”. This is where the true significance of the Decide step becomes evident -- we need to choose among the many things that “might be” to pick the Action that will do … what?
Turns out, we have preferences. We want some alternatives more than others. In our minds, the possible futures aren’t equal. A way to think of it is that we have a preference toward a certain state of the environment that we are imagining, as compared to our perceived current state. Instead of having just one model of the environment, we carry two: “what is” and “what should be.” The sum of our preferences manifests as intention, or our desire to move “what is” toward “what should be.”
Every team is born and continues to exist around some objective. The objective itself may change over time, but it is the presence of this objective that holds the team together. This team, with some understanding of the environment -- “what is” -- sets out on a journey of applying intention, to influence the environment toward some state, or “what should be.” From this perspective, the OODA loop is about steering -- shifting the environment into some desired state.
Whoa, this is kind of a big insight, isn’t it? We’ve been walking around the OODA loop for a bit now, and -- boom! -- here we arrive at this moment. What is the point of the OODA loop if not saying: “Hey environment! I have some ideas about you. Let’s dance.” Within an OODA loop, intentionality is always present. There is no need for the OODA loop without it.
This whole steering business doesn’t come without downsides. Most individuals and certainly many teams don’t have the “what is” and “what should be” models clearly separated. One of my friends has a habit of pointing out the distinction, occasionally blowing people’s minds. This lack of separation commonly leads to the “what should be” model influencing the Observe and Orient steps. When Observing, we tend to filter out things that shouldn’t be there, and when Orienting, fit things that should be.
Guess what that does to our prediction error rate? That’s right. The more we the “what should be” model bleeds into our “what is” model, the higher is the error rate.
We live in a world where it’s hard not to notice the instances of conflation of “what is” and “what should be.” From conspiracy theories to magnetic personalities creating “reality distortion fields” around them, to filter bubbles, we are surrounded by them. We even have a term to describe some of these instances: cognitive biases.
At the same time, this conflation can be productive. A team believing that they can ship a product may indeed ship a product, despite the overwhelming odds. Had they not mixed their “what is” and “what should be,” they would have seen right through their silly naivete at the start and folded early. Lucky for them, the environments are steerable – they can shift to “what should be” under certain conditions. The trick of any team lead is to recognize and hold the delicate balance between productive and unproductive blending of “what is” and “what should be.” Another friend of mine calls this balance “dancing with delusion,” and I love how well it captures the nature of the process.
🔗 https://glazkov.com/2021/12/09/ooda-and-intention/
The expectation gradient
The conflation of “what is” and “what should be” is not the only way in which our intentions impact our prediction error rate. Another source is the intentions that we’re unaware of. To better understand what happens, we are going on another side adventure. And yes, we might even get to cast trigonometry spells again. But first, let’s talk about expectation gradients.
If we view prediction error rate as a measure of the accuracy of our predictions after the fact, expectation gradient is our forecasting metric. An easy way to grok it is to visualize ourselves standing on a trail and looking ahead, trying to guess the gradient of the incline. Is there a hill up ahead, or is it nice and flat? Or perhaps a wall that we can’t scale? The gradient of the path ahead foretells us of the effort we’ll need to put into moving forward.
In a similar vein, the expectation gradient reflects our sense of the difference between our models of “what is” and “what should be.” It is our estimate of the steering effort: how much energy we will need to invest to turn “what is” into “what should be.” A gentle slope of the gradient reflects low estimated effort, and as the estimate grows, the slope becomes steeper. If I find myself in a forest, facing a hungry tiger, I am experiencing a very steep gradient. Sitting in a comfortable chair while sipping eggnog (it is that time of the season!) contentedly and writing, however -- that’s the definition of a gentle gradient slope for me.
With our trig hat on, we can picture the expectation gradient as the angle of a triangle. The adjacent side is the distance between “what is” and “what should be” (or a fraction thereof), and the opposite side is the measure of the required energy that we need to muster to steer the environment from “what is” to “what should be.”
The opposite-adjacent relationship to the angle is a tangent. When we deal with tangents, we face impossibilities. There is an asymptote, built into that little arrangement. The wavy tangent line starts slow, but then zooms into the sky, never ever quite fulfilling the promise of meeting required output.
I quite like this framing, because it feels pretty intuitive. The curve practically begs to be broken down into three distinct sections: the section before the kink where we’re reasonably certain that we can achieve our goal, the middle section where we are uncertain of the outcome, and the asymptote – the section in which we’re pretty certain that our goal is unachievable.
Looking at “dancing with delusion” from the previous piece through the lens of expectation gradient, it’s all about convincing the team that the road ahead is mostly out of the third section, stretching the “uncertain” a bit longer.
🔗 https://glazkov.com/2021/12/09/the-expectation-gradient/
The OODA inside
Because of the way we humans are wired, the expectation gradient is not a neutral measurement. For some reason, when we perceive a tiger eyeing us voraciously, our bodies immediately start pumping out adrenaline and otherwise prepare us to scale that gradient wall. In many ways, we literally transform into a different being. A thoughtful and kind individual is replaced by the instrument of survival driven by animal-like instincts.
But… who is doing the replacement? (Are you ready for the big reveal?) It would appear that we have another OODA loop, operating inside of us. Our body is running its own game, regardless of ours and with or without our awareness of it. Its intention is focused squarely on meeting demands of the expectation gradient.
This inner OODA loop is fairly primitive. It knows nothing about our aspirations. It cares very little about the intentions we form and write down in bold letters in decks and strategy 5-pagers. All it does is watch the gradient, trying to discern the gap between our current energy output, what the gradient says it should be, and try to change it as expediently as possible. Somewhere a long time ago, the evolutionary processes took us toward the setup where our unconscious mind is constantly and repeatedly asking this question: “How does the expectation gradient slope look right now and how much of my total energy do I need to mobilize to scale it?”
For what it’s worth, such a two-loop setup is not uncommon. For example -- you probably guessed where I am going -- rendering graphics is a fairly computationally expensive process, and as such, makes processors heat up. To avoid overheating, most modern microprocessors have a tiny system called “thermal control” that’s built into most modern microprocessors… and it cycles its own OODA loop!
The thermal control loop is ignorant of rendering. It simply checks the processor’s temperature, and if the temp is above a certain value, takes an action of slowing down the processor’s clock. As a result, the rendering pipeline suddenly moves a lot slower and can no longer fit into the frame budget, producing jank.
It seems like a good thing, but more often than not, the result is deeply unsatisfying. The two loops are playing two different games, and step on each other’s toes, forming the familiar sawtooth pattern of jank. In consumer hands, this device seems downright menacingly janky. The brief periods of responsiveness feel like a taunt, like the device is actually messing with us. Back in the Chrome team, we’ve spent a bunch of time testing the performance of mobile phones, and many of those phones suffered this malady. As one of my colleagues quipped: “This is an excellent phone … as long as it’s sold with an ice pack.”
Similarly, our inner OODA loop is doing its thing, and the model of its environment is limited to the expectation gradient it periodically checks. Given that the expectation gradient is just a guess and often wrong, it’s no wonder that the inner, unconscious OODA loop ends up fighting with the conscious OODA loop we’re running, producing remarkable levels of macro jank.
From the perspective of the conscious OODA loop, this feels like a rug being periodically pulled from under us. I wanted to lose a few pounds… So what am I doing eating a Snickers bar in the pantry? I decided to work heads-down on a proposal today … So why am I watching random YouTube videos? We wanted our team to innovate daringly… So what are we doing arguing about the names of the fields in our data structures? Ooh, a new Matrix movie preview… Stop it!
We might believe that we understand our intentions. We might even believe that we have a clear-eyed view of our “what should be.” Unfortunately, our simple-minded, yet highly effective, honed by eons of evolution inner OODA loop also has intentions. And these intentions, whether we want them or not, are woven deeply into the story of our actual “what should be.”
🔗 https://glazkov.com/2021/12/09/the-ooda-inside/
What will happen next? Will the outer loop learn to be friends with the inner? Will they continue fighting? Stick around for next week’s drop of Jank in Teams.