Anatomy of an OKR: How to set your OKRs

So, you’ve decided to take the plunge with OKRs.

You’ve seen the video on how Google sets OKRs, bought into the whole alignment-transparency-engagement promise and you are ready to see hyper growth in your business.

In more practical terms, however, you’ve been staring at the blank screen for the last 30 minutes wondering just how in the world you set your OKRs.

Nothing to worry about – we’ve all been there. In this post I explain what makes an OKR and how OKRs relate to KPIs and tasks. Being effective with OKRs requires a bit of an epiphany moment.

OKR is a link between goals and effort

 

One of the biggest stumbling blocks of setting OKRs is not having a clear understanding of its purpose and relationship to other, already existing, processes.

So, let’s start with what OKR is not:

  • OKR is not a goal – goal is what we want or wish, objective is something we accomplish in a given timeframe
  • OKR is not a KPI – the wording says it’s all. OKRs stands for Objective Key Results and KPI stands for Key Performance Indicator. Objective and Indicator are ideally related (one influences other), but not the same thing.
  • OKR is not a task – task is a specific unit of work, such as “Write a blog post on anatomy of OKR” or “Implement push notifications feature”. OKRs are not meant to be an elaborate to-do list.

So, then, what is an OKR?

 

OKRs are a plan for achieving desired goals.

We start with the goals that we want to achieve. From these goals, we derive the objectives that when accomplished will have desired impact on our goals. We then define key results which when hit will mean we have accomplished our objective. Finally, we decide on how exactly are we going to use our resources (such as time) to accomplish our key results – and those are tasks.

Wait a minute! Aren’t goals and objectives one and the same thing? No. These two terms are often confused, but are not the same. In short, goal is a higher level concept which defines something that we want or wish. Objective, on the other hand is specific and time bound. For example, our personal goal could be to have a net worth of $1m. There are many ways one could reach that goal, and all those ways represent objectives. For example, spend less on vacations this year could be one such objective.

How do I set my OKRs?

 

Understanding where OKRs fit in the whole picture should help a lot in setting OKRs. Now that we got that out of the way, let’s turn to the actual mechanics and thought process one has to go through to come up with OKRs.

Start with a goal

The first thing one needs to decide is the goal one wants to achieve. Goal could be anything that you want to happen (or not happen :)). Here are some examples:

  • Increase revenue – this could be a company goal
  • Help team achieve it’s objectives – so your goal is to help team achieve it’s objective. Semantics, but very important.
  • Write better code – this could be a personal goal

Next, give yourself an objective (O in OKRs)

Now that you’ve zeroed in on the goal you want to work towards to, it’s time to pick a specific objective which you believe will get you there.

Let’s assume that you picked “Write better code” as your goal. That’s a lofty and fuzzy goal, but very much worthy of pursuing.

What you need to think about now is some objectives that, if accomplished, will bring you closer to your goal. This is not simple and it’s not meant to be. It is exactly this need for critical and analytical thinking ahead of doing something that yields tremendous results down the road.

So, after some thinking and researching, you come to the conclusion that learning a new programming language (a functional one at that!) will make you write better code. So, you give yourself an objective for the next quarter to learn a new functional programming language in next three months.

Now, we are making some real progress. We have:

  • Goal: Write better code
  • Objective: Learn a new functional programing language in next tree months

Time to set some key results (KRs in OKRs)

So, what are you going to do in order to learn a new functional programming language in next three months?

Again, you think some more and research some more, you come up with following key results:

  • Finish 40 practices on Codechef for the language you want to learn (numeric)
  • Make 5 pull requests with bug fixes on Github in projects written in language you want to learn (numeric)
  • Implement a to-do list project with unit tests in language you want to learn (yes/no)

So, we have set here three key results that if we accomplish, we can surely achieve our objective.

Finally, get to work

Learning a new functional programming language is no small feat. There is a lot of things you’ll need to do:

  • Read a book (notice how this is not a key result, but a task. Reading a book alone does not in any way indicate you have learned a new programming language)
  • Examine an open source project for bugs
  • Actually fix a bug

All these are tasks, that you will undertake in order to achieve your key results.

Summary

So, to recap.

OKRs are a link between our goals and our effort. They are a specific plan on how are we going to go about reaching our goals.

Objective is something we want to accomplish within a given timeframe as a result of our effort, which will have a desired influence towards our goals.

Key results are things we plan to do in order to reach our objective.

Tasks are actual work we undertake in order to achieve our key results.

Putting effort in defining your OKRs is extremely important. As the old adage says: “Measure twice, cut once.”