Skills Matrix
Junior → staff database engineer competencies for PostgreSQL 18.4 teams - observable skills with evidence examples for leveling and hiring.
Recipe
Rating scale (use in quarterly review)
0 - No exposure
1 - Learning (buddy required)
2 - Independent (routine tasks)
3 - Mentor others (defines team standards)When to use:
- Performance review calibration
- On-call rotation eligibility
- Hiring scorecard for database platform roles
Working Example
Core Matrix (excerpt)
| Competency | Junior (L3) | Mid (L4) | Senior (L5) | Staff (L6) |
|---|---|---|---|---|
| psql / SQL | \d, joins, LIMIT | CTEs, window functions | pg_catalog debugging | Defines SQL style guide |
| EXPLAIN | Attach to PR | Review others' plans | Teaches index-only paths | Fleet plan regression policy |
| Migrations | Author with review | Secondary reviewer | Zero-downtime patterns | Expand-contract ADRs |
| MVCC / vacuum | Concepts | n_dead_tup triage | autovacuum tuning | Fleet bloat governance |
| Locks | Recognize blockers | pg_locks queries | Terminate policy owner | Migration lock SLO |
| Replication | Know primary/replica | Monitor lag | Slot emergency | Logical vs physical ADR |
| HA / failover | Read runbook | Drill scribe | Lead staging drill | RTO/RPO accountability |
| Backup / PITR | Know RPO | pgbackrest check | Lead restore drill | DR architecture |
| Linux CLI | bundle script run | iostat interpretation | Incident commander | Runbook standards |
| Security / RLS | least privilege | RLS policy review | BYPASSRLS audit | Compliance sign-off |
Evidence Examples
Junior EXPLAIN (rating 2 evidence):
- 5 PRs with EXPLAIN (ANALYZE, BUFFERS) merged without rework in Q2
Mid migration review (rating 2 evidence):
- Secondary reviewer on 8 PRs; caught CONCURRENTLY miss twice
Senior failover (rating 3 evidence):
- Led staging Patroni switchover; RTO 42s documented; trained two midsDeep Dive
On-Call Eligibility
| Level | On-call |
|---|---|
| Junior | Not primary; shadow only |
| Mid | Secondary with senior backup |
| Senior | Primary rotation |
| Staff | Escalation + cross-region incidents |
Hiring Scorecard Mapping
Candidate must demonstrate rating 2+ on:
- EXPLAIN interpretation live exercise
- Migration lock risk verbal walkthrough
- One Linux triage scenario (disk or locks)
Staff candidates add:
- HA failure scenario design discussion
- Major upgrade strategy whiteboardGap Closure Plans
| Gap | 30-day action |
|---|---|
| Weak EXPLAIN | Pair on 4 query PRs using EXPLAIN Review Skill |
| No Linux CLI | Run two staging simulated incidents with bundle script |
| No PITR drill | Attend restore drill; restore sandbox table yourself |
Gotchas
- Self-assessed "expert" without evidence - matrix becomes political. Fix: require links to PRs, drills, post-mortems.
- Single dimension leveling - great at queries, unsafe at migrations. Fix: minimum rating across safety rows for on-call.
- Ignoring product knowledge - staff engineer without domain context cannot prioritize index work. Fix: embed in squad.
- Static matrix years - PG 18 adds features; update yearly. Fix: link to PostgreSQL Roadmap Tracking.
Alternatives
| Alternative | Use When | Don't Use When |
|---|---|---|
| External certification only | Quick phone screen filter | Internal leveling |
| Manager gut feel | Tiny team 2-3 people | Growing platform org |
| Vendor training badges | Supplement evidence | Replace observable work |
FAQs
App dev on matrix?
Use same matrix with adjusted on-call row - many app devs target mid on EXPLAIN, junior on HA, per App Dev → DBA Path.
How many staff DBAs needed?
Staff engineer often covers 3-5 senior worth of governance; not a 1:1 headcount formula. Matrix shows depth gaps before hiring.
Matrix for managed RDS only?
Drop Patroni row depth; add RDS snapshot/parameter group fluency. Keep EXPLAIN and migration rows identical.
Related
- Onboarding Basics - day one skills
- App Dev → DBA Path - progression phases
- Team & Onboarding Best Practices - team policy
- Query Review Standards - review bar
- Career Growth DBA → Staff - staff expectations
Stack versions: This page was written for PostgreSQL 18.4 platform teams on Flyway, Patroni/RDS, and pgBackRest.