The rubric · Six skill areas · v1.4

What senior looks like, area by area.

Every diagnosis scores your work against this page: six skill areas, each at junior, mid or senior. A level describes your work on one area, never you.

Levels describe work, not people. See rule 1.

How to read a level

Junior
Can do the thing in a clear, bounded case. Produces correct output when requirements are explicit; doesn’t yet see the failure modes.
Mid
Handles realistic cases independently. Knows the common failure modes; can say why something is slow or wrong, not just that it is.
Senior
Designs for scale, failure and ambiguity. Anticipates what breaks at 10×, makes and defends trade-offs under constraints, builds the unhappy path, and knows when not to build.
  1. Levels attach to the area, not the person. Your SQL can be senior while your orchestration is mid. The report shows both and never averages them.
  2. “Attempted and wrong” and “Not assessed” are different findings. The first means you reached for the concept and missed. The second means there is no evidence either way. The report always says which, and “Not assessed” never counts against you.

The areas

SQL & Querying

Correctness and performance of set-based queries – joins, windows, aggregation, and reading what the engine actually does.

Junior
Writes correct single-table queries and basic joins; leans on SELECT * and row-by-row thinking.
Mid
Comfortable with multi-table joins, window functions, and aggregation; not yet reasoning about plans or skew.
Senior
Designs queries for correctness and cost at scale. Controls join order, partition pruning, and predicate pushdown deliberately.

Assessed viaEDITOR(graded on what the query returns)SCENARIOREPOVIVA

TrapA LEFT JOIN with a right-table filter in WHERE quietly becomes an INNER.Pattern P07
Diagnosis
Live
Learn
Live24 lessons
Practise
Live320 problems

Programming for Data (Python)

Structure, testing, error handling, and resource-awareness of the code that moves and transforms data.

Junior
Writes working scripts; limited structure, error handling, or tests.
Mid
Modular code with some tests; idiomatic but not yet defensive about edge cases or memory.
Senior
Composable, tested, observable code that handles failure, backpressure, and data volume by design.

Assessed viaEDITORSCENARIOREPO(not offered yet)VIVA

TrapA bare except that swallows the error and reports success on a half-written file.
Diagnosis
Planned
Learn
Planned
Practise
Live85 problems · 5 scenarios

Libraries are detail, not the test. The question is whether the code survives bad data and real volume.

Data Modeling & Storage Design

Schema, keys, normalisation, file format, and partitioning chosen against real access patterns and cost.

Junior
Models tables ad hoc; little normalisation or key discipline.
Mid
Applies normalisation, keys, and basic dimensional modeling; format and partitioning are mostly defaults.
Senior
Chooses schema, format, and partitioning against access patterns and cost; reasons about evolution and contracts.

Assessed viaEDITORSCENARIOREPO(not offered yet)VIVA

TrapA fact table partitioned by load date when every query filters by event date, so each read scans everything.
Diagnosis
Planned
Learn
Planned
Practise
Live20 scenarios

The area most often bundled with SQL, kept apart on purpose: strong SQL with weak modeling is a common profile a merged area would hide.

Distributed Data Processing

Batch and stream as one concept area – partitioning, shuffles, state, skew, late data, and delivery semantics.

Junior
Uses a framework's defaults; unaware of shuffles, partitioning, or batch/stream trade-offs.
Mid
Understands partitioning and shuffles; writes batch and basic streaming jobs but tunes reactively.
Senior
Reasons about distribution, state, and exactly-once vs at-least-once; designs for skew, late data, and recovery.

Assessed viaEDITORSCENARIO(no cluster runs mid-assessment)REPO(not offered yet)VIVA(not offered yet)

TrapA join keyed on customer_id where one customer is 30% of the rows, so one task runs for an hour after the rest finish.
Diagnosis
Planned
Learn
Published12 lessons
Practise
Live15 scenarios

Batch and streaming are one area because the concepts are the same. Spark versus Flink is how you phrase an answer, not what is measured.

Pipeline Orchestration & Reliability

Idempotency, retries, backfills, observability, and failure isolation – whether the pipeline survives a bad day.

Junior
Runs steps manually or with brittle scheduling; little idempotency.
Mid
Builds DAGs with retries; partial-failure and backfill handling is incomplete.
Senior
Designs idempotent, observable pipelines with clear SLAs, safe backfills, and failure isolation.

Assessed viaEDITORSCENARIOREPO(not offered yet)VIVA

TrapA backfill that re-runs an INSERT task for 30 days and double-counts every day that had already succeeded.
Diagnosis
Planned
Learn
Planned
Practise
Live5 scenarios

The single biggest senior-versus-junior separator in real data-engineering work.

System & Scenario Judgment

Cross-cutting senior judgment – framing ambiguous problems, naming assumptions and trade-offs, and defending decisions.

Junior
Solves the stated task; doesn't surface trade-offs or constraints.
Mid
Identifies obvious trade-offs; weighs cost, latency, and complexity inconsistently.
Senior
Frames ambiguous problems, names assumptions and trade-offs, and defends decisions against cost, scale, and failure.

Assessed viaEDITORSCENARIOREPOVIVA(not offered yet)

TrapChoosing streaming for a report that is read once a day, and paying for it every hour.
Diagnosis
Planned
Learn
Planned
Practise
Planned

Separable from technique: often high when technique is mid, and low when technique is high. That is why it is its own area.

Where tools fit

Skill areas are concepts. The five tool tracks are practice paths that sit under an area; they never change what is measured.

Tool trackSkill area
Kafka04
Spark04
Flink04
Airflow05
Iceberg03 (storage) and 04 (processing)

What isn’t a seventh area, and why.

Data quality and testing is real and central, but it lives inside three areas rather than as a seventh: testing in Programming, in-pipeline validation gates in Orchestration & Reliability, and constraints, contracts and schema evolution in Data Modeling. If assessment data shows those gaps slipping through, it becomes its own area. The decision is written here so it isn’t lost.

Written down so it isn’t lost.

How this becomes a report

SQLsenior
Programmingmid
Modelingmid
Distributednot assessed
Orchestrationmid
Judgmentattempted · junior!

Six separate facts. They never combine into one score.

This is the public rubric. The Coached Pass annotates it against your own submissions.

Version

Rubric v1.4 · changed 28 Oct 2026

v1.4 – Levels relabelled junior · mid · senior; definitions unchanged.

Know exactly what to learn next.

Diagnose your SQL free →See a sample report →

No card · one-time payments for the passes.