Build Your Foundation
Data Engineering Roadmap for Beginners: Zero to Data Engineer
Never built a pipeline? Eight stages, in the order a beginner can actually climb them.
It opens on your dashboard and ticks itself off as you go. Every step below is a chapter or an exercise that already ships.
01
When you finish, you can
You can design, build, schedule and explain a data pipeline end to end.
Data engineer You can build it end to end
02
The plan, 8 stages
Ordered by what each one buys you, not by topic. Every step says why it is here.
Stage 01 · ~1h
See the whole map before any of the pieces
You can sketch a data platform and say what each box does.
Skip this if you can already explain ingest, store, transform and serve.
- SectionLife without a pipeline: the manual tax5 minThe manual work this whole job exists to replace.
- SectionAnatomy: four stages, two guardrails5 minThe map for the rest of this plan.
- SectionFollow one row: a click becomes a number6 minOne click, followed all the way to a dashboard.
- SectionThe five-stage lifecycle6 minEvery later stage of this plan is one of these five.
- SectionWhat the order actually decides5 minThe two letters every job posting uses. Know what moved.
- SectionLatency: a budget, not a dial5 minWhy you start with batch, and when you would not.
- SectionWhich tool goes in which box6 minSo tool names stop being noise and become boxes.
- Worked exampleDaily orders ETL30 minin the studioA finished pipeline. Walk it before you build one.
Stage 02 · ~3h
Clean a messy file with Python
You can read records, clean them, validate them and count them.
Skip this if you already write small, tested Python transforms.
- SectionThink in records, not syntax4 minThe one habit that separates data code from scripts.
- SectionEvery job is input → transform → output5 minEvery exercise in this stage has exactly this shape.
- Worked exampleCount events by type20 minin the studioRead the reference answer first, then change it.
- ExerciseClean spreadsheet headers into column names25 minin the studioSpreadsheet headers into column names. Your first real cleanup.
- SectionDicts: the workhorse record6 minA row is a dict. Most pipeline Python is dicts.
- ExerciseTotal revenue by region25 minin the studioGroup and sum by hand, before SQL does it for you.
- ExerciseParse CSV that split(',') cannot25 minin the studioWhy split on commas breaks on the first real file.
- SectionNulls are not all the same5 minEmpty string, None, "N/A": three different missing values.
- ExerciseDeduplicate rows, first one wins20 minin the studioSources send duplicates. Decide which copy wins.
- ExerciseValidate rows against a schema25 minin the studioReject bad rows loudly instead of loading them quietly.
Stage 03 · ~3h
Ask a table a question in SQL
You can filter, group, join and rank rows, and trust the count.
Skip this if you already write joins and window functions from memory.
- SectionReading a table: rows, columns & grain5 minWhat does one row mean? Ask it of every table.
- SectionThe shape of a query4 minThe clauses run in a different order than you write them.
- Worked exampleFirst look at the orders table10 minin the studioThe dataset for this stage. Read the reference answer first.
- ExerciseFilter January's bigger orders15 minin the studioAND, OR and a date range. Precedence is the trap.
- ExerciseLabel orders by value band15 minin the studioCASE turns a number into a label a report can use.
- SectionNULL & three-valued logic6 minThe same missing values as Python, with stranger rules.
- ExerciseBucket missing countries10 minin the studioMissing countries still count. Give them a bucket.
- SectionGROUP BY: one row per group5 minThe Python grouping from stage two, in one clause.
- ExerciseRevenue by buyer country15 minin the studioThe shape of almost every report you will ever build.
- SectionLEFT JOIN: keep the whole left side5 minThe join that keeps rows with no match.
- ExerciseOrders with no line items12 minin the studioFind what is missing, the first audit every engineer runs.
- SectionFan-out: when a join doubles your metric6 minWhy a correct-looking total can be twice too big.
- ExerciseRevenue per customer without double counting15 minin the studioYour total will come out too big. That is the lesson.
- ExercisePaid order CTE decomposition15 minin the studioStretch: CTEs, so a long query reads top to bottom.
- SectionOVER: partition, order & frame6 minA window keeps every row and still sees its neighbours.
- ExerciseRunning daily revenue15 minin the studioStretch: a running total, the friendliest window there is.
- ExerciseFirst and latest order per buyer15 minin the studioStretch: first and latest per key. You will reuse it weekly.
Stage 04 · ~3h
Design tables that answer questions
You can declare a grain, choose keys, and split facts from dimensions.
Skip this if you can already draw a star schema and defend its grain.
- SectionWhat a data model actually is4 minUp to now you queried tables. Now you decide them.
- SectionEntities & attributes5 minFind the nouns in a business, and what describes them.
- Worked exampleMarketplace core entities25 minin the studioThe same marketplace you queried, modelled. Study every answer.
- SectionDeclaring grain before you build6 minThe fan-out you hit in SQL, prevented at design time.
- SectionPrimary keys & candidate keys5 minWhat makes one row different from every other row.
- ExerciseRide hailing trips30 minin the studioOne person, two roles. Model it without duplicating people.
- SectionMany-to-many bridges6 minThe relationship a single foreign key cannot hold.
- ExerciseSocial feed and follows30 minin the studioA follow points at a user on both ends.
- SectionFact tables: what you measure6 minAnalytics tables have a different shape. Facts come first.
- SectionThe star schema in action6 minFacts in the middle, dimensions around. Most warehouses look like this.
- ExerciseCinema seat booking30 minin the studioGive the right thing its own row and double-booking disappears.
Stage 05 · ~3h
Build a batch pipeline you can re-run
You can build a pipeline that waits, checks itself and survives a rerun.
Skip this if your pipelines are already idempotent and validated.
- SectionClean, shape, aggregate5 minEverything you did in Python and SQL, named as pipeline steps.
- ExerciseYour first pipeline30 minin the studioOne file a night, one report by morning.
- ExerciseWaiting for the file30 minin the studioStop betting that somebody else’s file arrived on time.
- SectionIdempotency: safe to repeat5 minEvery pipeline runs twice eventually. Plan for it now.
- ExerciseCounting it once30 minin the studioThe rerun that doubles revenue, and the design that cannot.
- SectionPartitions: the unit of reprocessing6 minProcess one day at a time, so one bad day is fixable.
- ExerciseRun it for last Tuesday30 minin the studioRe-run one past day without touching the rest.
- SectionWriting validation checks6 minThe Python validation from stage two, as a pipeline gate.
- ExerciseWhere did the rows go?30 minin the studioRows vanished between source and report. Make it impossible silently.
- ExerciseThe column that vanished30 minin the studioThe source changed shape overnight. Catch it before the dashboard.
Stage 06 · ~2h
Schedule it with Airflow, structure it with dbt
You can read an Airflow DAG and lay out a dbt project.
Skip this if you have shipped an Airflow DAG and a dbt model.
- SectionWhen one script becomes a system5 minThe moment your pipeline needs something to run it.
- SectionWhy the graph must not loop5 minDAG is the word Airflow, dbt and Spark all share.
- SectionThe whole file, and why each line is there7 minA real DAG file, read line by line.
- ExerciseAfter the first one finishes30 minin the studioReplace "wait thirty minutes" with a real dependency.
- SectionWhich runs exist, and when they fire7 minWhy Monday’s run fires on Tuesday. Everyone trips once.
- ExerciseWhich day does it belong to?30 minin the studioLate events land on the wrong day unless you decide.
- SectionWhat dbt actually does5 minYour SQL, versioned, tested and built in the right order.
- SectionYour first model6 minA model is a SELECT in a file. That is all.
- Sectionref(): the one call that builds the graph6 minOne function, and dbt works out the build order.
- Exercisedbt: the DAG that never leaves the warehouse30 minin the studioLay out staging and marts, the way dbt projects do.
- SectionWhy your SQL moved into a repo5 mindbt lives in Git. So does every team you will join.
Stage 07 · ~2h
Run it on Spark when one machine is not enough
You can run a Spark job and explain what it did.
Skip this if you can already read a Spark plan and its stages.
- SectionWhen one machine isn’t enough5 minThe same transforms, once the data outgrows a laptop.
- SectionWhen to use Spark, and when not to5 minMost data does not need Spark. Know the line.
- SectionDriver & executors: the brain and the workers6 minWho plans the work, and who does it.
- SectionLazy evaluation: nothing runs until it must6 minThe line that looks slow is rarely the slow one.
- Worked exampleRevenue by country: read the DAG behind one groupBy20 minin the studioYour SQL stage’s revenue report, run on real Spark.
- ExerciseTwo counts, two scans: which lines of PySpark actually cost anything?10 minin the studioTwo counts, two scans. Prove it from the job list.
- ExerciseNarrow vs wide: what makes Spark cut a new stage?15 minin the studioWhy a groupBy splits the job and a filter does not.
- ExerciseIs Spark SQL slower than the DataFrame API? Settle it with explain()15 minin the studioYour SQL carries over. Same plan either way.
- ExerciseWhy is Parquet faster than CSV? Answer from the plan, not folklore20 minin the studioWhy data teams store Parquet, answered from the plan.
- SectionReading the Spark UI: a tab-by-tab tour7 minWhere you look first when a job is slow.
Stage 08 · ~2h
Design one end to end, then say it out loud
You can design a pipeline from requirements and explain every choice.
Nothing to skip — this is where the earlier stages become one skill.
- SectionThe requirements-first method6 minAsk what is needed before you pick a single tool.
- SectionThe questions to ask first6 minThe questions that shape a design before any box appears.
- ExerciseThe history nobody kept30 minin the studioCapstone: a pipeline and a model, designed together.
- ExerciseThe spreadsheet is a dependency30 minin the studioTwo inputs, one edited by hand. Design for both.
- SectionNarrating a design6 minExplaining a design is its own skill. Practise it here.
- InterviewOne letter moved. What went with it?6 minStage one’s map, explained without notes.
- InterviewWhat is the grain of a table6 minAsked in nearly every modelling round. Answer in one sentence.
- InterviewFact or dimension6 minStage four, out loud: measured or described?
- InterviewThe four idempotent writes6 minStage five in one answer: why a rerun is safe.
- InterviewYou already have Airflow6 minStage six: what each tool is for, and why both.
- InterviewThe three components, named6 minStage seven: the opening question of most Spark screens.
- QuestionsData Pipeline · Conceptual15 minTwenty questions across the whole plan. Say, then check.
03
Start it now
Reading is free and needs no account. The plan itself tracks on your dashboard.
