Earlier quoted context omitted.
OKRs are a goal setting framework for non-trivial 3-12 month goals. Some people are self motivated and well organized, are great at communicating progress proactively to other stakeholders, an understand the idea of cross departmental alignment. OKRs will not help them. For everyone else, OKRs are a tool that can help accomplish those things. PS I actually like OKRs and after a lot of effort, learned how to make them…
The problem for me is the “key results” part of OKR’s. It means that if it’s not measurable, it’s not an OKR, and in too many organizations, if it’s not an OKR it’s not worth doing. Cleaning up your code base to accommodate all the gradual accumulation of small fixes/hacks is not something you can put a metric on, at least not without pulling numbers out of your ass. But everyone agrees that you can’t really have qua…
I wrote a piece about the common issues that people face creating OKRs. There are a few common mistakes that people make which makes key results unmeasurable: https://koliber.com/articles/top-okr-mistakes
> the gradual accumulation of small fixes/hacks is not something you can put a metric on
I've done it before. On one team, we had a goal to reduce the number of linting errors and warnings from 18,000+ by 50% (while not growing the number of INGORES). The team was reluctant at first, because "it's only linting and it does not matter." But they relented and eventually started fixing things here and there. And the number started going down, albeit slowly. And over time we got the number of linting errors down to 18 (or something close), because people found time here and there to improve things. And the team learned how to use OKRs. And they put in place a style guide and an auto-linter. And they started using it so that the errors did not come back. And there were plans in place to put in more sophisticated style analysis and run another OKR agains that.
They literally matured in the code development practices way beyond just linting, just becuase of the relentless drive on one seemingly insignificant OKR.
This is just one example. You can use OKRs with engineering metrics to improve lots of things:
- fix the top 10 Jira tickets tagged with #techdebt
- reduce linting errors by 20%
- reduce number of functions with a cyclometric complexity of 10+ by 50%
- research 5 static code analysis tools
- increase unit test code coverage from 56% to 62%
You can go many different ways. I've helped engineering teams do this well, starting with deciding what makes sense to improve and getting buy-in, through defining the OKRs, building the system of measuring it, and most importantly, driving the OKR every week.
In the case you cited, with a bunch of hacks, I'd approach it like this:
- Create a OKRs like "Reduce tech debt".
- One of the key results would be "Identify 50 hacky places in code, and create Jira tickets for them" or something similar, by Jan 31st."
- 2nd OKR would be "Refactor XX out of the 50 hacky places identified by Jira tickets, by March 31st"
Pick numbers that work for you.