The 80% problem
Every machine learning project, every dashboard, every analytics report, every automated email — all of them sit on top of data that came from somewhere messy. Industry surveys have been saying the same thing for fifteen years now: practitioners spend roughly 80% of their time wrangling data and 20% on the thing the data was supposedly for. The percentages move a little, but the order never flips.
That 80% is data engineering. It's not glamorous. It's not what you put on a slide deck. But a model trained on dirty data will produce garbage predictions. A dashboard fed inconsistent schemas will tell lies. A pipeline with hidden assumptions will silently fail at 3 AM, and the only person who knows is the person who wrote it — and they left the company eight months ago.
What this quest means by "data engineering"
The phrase has gotten bloated. To some people it means building Spark clusters that process petabytes. That's a real job, but it's a niche one. For the vast majority of practitioners — including everyone reading this quest — data engineering means something more useful and more grounded:
- Reading messy files (CSVs with mixed types, Excel sheets full of merged cells, JSON arrays nested four levels deep) and figuring out what's actually in them.
- Cleaning — fixing types, parsing dates, handling nulls, normalizing strings, deduplicating.
- Transforming — joining tables, aggregating, deriving new columns, reshaping wide-to-long.
- Validating — catching schema drift before it ruins downstream models.
- Producing trustworthy outputs that other people (or future you) can build on without checking your work.
That's the job. It's done in Python (mostly), it lives in version control, and it gets tested. If you want to scale to petabytes later, the same thinking carries — you just swap Pandas for Spark or Dask. The discipline doesn't change.
What you'll be able to do by the end
- Read any reasonable file format (CSV, Excel, JSON, Parquet, Arrow IPC) and build an explicit schema instead of trusting auto-detection.
- Clean and transform data with Pandas or Polars depending on which one fits the job.
- Write rerunnable, idempotent pipelines that produce the same result whether you run them once or twenty times.
- Validate data with Pandera or Great Expectations before downstream consumers see it.
- Schedule and monitor pipelines with Airflow, Dagster, or Prefect — and explain why you picked the one you did.
- Model data for analytics (star schemas, slowly changing dimensions) and use dbt to express transformations as code.
- Reason about cost, lineage, PII, and the things that turn a one-off script into a system that lasts.
That's the contract. The next 46 lessons get you there.