OKR Template
An OKR (Objectives and Key Results) template for engineering teams with goal-setting frameworks, scoring, and alignment guidance.
Table of Contents
OKR Template
OKRs (Objectives and Key Results) connect daily work to strategic goals. This template helps you write effective OKRs that inspire action and measure progress.
What Are OKRs?
Objective: What you want to achieve. Qualitative, inspirational, time-bound.
Key Results: How you'll know you achieved it. Quantitative, measurable, specific.
Initiatives: What you'll do to achieve the key results. Projects, tasks, activities.
Why Use OKRs?
Benefits:
- Aligns team efforts with company strategy
- Creates focus by limiting priorities
- Makes progress measurable
- Encourages ambitious goals
- Improves transparency across teams
Cadence:
- Company OKRs: Annual with quarterly updates
- Team OKRs: Quarterly
- Individual OKRs: Optional, if used at all
The Template
Team OKR Template
# [Team Name] OKRs - Q[X] [Year]
**Period:** [Start Date] - [End Date]
**Owner:** [Team Lead Name]
**Last Updated:** [Date]
---
## Alignment
### Company Objectives We Support
| Company Objective | How We Contribute |
|-------------------|-------------------|
| [Company Obj 1] | [Our contribution] |
| [Company Obj 2] | [Our contribution] |
---
## Objective 1: [Objective Title]
*[Qualitative statement of what you want to achieve]*
**Owner:** [Name]
**Why it matters:** [Connection to strategy/business value]
### Key Results
| # | Key Result | Start | Target | Current | Score |
|---|------------|-------|--------|---------|-------|
| 1.1 | [Measurable outcome] | [Baseline] | [Target] | [Now] | [0-1.0] |
| 1.2 | [Measurable outcome] | [Baseline] | [Target] | [Now] | [0-1.0] |
| 1.3 | [Measurable outcome] | [Baseline] | [Target] | [Now] | [0-1.0] |
**Objective Score:** [Average of KR scores]
### Key Initiatives
| Initiative | Owner | Status | Notes |
|------------|-------|--------|-------|
| [Initiative 1] | [Name] | [Status] | [Notes] |
| [Initiative 2] | [Name] | [Status] | [Notes] |
| [Initiative 3] | [Name] | [Status] | [Notes] |
### Risks to Achievement
- [Risk 1]: [Mitigation]
- [Risk 2]: [Mitigation]
---
## Objective 2: [Objective Title]
[Same structure as Objective 1]
---
## Objective 3: [Objective Title]
[Same structure as Objective 1]
---
## Summary
| Objective | Score | Status |
|-----------|-------|--------|
| [Obj 1] | [Score] | 🟢🟡🔴 |
| [Obj 2] | [Score] | 🟢🟡🔴 |
| [Obj 3] | [Score] | 🟢🟡🔴 |
| **Average** | [Score] | |
---
## Check-In Log
### Week [X] - [Date]
**Progress:**
- [Update 1]
- [Update 2]
**Blockers:**
- [Blocker 1]
**Adjustments:**
- [Any changes to KRs or initiatives]
---
## End of Quarter Review
**Final Scores:**
| Objective | Final Score | Reflection |
|-----------|-------------|------------|
| [Obj 1] | [Score] | [What happened, what we learned] |
| [Obj 2] | [Score] | [What happened, what we learned] |
| [Obj 3] | [Score] | [What happened, what we learned] |
**What worked well:**
-
**What we'd do differently:**
-
**Carry forward to next quarter:**
-Individual OKR Template (Optional)
# [Name] - Individual OKRs Q[X] [Year]
**Manager:** [Name]
**Last Updated:** [Date]
---
## How These Align
| My Objective | Team Objective It Supports |
|--------------|---------------------------|
| [My Obj 1] | [Team Obj] |
| [My Obj 2] | [Team Obj] |
---
## Objective 1: [Objective]
**Why I chose this:** [Personal motivation + team value]
| # | Key Result | Target | Current | Score |
|---|------------|--------|---------|-------|
| 1.1 | [KR] | [Target] | [Now] | [0-1.0] |
| 1.2 | [KR] | [Target] | [Now] | [0-1.0] |
**My plan:**
- [Action 1]
- [Action 2]
**Support I need:**
- [From manager/team]
---
## Objective 2: [Objective]
[Same structure]
---
## Development Goal (Optional)
**Skill/competency I'm developing:** [Skill]
| Key Result | How I'll Measure | Progress |
|------------|------------------|----------|
| [Growth KR] | [Measurement] | [Status] |OKR Scoring Guide
## How to Score Key Results
### The 0-1.0 Scale
| Score | Meaning | Example |
|-------|---------|---------|
| 1.0 | Fully achieved or exceeded | Hit 100%+ of target |
| 0.7 | Achieved most of it | Hit 70-99% of target |
| 0.5 | Made significant progress | Hit 50-69% of target |
| 0.3 | Made some progress | Hit 30-49% of target |
| 0.0 | No meaningful progress | Hit <30% of target |
### Target Scores
**Ideal average score: 0.6 - 0.7**
- **0.4 or below:** Goals may have been too ambitious, or execution failed
- **0.6 - 0.7:** Sweet spot—ambitious but achievable
- **0.8 or above:** Goals may have been too easy
### Scoring Methods by KR Type
**Binary KRs (yes/no):**
- 1.0 = Done
- 0.0 = Not done
- (Consider adding milestones for partial credit)
**Metric KRs (numbers):**
- Score = (Current - Start) / (Target - Start)
- Cap at 1.0 even if exceeded
**Milestone KRs (phases):**
- Assign points to each milestone
- Score = completed milestones / total milestonesComplete Example
# Platform Team OKRs - Q1 2026
**Period:** January 1 - March 31, 2026
**Owner:** Sarah Chen
**Last Updated:** January 15, 2026
---
## Alignment
### Company Objectives We Support
| Company Objective | How We Contribute |
|-------------------|-------------------|
| Achieve $10M ARR | Enable product teams to ship faster, reducing time-to-revenue |
| Improve customer retention | Increase reliability, reduce incidents that cause churn |
| Prepare for scale | Build infrastructure that handles 10x growth |
---
## Objective 1: Make Our Platform Rock-Solid
*Our customers and internal teams trust our platform completely. Reliability is never a blocker.*
**Owner:** Mike Johnson
**Why it matters:** Every incident costs us customers and engineering time. Last quarter we had 8 P1 incidents, each costing ~$50K in customer credits and engineer hours.
### Key Results
| # | Key Result | Start | Target | Current | Score |
|---|------------|-------|--------|---------|-------|
| 1.1 | Achieve 99.95% uptime (currently 99.5%) | 99.5% | 99.95% | 99.7% | 0.44 |
| 1.2 | Reduce P1 incidents from 8/quarter to ≤2 | 8 | ≤2 | 5 | 0.50 |
| 1.3 | Reduce mean-time-to-recovery from 45 min to <15 min | 45 min | 15 min | 28 min | 0.57 |
| 1.4 | 100% of critical services have runbooks | 40% | 100% | 70% | 0.50 |
**Objective Score:** 0.50 (In Progress)
### Key Initiatives
| Initiative | Owner | Status | Notes |
|------------|-------|--------|-------|
| Implement automated failover for database | Alex | 🟡 In Progress | Design complete, implementation 50% |
| Add circuit breakers to all external calls | Emma | 🟢 Complete | Deployed to production |
| Create runbooks for top 10 incident types | David | 🟡 In Progress | 7/10 complete |
| Deploy improved alerting and monitoring | Mike | 🟡 In Progress | New dashboards live, alerts tuning |
### Risks to Achievement
- **Database migration complexity:** May introduce temporary instability. Mitigation: Extensive testing, feature flags.
- **Holiday on-call gaps:** January holidays reduce response capacity. Mitigation: Extra coverage scheduled.
---
## Objective 2: Empower Product Teams to Ship Faster
*Product engineers spend time building features, not fighting infrastructure. We're a force multiplier.*
**Owner:** Lisa Wang
**Why it matters:** Developer surveys show 30% of engineer time is lost to tooling friction. That's ~$2M/year in lost productivity.
### Key Results
| # | Key Result | Start | Target | Current | Score |
|---|------------|-------|--------|---------|-------|
| 2.1 | Reduce CI/CD pipeline time from 45 min to <15 min | 45 min | 15 min | 32 min | 0.43 |
| 2.2 | Achieve developer NPS of 40 (currently 18) | 18 | 40 | 25 | 0.32 |
| 2.3 | 90% of teams using feature flag system (currently 30%) | 30% | 90% | 60% | 0.50 |
| 2.4 | Reduce production deploy failures from 15% to <5% | 15% | 5% | 10% | 0.50 |
**Objective Score:** 0.44 (Needs Attention)
### Key Initiatives
| Initiative | Owner | Status | Notes |
|------------|-------|--------|-------|
| Parallelize CI pipeline stages | David | 🟡 In Progress | 35% reduction achieved |
| Migrate to faster build infrastructure | Alex | 🔴 Blocked | Waiting on AWS quota |
| Feature flag training and rollout | Lisa | 🟢 Complete | All teams trained |
| Implement canary deploys | Emma | 🟡 In Progress | Framework built, piloting with 2 teams |
### Risks to Achievement
- **AWS quota approval delay:** Blocking build infra migration. Mitigation: Escalating through TAM.
- **Developer adoption resistance:** Some teams resistant to new tools. Mitigation: Champions program, 1:1 support.
---
## Objective 3: Build the Foundation for 10x Scale
*Our infrastructure handles tomorrow's traffic without tomorrow's headaches. Growth is never blocked by engineering.*
**Owner:** Alex Rivera
**Why it matters:** We're at 70% database capacity. At current growth, we'll hit limits by Q3. This is existential.
### Key Results
| # | Key Result | Start | Target | Current | Score |
|---|------------|-------|--------|---------|-------|
| 3.1 | Complete database migration to scalable cluster | 0% | 100% | 40% | 0.40 |
| 3.2 | Reduce p95 query latency from 180ms to <50ms | 180ms | 50ms | 120ms | 0.46 |
| 3.3 | Pass load test at 10x current traffic | 1x | 10x | 4x | 0.33 |
| 3.4 | Implement auto-scaling for all services | 20% | 100% | 50% | 0.38 |
**Objective Score:** 0.39 (At Risk)
### Key Initiatives
| Initiative | Owner | Status | Notes |
|------------|-------|--------|-------|
| Database migration Phase 1 (read replicas) | Alex | 🟢 Complete | Live in production |
| Database migration Phase 2 (write path) | Alex | 🟡 In Progress | 60% complete |
| Implement caching layer | Mike | 🟡 In Progress | Redis cluster deployed, integration ongoing |
| Auto-scaling configuration | Emma | 🔴 Not Started | Blocked by migration |
### Risks to Achievement
- **Migration complexity higher than estimated:** Taking longer than planned. Mitigation: Dedicated focus, contractor support.
- **Performance testing gaps:** Don't have realistic load test environment. Mitigation: Building synthetic load generator.
---
## Summary
| Objective | Score | Status |
|-----------|-------|--------|
| Rock-Solid Platform | 0.50 | 🟡 On Track |
| Empower Product Teams | 0.44 | 🟡 Needs Attention |
| Foundation for Scale | 0.39 | 🔴 At Risk |
| **Average** | 0.44 | |
**Overall Assessment:** We're making progress but Objective 3 needs intervention. Database migration is the critical path item.
---
## Check-In Log
### Week 2 - January 15, 2026
**Progress:**
- Circuit breakers deployed to all services (KR 1.2 contributor)
- Read replicas live, seeing 40% reduction in query latency
- CI pipeline time reduced to 32 minutes (down from 45)
- Feature flag adoption at 60% (up from 30%)
**Blockers:**
- AWS quota approval for new build infrastructure (escalated)
- One senior engineer out sick, impacting migration timeline
**Adjustments:**
- Adding contractor support for database migration
- Deprioritizing auto-scaling until migration complete
---
### Week 6 - February 15, 2026
**Progress:**
- Database write path migration 60% complete
- P1 incidents down to 5 this quarter (on track for ≤2 if trend continues)
- Developer NPS up to 25 from 18
- 7 of 10 runbooks completed
**Blockers:**
- None critical
**Adjustments:**
- Revised migration timeline to March 10 (was March 1)
- Accepted that load testing to 10x may slip to early Q2
---
## Mid-Quarter Review (February 15)
**Red/Yellow/Green Status:**
- 🟢 Objective 1: Strong progress, on track
- 🟡 Objective 2: Good progress but dev NPS moving slowly
- 🔴 Objective 3: Migration behind schedule, load test at risk
**Key Decisions:**
1. Accept 10x load test may complete in early Q2 (first week of April)
2. Double down on migration—all other work paused for Alex
3. Run developer listening sessions to understand NPS drivers
**Support Needed:**
- Contract database consultant for March
- Executive pressure on AWS for quota approvalWriting Great OKRs
Objective Best Practices
Good Objectives:
- Inspirational and memorable
- Qualitative (not a metric)
- Time-bound (one quarter)
- Achievable but stretching
- Owned by one person
Examples:
| Bad Objective | Good Objective |
|---|---|
| Improve uptime | Make our platform rock-solid |
| Increase NPS | Delight our customers |
| Reduce tech debt | Build a codebase we're proud of |
| Hit revenue target | Become the market leader in X |
Key Result Best Practices
Good Key Results:
- Measurable with a number
- Have a clear baseline and target
- Outcome-focused (not activity-focused)
- Achievable at ~70% (stretch goals)
- 2-5 per objective
Examples:
| Bad KR | Good KR |
|---|---|
| Improve response time | Reduce p95 API latency from 200ms to <50ms |
| Launch feature X | Ship feature X and achieve 1000 DAU |
| Work on reliability | Achieve 99.9% uptime |
| Do more testing | Increase test coverage from 60% to 85% |
| Be more efficient | Reduce cycle time from 14 days to 7 days |
Common Mistakes
1. Too Many OKRs
- Problem: Everything is a priority = nothing is
- Fix: 3-5 objectives max, 2-4 KRs each
2. Sandbagging (Easy Goals)
- Problem: Teams game the system with easy targets
- Fix: Aim for 70% achievement. 100% means it was too easy.
3. Activity as Key Results
- Problem: "Launch X" instead of "Achieve Y through X"
- Fix: Ask "What outcome does this activity create?"
4. No Baseline
- Problem: Can't measure progress without starting point
- Fix: Always include current state, not just target
5. Set and Forget
- Problem: OKRs written in January, never reviewed
- Fix: Weekly check-ins, monthly reviews
6. Using OKRs for Performance Reviews
- Problem: Creates sandbagging, reduces ambition
- Fix: OKRs measure team progress, not individual performance
OKR Cadence
Annual
- Set company-level objectives (can span multiple quarters)
- Establish vision and direction
Quarterly
- Week -2: Leadership drafts company OKRs
- Week -1: Teams draft OKRs aligned to company
- Week 0: Finalize and communicate all OKRs
- Weekly: Check-in on progress
- Mid-Quarter: Formal review, adjust if needed
- End of Quarter: Score, reflect, learn
Weekly Check-In
Spend 10-15 minutes in team meeting:
- Are we on track? (Red/Yellow/Green)
- What progress this week?
- Any blockers?
- Anything we need to adjust?
OKRs are a tool for focus and alignment, not bureaucracy. If they're not helping your team do better work, simplify or stop using them.