Engineering Competency Matrix
Diagnostic tool for engineering levels. Pick a level, check the behaviors, score.
TL;DR
- 20 skills, 5 levels, 79 behaviors — Junior through Principal
- ★ = mandatory — Engineer's level = MIN(mandatory level, overall level). No exceptions
- Behaviors are cumulative — Senior ticks everything Junior and Mid tick, plus Senior-level behaviors
- Per-level sections — Go to the level you're evaluating, check mandatory first, then the rest
- Verify column — Every behavior tagged: A (artifact), P (peer feedback), S (self-reported)
- 80% threshold — Tick ≥ 80% of a level's behaviors to pass. Not perfection — pattern
How to Use This
Self-Assessment First, Manager Review After
- Engineer self-scores. Fill in ✓/✗ for each behavior. Every ✓ needs a concrete example — PR link, doc, incident, one line
- Manager reviews. Confirm or adjust. Flag disagreements (✓ → ✗ or ✗ → ✓)
- 15-min sync. Discuss disagreements only. Skip what matches
This scales — manager spends 5-10 min reviewing instead of 15-20 min scoring from scratch. Disagreements become the conversation: "You ticked this but I don't see evidence" is more productive than "here's my score."
Scoring Steps
- Pick the level you're evaluating (e.g. "Is this person Senior?")
- Check mandatory ★ skills first. If they don't pass mandatory at that level, stop. They're not that level
- Check remaining skills. Score each behavior ✓ or ✗
- Count. ≥ 80% of that level's behaviors = pass
- Check cumulative. They must also pass all levels below. A Senior must pass Junior and Mid too
- Final level = MIN(mandatory level, overall level)
Behaviors are cumulative. A Senior engineer should demonstrate all Junior, Mid, AND Senior behaviors. If a behavior starts at Mid, it's expected at Senior, Staff, and Principal too.
The Mandatory Rule (★)
Five skills are mandatory: Clear Comm, Code Quality, Testing, Ownership, Collaboration.
Mechanic: Engineer's level = MIN(mandatory level, overall level).
Worked example:
Alice scores Senior on overall behaviors (82% of Senior behaviors ticked). But on mandatory ★ skills alone, she only passes Mid (75% of Senior mandatory behaviors).
Alice's level: Mid. Not Senior. The mandatory score caps her.
Why: A Staff engineer who can't communicate is a liability, not a multiplier. Mandatory skills are the behaviors that make every other skill effective. Technical depth without communication, quality, testing, ownership, and collaboration creates isolated impact that doesn't scale.
How to Verify Behaviors
Every behavior has a Verify tag. Use it to know where to look for evidence.
| Tag | Meaning | Where to look |
|---|---|---|
| A (Artifact) | Leaves a trail | PRs, docs, RFCs, postmortems, dashboards, commit history, deploy logs |
| P (Peer) | Requires feedback from others | 360 reviews, peer interviews, cross-team feedback, skip-level 1:1s |
| S (Self) | Self-reported, inferred over time | Strategic thinking, relationship quality, long-term planning patterns |
Rule of thumb: If an engineer scores high on A and S but low on P, collect more peer feedback before finalizing. Artifacts show what someone shipped. Peers show how they shipped it.
Skill Categories
| Category | Skills |
|---|---|
| Core (★ mandatory) | Clear Comm, Code Quality, Testing, Ownership, Collaboration |
| Technical | System Design, Debugging, Performance, Security, CI/CD, Tech Writing |
| Product & Leadership | Product Thinking, Data & Metrics, Code Reviews, Mentoring, Cross-Team, Project Lead, Strategy, Hiring, Org Impact |
Junior (Level 1) — 12 behaviors
Entry level. Ships reliably, follows patterns, asks for help.
Mandatory Skills ★
| Skill | Behavior | Verify |
|---|---|---|
| Clear Comm ★ | Flags blockers same day, not next day | A |
| Clear Comm ★ | Communicates proactively — updates without prompting, answers directly | P |
| Code Quality ★ | Follows team patterns. PRs are small and focused | A |
| Testing ★ | Writes unit tests for own code. Tests pass before PR | A |
| Ownership ★ | Follows PRs through deploy. Monitors 15 min after merge | A |
| Collaboration ★ | Reviews PRs within 24 hours | A |
| Collaboration ★ | Asks for help within 30 min of being stuck | P |
Technical Skills
| Skill | Behavior | Verify |
|---|---|---|
| Debugging | Debugs with logs and stack traces | A |
| Security | No secrets in code. OWASP basics. Parameterized queries | A |
| CI/CD | Uses the pipeline. Fixes own broken builds | A |
Product & Leadership
| Skill | Behavior | Verify |
|---|---|---|
| Product Thinking | Explains what problem your code solves and who it's for | P |
| Code Reviews | Reviews for readability. Learns from reviews received | A |
Mid (Level 2) — 18 behaviors
Must also meet Junior. Owns features end-to-end, works across teams, measures outcomes.
Mandatory Skills ★
| Skill | Behavior | Verify |
|---|---|---|
| Clear Comm ★ | Communicates risks proactively with options, not just problems | A |
| Clear Comm ★ | Written updates use specifics — numbers, dates, owners, not vague estimates | A |
| Code Quality ★ | Code is clean and maintained. Refactors instead of piling on | A |
| Code Quality ★ | Handles edge cases before QA finds them | A |
| Testing ★ | Writes integration tests. Covers edge cases and error paths | A |
| Ownership ★ | Owns features end-to-end: build, ship, measure adoption, iterate | A |
| Ownership ★ | Writes blameless postmortems | A |
| Collaboration ★ | Ships work that requires input from PM, design, or stakeholders without delays | P |
| Collaboration ★ | Onboards new engineers — pairs on first PR, checks in daily | P |
Technical Skills
| Skill | Behavior | Verify |
|---|---|---|
| System Design | Designs features with clear trade-offs documented | A |
| Debugging | Debugs across services using observability tools — traces, metrics, dashboards | A |
| Performance | Profiles before optimizing. Fixes the measured bottleneck | A |
| CI/CD | Configures pipelines. Uses feature flags. Rolls back broken deploys | A |
| Tech Writing | Documents systems, decisions, and ADRs. New joiner can follow | A |
Product & Leadership
| Skill | Behavior | Verify |
|---|---|---|
| Product Thinking | Pushes back on requirements with a simpler alternative that solves the core problem | P |
| Data & Metrics | Measures outcomes with data, not output volume | A |
| Code Reviews | Reviews for correctness, edge cases, and test coverage | A |
| Project Lead | Leads small features end-to-end. Breaks into tasks, estimates, delivers | A |
Senior (Level 3) — 21 behaviors
Must also meet Junior and Mid. Drives business impact, leads cross-team work, mentors others.
Mandatory Skills ★
| Skill | Behavior | Verify |
|---|---|---|
| Clear Comm ★ | Drives alignment via RFCs and design docs | A |
| Clear Comm ★ | Presents technical concepts to non-technical stakeholders | P |
| Code Quality ★ | Sets team coding standards. Simplifies — abstracts only when pattern repeats 3+ times | A |
| Testing ★ | Defines test strategy for systems. Sets coverage and speed targets | A |
| Ownership ★ | Owns system reliability. Investigates production issues before being asked | A |
| Collaboration ★ | Drives cross-team initiatives. Resolves cross-team conflicts | P |
Technical Skills
| Skill | Behavior | Verify |
|---|---|---|
| System Design | Designs systems end-to-end (scale, failure modes, cost). Writes design docs others can execute without you | A |
| Debugging | Leads incident response. Finds root cause, implements prevention | A |
| Performance | Designs for scale. Load tests before launch. Optimizes measured bottlenecks | A |
| Security | Threat models new features. Leads security reviews | A |
| CI/CD | Designs deploy strategies (canary, blue-green). Zero-downtime migrations | A |
| Tech Writing | Writes RFCs and design docs that drive decisions | A |
Product & Leadership
| Skill | Behavior | Verify |
|---|---|---|
| Product Thinking | Partners with PM to define what to build. Interviews users | P |
| Product Thinking | Connects tech decisions to business outcomes ("SSO unblocks $150K") | A |
| Data & Metrics | Defines success metrics before building. A/B tests | A |
| Code Reviews | Reviews for architecture and business fit. Mentors through reviews | A |
| Mentoring | Mentors 1-2 juniors toward next level. People you mentor get promoted | P |
| Project Lead | Leads complex projects. Manages risk and communicates status proactively | A |
| Strategy | Thinks 2-3 quarters ahead. Proposes where to invest and where to cut | S |
| Hiring | Interviews candidates. Gives clear hire/no-hire with evidence | A |
| Org Impact | Projects impact company OKRs. Makes adjacent teams better | A |
Staff (Level 4) — 16 behaviors
Must also meet Junior, Mid, and Senior. Multiplies the org, sets technical direction, influences without authority.
Mandatory Skills ★
| Skill | Behavior | Verify |
|---|---|---|
| Clear Comm ★ | Sets org-wide communication norms. Influences through written proposals | A |
| Code Quality ★ | Defines org-wide patterns via tooling (linters, generators), not rules | A |
| Testing ★ | Owns test infrastructure. CI passes in <15 min for all teams | A |
| Ownership ★ | Owns org-wide outcomes: velocity, reliability, developer experience | A |
| Collaboration ★ | Influences without authority. Creates decision forums (RFC, Arch Review) | P |
Technical Skills
| Skill | Behavior | Verify |
|---|---|---|
| System Design | Designs org-wide architecture. Sets technical direction across teams | A |
| Debugging | Improves incident process org-wide. Reduces MTTR through tooling | A |
| Performance | Sets performance standards and budgets. Architects for 10x growth | A |
| Security | Defines security architecture and compliance standards org-wide (SOC2, GDPR) | A |
Product & Leadership
| Skill | Behavior | Verify |
|---|---|---|
| Data & Metrics | Sets org-wide metrics: deploy frequency, MTTR, developer NPS | A |
| Mentoring | Develops seniors into staff. Scales mentoring through programs | P |
| Cross-Team | Gets 3+ teams to agree on shared approach without escalation | P |
| Project Lead | Leads org-wide initiatives. Sponsors others' projects | A |
| Strategy | Owns 1-year technical roadmap. Ships features while reducing tech debt quarter over quarter | A |
| Hiring | Designs interview process. Defines hiring bar. Attracts talent through reputation | A |
| Org Impact | Makes 10+ engineers more effective. Multiplies the org | P |
Principal (Level 5) — 12 behaviors
Must also meet Junior, Mid, Senior, and Staff. Shapes company direction, defines how engineering works.
Mandatory Skills ★
| Skill | Behavior | Verify |
|---|---|---|
| Clear Comm ★ | Represents engineering to board/execs | P |
| Code Quality ★ | Defines "production-ready" standard company-wide. Teams ship to it without enforcement | A |
| Testing ★ | Test failures block deploys, not developers. Flaky tests trend to zero company-wide | A |
| Ownership ★ | Owns eng-wide metrics (deploy frequency, MTTR, uptime) and they trend in the right direction | A |
| Collaboration ★ | Partners with exec team on engineering investment decisions | P |
Technical Skills
| Skill | Behavior | Verify |
|---|---|---|
| System Design | Defines company-wide technical strategy. 2-3 year horizon | A |
| Debugging | Sets SLO targets per service. Incident count trends down quarter over quarter | A |
| Tech Writing | Writes vision docs that shape company direction | A |
Product & Leadership
| Skill | Behavior | Verify |
|---|---|---|
| Product Thinking | Technology you built opens revenue streams or markets the company didn't have before | A |
| Mentoring | Develops future technical leaders. Creates leadership pipeline | P |
| Cross-Team | Engineering priorities visibly map to company strategy — no surprises between teams | S |
| Org Impact | Engineering practices you introduced are how the company defaults to working | P |
Split Levels
When someone is Staff at X but Senior at Y, the split is the diagnostic — not the number.
Rule: Official level = MIN(mandatory level, overall level). But the split tells you where to invest.
Common Patterns
| Pattern | What it means | Action |
|---|---|---|
| Staff technical / Senior leadership | Strong builder, not yet a multiplier | Growth plan for mentoring, cross-team influence, strategy |
| Senior everything / Mid communication | Technical skills blocked by communication gap | Focus on Clear Comm for one quarter. Write RFCs, present to stakeholders |
| Senior overall / Mid mandatory | Capable engineer held back by core skill gap | Identify which mandatory skill is lagging. Targeted improvement plan |
| Staff product / Senior technical | Strong product instinct, architecture gaps | Pair with strong system designer. Lead a design doc end-to-end |
Worked Example
Dave scores Staff on technical skills (85% of Staff behaviors ticked) and Staff on product & leadership (82%). But on mandatory ★ skills, he only passes Senior (78% of Staff mandatory behaviors — below 80%).
Dave's level: Senior. His mandatory score caps him at Senior even though his overall skills are Staff-level.
The split tells the story: Dave needs to close the gap on 1-2 mandatory Staff behaviors. His manager reviews the specific behaviors he's missing — turns out he hasn't created decision forums (Collaboration ★) or established org-wide testing infrastructure (Testing ★). Those become his next-quarter goals.
Common Mistakes
| Mistake | Fix |
|---|---|
| Scoring potential, not demonstrated behavior | Score last 2 quarters. No credit for "could" |
| Ignoring mandatory because technical is strong | Run mandatory check first. If it fails, stop |
| Only scoring Artifact behaviors | Collect peer feedback quarterly. Skip-level 1:1s reveal what artifacts don't |
| One good quarter = level up | Require 2-3 quarters sustained. One quarter is a spike |
| Averaging across skills | Look at the split. An average hides the gap |
| Checklist mentality | Every ✓ needs a concrete example: "When? What outcome?" |
| Evaluating Staff+ without cross-team input | Staff+ is org-wide. Get input from 3+ teams |
| "Does the work" vs "multiplies others" | If only personal output is high, that's Senior, not Staff |
| Self-assessment over-scoring | Require a concrete example per ✓ — PR link, doc, incident. "When? What outcome?" kills inflation |
| Self-assessment under-scoring | Cross-check with peer feedback, especially P-tagged behaviors. Humble engineers miss their own impact |
Spreadsheet Template
Download CSV template — import into Google Sheets, add engineer names as columns.
Layout
Skill | Category | Mandatory | Behavior | Level | Alice | Bob | ...- Category: Core, Technical, or Product & Leadership
- Mandatory: ★ or blank
- Level: 1-5 (the level where this behavior starts)
- Each engineer cell: ✓ if demonstrated, blank if not
Tagging rows
Add a Level column to each behavior row:
| Level | Value | Means |
|---|---|---|
| Junior | 1 | Behavior starts at Junior |
| Mid | 2 | Behavior starts at Mid |
| Senior | 3 | Behavior starts at Senior |
| Staff | 4 | Behavior starts at Staff |
| Principal | 5 | Behavior starts at Principal |
Formulas (Google Sheets / Excel)
Assume: Column C = Mandatory (★ or blank), Column D = Level (1-5), Column E onward = engineer scores.
Count ticked behaviors per level (summary rows at bottom):
Junior ticked: =COUNTIFS($D:$D,1,E:E,"✓")
Junior total: =COUNTIF($D:$D,1)
Mid ticked: =COUNTIFS($D:$D,2,E:E,"✓")
Mid total: =COUNTIF($D:$D,2)
Senior ticked: =COUNTIFS($D:$D,3,E:E,"✓")
Senior total: =COUNTIF($D:$D,3)
Staff ticked: =COUNTIFS($D:$D,4,E:E,"✓")
Staff total: =COUNTIF($D:$D,4)
Principal ticked: =COUNTIFS($D:$D,5,E:E,"✓")
Principal total: =COUNTIF($D:$D,5)Overall level (≥ 80% threshold):
=IF(AND(E_Junior_ticked/E_Junior_total>=0.8, E_Mid_ticked/E_Mid_total>=0.8, E_Senior_ticked/E_Senior_total>=0.8, E_Staff_ticked/E_Staff_total>=0.8, E_Principal_ticked/E_Principal_total>=0.8),"Principal", IF(AND(E_Junior_ticked/E_Junior_total>=0.8, E_Mid_ticked/E_Mid_total>=0.8, E_Senior_ticked/E_Senior_total>=0.8, E_Staff_ticked/E_Staff_total>=0.8),"Staff", IF(AND(E_Junior_ticked/E_Junior_total>=0.8, E_Mid_ticked/E_Mid_total>=0.8, E_Senior_ticked/E_Senior_total>=0.8),"Senior", IF(AND(E_Junior_ticked/E_Junior_total>=0.8, E_Mid_ticked/E_Mid_total>=0.8),"Mid", IF(E_Junior_ticked/E_Junior_total>=0.8,"Junior","Below Junior")))))Mandatory level (★ rows only):
=IF(AND(COUNTIFS($C:$C,"★",$D:$D,1,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,1)>=0.8, COUNTIFS($C:$C,"★",$D:$D,2,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,2)>=0.8, COUNTIFS($C:$C,"★",$D:$D,3,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,3)>=0.8, COUNTIFS($C:$C,"★",$D:$D,4,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,4)>=0.8, COUNTIFS($C:$C,"★",$D:$D,5,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,5)>=0.8),"Principal", IF(AND(COUNTIFS($C:$C,"★",$D:$D,1,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,1)>=0.8, COUNTIFS($C:$C,"★",$D:$D,2,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,2)>=0.8, COUNTIFS($C:$C,"★",$D:$D,3,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,3)>=0.8, COUNTIFS($C:$C,"★",$D:$D,4,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,4)>=0.8),"Staff", IF(AND(COUNTIFS($C:$C,"★",$D:$D,1,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,1)>=0.8, COUNTIFS($C:$C,"★",$D:$D,2,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,2)>=0.8, COUNTIFS($C:$C,"★",$D:$D,3,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,3)>=0.8),"Senior", IF(AND(COUNTIFS($C:$C,"★",$D:$D,1,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,1)>=0.8, COUNTIFS($C:$C,"★",$D:$D,2,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,2)>=0.8),"Mid", IF(COUNTIFS($C:$C,"★",$D:$D,1,E:E,"✓")/COUNTIFS($C:$C,"★",$D:$D,1)>=0.8,"Junior","Below Junior")))))Final level = MIN(mandatory level, overall level).
Use a lookup: assign numeric values (Junior=1, Mid=2, etc.), take the MIN, convert back.
Why 80%: Nobody ticks every box. 80% means they consistently demonstrate the level's behaviors — not perfection, but pattern.
Example
| Skill | Mandatory | Behavior | Level | Alice | Bob |
|---|---|---|---|---|---|
| Clear Comm | ★ | Flags blockers same day | 1 | ✓ | ✓ |
| Clear Comm | ★ | Written updates use specifics | 2 | ✓ | ✓ |
| Clear Comm | ★ | Drives alignment via RFCs | 3 | ✓ | |
| Code Quality | ★ | Follows team patterns | 1 | ✓ | ✓ |
| Code Quality | ★ | Sets team coding standards | 3 | ✓ | |
| System Design | Designs features with trade-offs | 2 | ✓ | ✓ | |
| ... | ... | ... | ... | ... | |
| Summary | |||||
| Junior % | 100% | 100% | |||
| Mid % | 95% | 85% | |||
| Senior % | 82% | 40% | |||
| Staff % | 20% | 0% | |||
| Overall Level | Senior | Mid | |||
| Mandatory Level | Senior | Mid | |||
| Final Level | Senior | Mid |
Alice — ticks ≥ 80% at Junior, Mid, and Senior. Falls off at Staff (20%). Mandatory level also Senior. Final: Senior.
Bob — ticks ≥ 80% at Junior and Mid. Only 40% of Senior behaviors. Final: Mid. Growth areas: RFCs, design docs, cross-team leadership.
Level Check Summary
| Level | Threshold | In one sentence |
|---|---|---|
| Junior | ≥ 80% of Junior behaviors | Ships reliably, follows patterns, asks for help |
| Mid | ≥ 80% of Junior + Mid behaviors | Owns features end-to-end, works across teams, measures outcomes |
| Senior | ≥ 80% of Junior + Mid + Senior behaviors | Drives business impact, leads cross-team work, mentors others |
| Staff | ≥ 80% of Junior + Mid + Senior + Staff behaviors | Multiplies the org, sets technical direction, influences without authority |
| Principal | ≥ 80% of all behaviors | Shapes company direction, defines how engineering works |
The rule: You're at a level when you consistently tick ≥ 80% of that level's behaviors AND all levels below it. Not your best week — your average quarter. Mandatory ★ skills cap the level.
References
- Clear Communication — Mandatory communication principles
- Progression Framework — Detailed expectations per level with bad/good examples
- Career Levels — Company-wide leveling framework
- Engineering Fundamentals — Technical concepts to master