OKRs get blamed a lot. The framework is fine. The problem is what teams put in it.
The most common failure is writing activities as key results. "Launch the new pipeline" is not a result. It's a task. A result is what changes because you launched it: latency down by half, adoption past a threshold, cost per run cut. If a key result doesn't have a number and a direction, it's a to-do list wearing a strategy costume.
The second failure is too many. A team with nine objectives has none. The point of the exercise is to force a choice about what matters this quarter. Nine objectives dodges the choice, which is the one thing the framework was supposed to make you do.
The third is setting them and never looking again until the quarter ends. OKRs are a steering instrument, not a report card. I check them in the weekly rhythm: am I moving the number, and if not, what changes this week.
The fix for all three is the same discipline. Fewer objectives. Every key result is a measurable outcome with a date. And you revisit them often enough to actually steer.