Skills Matrix
Junior → senior Node competencies for backend TypeScript teams. Use for leveling, growth plans, and interview rubrics - not tenure alone.
Search across all documentation pages
Junior → senior Node competencies for backend TypeScript teams. Use for leveling, growth plans, and interview rubrics - not tenure alone.
| Competency | Junior | Mid | Senior |
|---|---|---|---|
| Runtime | Explains event loop; avoids sync blocking | Diagnoses loop stall from logs/metrics | Sets team policy on uncaughtException, worker split |
| HTTP/API | CRUD routes, Zod, 4xx/5xx standards | Pagination, auth middleware, idempotency keys | ADR on Fastify vs Nest; versioning strategy |
| Data | Parameterized queries; simple migrations | Transactions, indexes, N+1 awareness | Migration expand-contract; pool sizing |
| Async jobs | Enqueues job; understands retry | BullMQ worker, DLQ, concurrency tuning | Queue vs event bus ADR; backpressure design |
| Config/secrets | Uses .env.example; typed env module | Secrets manager integration | Rotation runbooks; fail-fast boot policy |
| Testing | node:test or Jest unit + inject | Integration tests with test DB | Contract tests; load test interpretation |
| Observability | Reads JSON logs with jq | Structured fields, requestId, metrics | SLO definition; alert tuning |
| Security | No secrets in git; basic auth | OWASP API top 10 in review | Threat modeling for new surfaces |
| CI/CD | Green local = same scripts as CI | Writes GitHub Actions job | Release train; canary/rollback decision |
| Linux ops | curl health, lsof port | kubectl logs, top during incident | IC on SEV2; runbook authorship |
| Git | Feature branch + PR template | Cherry-pick to release | Hotfix lane ownership |
| Leadership | Asks for pairing | Mentors one junior | Sprint capacity for tech debt; ADR facilitation |
EADDRINUSE with lsof without senior rescueawait matters in one code review commentnpm ci && npm test before every pushStudy path: Node.js Basics → zod → Onboarding Basics
Study path: bullmq / ioredis → API Design Basics → Pairing on API PRs
Study path: Technical Leadership Best Practices → Incident Triage Skill → DORA Metrics for Node Teams
## Q3 growth - Alex (Junior → Mid)
Current gap: transactions + BullMQ
Sprint 1: Pair on order checkout transaction PR
Sprint 2: Own email worker with DLQ
Evidence: merged PRs + retro notes
Review date: 2026-09-30| Signal | Weak | Strong |
|---|---|---|
| Incidents | Waits for instructions | Runs IC checklist; documents timeline |
| Design | Implements spec only | Proposes ADR with tradeoffs |
| Review | LGTM on style | Catches auth, pool, PII issues |
| Scope | Single service | Cross-service release coordination |
Title may stay "Senior Engineer" with Node track = Junior in matrix. Dual tracks prevent false expectations on first API on-call shift.
1 senior : 2 juniors max for meaningful weekly pairing. Overflow hires wait or use group office hours.
Stack versions: This page was written for Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, and NestJS 11.
Reviewed by Chris St. John·Last updated Jul 16, 2026