Sunday, April 15, 2018

Horizonal goals

Video version here

There's this great, short book by John Kay called Obliquity. It's about goals that you can't achieve by aiming for them directly; you have to look for an oblique goal that will happen to get you there. Like, you can't aim for "happiness;" you have to find something such that aiming for it makes you happy, like raising children or writing or helping people who are hurting.

This book gives a name to some parts of my seamaps. The star at the top is the "high-level objective," the unquantifiable goal which can never be achieved. Aiming for it sends us in a direction which happens to obliquely fill a goal such as "happiness" or "profit." Goals such as "change the way development is done" or "find the optimal combination of music and words" or "address the observability needs of modern architectures" These are horizonal goals; as we make progress, the state of the art moves. We can never reach the horizon, but aiming for it takes us interesting places.

at the top, a star called "high-level objective." Below that, the sea. In the sea, a big island with a snowcapped mountain, called "Goal." Below that, a smaller island called "subgoal." Below that, a whirlpool called "necessary state" and a sailboat with oars and people, called "action."

The mountains in the seamap are milestones. They're achievable, measurable goals that we work toward because they're in the direction of our high-level objective. Periodically we climb up and look around, take stock of whether our current direction is still going toward our star, and if not, change our milestone goals.

There are many smaller milestones on the way to the bigger one. Each offers an opportunity to take stock and possibly shift direction. There are actions that we take to move toward these goals. This is us in the boat, rowing.

Obliquity adds another element: necessary states. A necessary state to moving toward the next feature is: tests are passing. A necessary state for teamwork is that we are getting along with each other. Many of the actions we take are aimed at maintaining or restoring necessary states. These are like the whirlpools in my seamap; we have to smooth them out before we can row in the direction of our choice.

For example, here is a seamap for my current activity:

high-level objective: change the way people think about programming. Goal: explain Symmathecist. Subgoal: explain Horizonal. Necessary state: don't be too drunk. Action: type this post before opening wine.  

I will now hit "publish" and go open a bottle of wine.