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.”
2 thoughts on “The OODA inside”