Skip to content

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

  1. Engineer self-scores. Fill in ✓/✗ for each behavior. Every ✓ needs a concrete example — PR link, doc, incident, one line
  2. Manager reviews. Confirm or adjust. Flag disagreements (✓ → ✗ or ✗ → ✓)
  3. 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

  1. Pick the level you're evaluating (e.g. "Is this person Senior?")
  2. Check mandatory ★ skills first. If they don't pass mandatory at that level, stop. They're not that level
  3. Check remaining skills. Score each behavior ✓ or ✗
  4. Count. ≥ 80% of that level's behaviors = pass
  5. Check cumulative. They must also pass all levels below. A Senior must pass Junior and Mid too
  6. 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.

TagMeaningWhere to look
A (Artifact)Leaves a trailPRs, docs, RFCs, postmortems, dashboards, commit history, deploy logs
P (Peer)Requires feedback from others360 reviews, peer interviews, cross-team feedback, skip-level 1:1s
S (Self)Self-reported, inferred over timeStrategic 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

CategorySkills
Core (★ mandatory)Clear Comm, Code Quality, Testing, Ownership, Collaboration
TechnicalSystem Design, Debugging, Performance, Security, CI/CD, Tech Writing
Product & LeadershipProduct 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 ★

SkillBehaviorVerify
Clear CommFlags blockers same day, not next dayA
Clear CommCommunicates proactively — updates without prompting, answers directlyP
Code Quality ★Follows team patterns. PRs are small and focusedA
Testing ★Writes unit tests for own code. Tests pass before PRA
Ownership ★Follows PRs through deploy. Monitors 15 min after mergeA
Collaboration ★Reviews PRs within 24 hoursA
Collaboration ★Asks for help within 30 min of being stuckP

Technical Skills

SkillBehaviorVerify
DebuggingDebugs with logs and stack tracesA
SecurityNo secrets in code. OWASP basics. Parameterized queriesA
CI/CDUses the pipeline. Fixes own broken buildsA

Product & Leadership

SkillBehaviorVerify
Product ThinkingExplains what problem your code solves and who it's forP
Code ReviewsReviews for readability. Learns from reviews receivedA

Mid (Level 2) — 18 behaviors

Must also meet Junior. Owns features end-to-end, works across teams, measures outcomes.

Mandatory Skills ★

SkillBehaviorVerify
Clear CommCommunicates risks proactively with options, not just problemsA
Clear CommWritten updates use specifics — numbers, dates, owners, not vague estimatesA
Code Quality ★Code is clean and maintained. Refactors instead of piling onA
Code Quality ★Handles edge cases before QA finds themA
Testing ★Writes integration tests. Covers edge cases and error pathsA
Ownership ★Owns features end-to-end: build, ship, measure adoption, iterateA
Ownership ★Writes blameless postmortemsA
Collaboration ★Ships work that requires input from PM, design, or stakeholders without delaysP
Collaboration ★Onboards new engineers — pairs on first PR, checks in dailyP

Technical Skills

SkillBehaviorVerify
System DesignDesigns features with clear trade-offs documentedA
DebuggingDebugs across services using observability tools — traces, metrics, dashboardsA
PerformanceProfiles before optimizing. Fixes the measured bottleneckA
CI/CDConfigures pipelines. Uses feature flags. Rolls back broken deploysA
Tech WritingDocuments systems, decisions, and ADRs. New joiner can followA

Product & Leadership

SkillBehaviorVerify
Product ThinkingPushes back on requirements with a simpler alternative that solves the core problemP
Data & MetricsMeasures outcomes with data, not output volumeA
Code ReviewsReviews for correctness, edge cases, and test coverageA
Project LeadLeads small features end-to-end. Breaks into tasks, estimates, deliversA

Senior (Level 3) — 21 behaviors

Must also meet Junior and Mid. Drives business impact, leads cross-team work, mentors others.

Mandatory Skills ★

SkillBehaviorVerify
Clear CommDrives alignment via RFCs and design docsA
Clear CommPresents technical concepts to non-technical stakeholdersP
Code Quality ★Sets team coding standards. Simplifies — abstracts only when pattern repeats 3+ timesA
Testing ★Defines test strategy for systems. Sets coverage and speed targetsA
Ownership ★Owns system reliability. Investigates production issues before being askedA
Collaboration ★Drives cross-team initiatives. Resolves cross-team conflictsP

Technical Skills

SkillBehaviorVerify
System DesignDesigns systems end-to-end (scale, failure modes, cost). Writes design docs others can execute without youA
DebuggingLeads incident response. Finds root cause, implements preventionA
PerformanceDesigns for scale. Load tests before launch. Optimizes measured bottlenecksA
SecurityThreat models new features. Leads security reviewsA
CI/CDDesigns deploy strategies (canary, blue-green). Zero-downtime migrationsA
Tech WritingWrites RFCs and design docs that drive decisionsA

Product & Leadership

SkillBehaviorVerify
Product ThinkingPartners with PM to define what to build. Interviews usersP
Product ThinkingConnects tech decisions to business outcomes ("SSO unblocks $150K")A
Data & MetricsDefines success metrics before building. A/B testsA
Code ReviewsReviews for architecture and business fit. Mentors through reviewsA
MentoringMentors 1-2 juniors toward next level. People you mentor get promotedP
Project LeadLeads complex projects. Manages risk and communicates status proactivelyA
StrategyThinks 2-3 quarters ahead. Proposes where to invest and where to cutS
HiringInterviews candidates. Gives clear hire/no-hire with evidenceA
Org ImpactProjects impact company OKRs. Makes adjacent teams betterA

Staff (Level 4) — 16 behaviors

Must also meet Junior, Mid, and Senior. Multiplies the org, sets technical direction, influences without authority.

Mandatory Skills ★

SkillBehaviorVerify
Clear CommSets org-wide communication norms. Influences through written proposalsA
Code Quality ★Defines org-wide patterns via tooling (linters, generators), not rulesA
Testing ★Owns test infrastructure. CI passes in <15 min for all teamsA
Ownership ★Owns org-wide outcomes: velocity, reliability, developer experienceA
Collaboration ★Influences without authority. Creates decision forums (RFC, Arch Review)P

Technical Skills

SkillBehaviorVerify
System DesignDesigns org-wide architecture. Sets technical direction across teamsA
DebuggingImproves incident process org-wide. Reduces MTTR through toolingA
PerformanceSets performance standards and budgets. Architects for 10x growthA
SecurityDefines security architecture and compliance standards org-wide (SOC2, GDPR)A

Product & Leadership

SkillBehaviorVerify
Data & MetricsSets org-wide metrics: deploy frequency, MTTR, developer NPSA
MentoringDevelops seniors into staff. Scales mentoring through programsP
Cross-TeamGets 3+ teams to agree on shared approach without escalationP
Project LeadLeads org-wide initiatives. Sponsors others' projectsA
StrategyOwns 1-year technical roadmap. Ships features while reducing tech debt quarter over quarterA
HiringDesigns interview process. Defines hiring bar. Attracts talent through reputationA
Org ImpactMakes 10+ engineers more effective. Multiplies the orgP

Principal (Level 5) — 12 behaviors

Must also meet Junior, Mid, Senior, and Staff. Shapes company direction, defines how engineering works.

Mandatory Skills ★

SkillBehaviorVerify
Clear CommRepresents engineering to board/execsP
Code Quality ★Defines "production-ready" standard company-wide. Teams ship to it without enforcementA
Testing ★Test failures block deploys, not developers. Flaky tests trend to zero company-wideA
Ownership ★Owns eng-wide metrics (deploy frequency, MTTR, uptime) and they trend in the right directionA
Collaboration ★Partners with exec team on engineering investment decisionsP

Technical Skills

SkillBehaviorVerify
System DesignDefines company-wide technical strategy. 2-3 year horizonA
DebuggingSets SLO targets per service. Incident count trends down quarter over quarterA
Tech WritingWrites vision docs that shape company directionA

Product & Leadership

SkillBehaviorVerify
Product ThinkingTechnology you built opens revenue streams or markets the company didn't have beforeA
MentoringDevelops future technical leaders. Creates leadership pipelineP
Cross-TeamEngineering priorities visibly map to company strategy — no surprises between teamsS
Org ImpactEngineering practices you introduced are how the company defaults to workingP

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

PatternWhat it meansAction
Staff technical / Senior leadershipStrong builder, not yet a multiplierGrowth plan for mentoring, cross-team influence, strategy
Senior everything / Mid communicationTechnical skills blocked by communication gapFocus on Clear Comm for one quarter. Write RFCs, present to stakeholders
Senior overall / Mid mandatoryCapable engineer held back by core skill gapIdentify which mandatory skill is lagging. Targeted improvement plan
Staff product / Senior technicalStrong product instinct, architecture gapsPair 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

MistakeFix
Scoring potential, not demonstrated behaviorScore last 2 quarters. No credit for "could"
Ignoring mandatory because technical is strongRun mandatory check first. If it fails, stop
Only scoring Artifact behaviorsCollect peer feedback quarterly. Skip-level 1:1s reveal what artifacts don't
One good quarter = level upRequire 2-3 quarters sustained. One quarter is a spike
Averaging across skillsLook at the split. An average hides the gap
Checklist mentalityEvery ✓ needs a concrete example: "When? What outcome?"
Evaluating Staff+ without cross-team inputStaff+ 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-scoringRequire a concrete example per ✓ — PR link, doc, incident. "When? What outcome?" kills inflation
Self-assessment under-scoringCross-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:

LevelValueMeans
Junior1Behavior starts at Junior
Mid2Behavior starts at Mid
Senior3Behavior starts at Senior
Staff4Behavior starts at Staff
Principal5Behavior 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

SkillMandatoryBehaviorLevelAliceBob
Clear CommFlags blockers same day1
Clear CommWritten updates use specifics2
Clear CommDrives alignment via RFCs3
Code QualityFollows team patterns1
Code QualitySets team coding standards3
System DesignDesigns features with trade-offs2
...............
Summary
Junior %100%100%
Mid %95%85%
Senior %82%40%
Staff %20%0%
Overall LevelSeniorMid
Mandatory LevelSeniorMid
Final LevelSeniorMid

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

LevelThresholdIn one sentence
Junior≥ 80% of Junior behaviorsShips reliably, follows patterns, asks for help
Mid≥ 80% of Junior + Mid behaviorsOwns features end-to-end, works across teams, measures outcomes
Senior≥ 80% of Junior + Mid + Senior behaviorsDrives business impact, leads cross-team work, mentors others
Staff≥ 80% of Junior + Mid + Senior + Staff behaviorsMultiplies the org, sets technical direction, influences without authority
Principal≥ 80% of all behaviorsShapes 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