Data engineering practice

Each challenge is a brief someone could plausibly hand you, followed by what is actually going on underneath it. Decide what you would do before opening anything else — and read the trap on every one, because the trap is the fix that looks right and makes the next incident worse.

beginner5

One pipeline, done properly. Where transformation runs, what one row means, why the file format matters.

intermediate6

Partitioning, orchestration, incremental loads, a warehouse model and the first quality test that fails.

advanced6

Change capture, a partitioned log, a shuffle you can read, skew you can find, and a backfill that does not corrupt today.

expert5

Platform design, real-time analytics, governance across teams, and incidents where every job was green.

Beginner

Intermediate

A small, steady shortfall that never alertsOrchestration

Reconciliation against the source shows the warehouse is short by a small number of orders every single day. It is never large enough to move a volume check. Re-running the extract for a past day changes nothing.

Queries got slower and the data did not growLayout

A table was repartitioned by customer_id two months ago to speed up per-customer lookups. Those lookups did get faster. Every other query against the table has become progressively slower, and the volume of data has barely changed.

The nightly rebuild no longer finishesRecovery

A nightly job rebuilds a fact table from all history. It has been getting slower for a year and now regularly runs past the morning deadline. The team has already increased the warehouse size once, which bought a few months.

Every check is green and the tile is hours oldObservability

A consumer reports that a dashboard tile shows an old figure. Freshness monitoring is green, the serving dataset was published on time, row counts are normal, and querying the model directly returns the current number.

A category quietly stopped growingContracts

A breakdown by subscription status has looked stable for two months, while the total has grown. One status has been flat since a mobile release, and no check has fired. Types are unchanged and no schema diff exists.

Three systems know the customer's country and they disagreeFoundations

Revenue by country differs depending on which model an analyst uses. The CRM, the orders table and the payments provider each hold a country for a customer, and for a meaningful set of customers the three do not agree.

Advanced

Last March's report is different this MarchModeling

An auditor asks the team to reproduce a revenue-by-customer-tier figure from a report filed a year ago. The pipeline is deterministic, the raw data is retained, the code is at the same version — and the recomputed figure does not match the filed one.

The stream join is missing matches and the state keeps growingStreaming

A streaming job joins orders to payments on order id and emits a matched record. Checkpoint size grows steadily, restarts take longer each week, and a meaningful share of matched pairs never appear in the output even though both sides are present in the log.

A join that used to be free is now the whole jobCompute

A job that joins a large fact to a small dimension ran comfortably for a year. Over the past two months its runtime has climbed sharply. Nothing in the code changed, and the fact table has grown only modestly.

The consumer needs to replay data the log no longer hasLogs

A new downstream model needs a year of event history to compute its first output. The broker retains a fraction of that. A team member suggests raising the retention setting and re-running.

A report captured a state that never existedReliability

A scheduled report occasionally produces a figure that matches no version of the data. It happens perhaps once a month, always in the same half-hour, and the run it read from was green.

A deletion request, and the copies nobody listedGovernance

A customer exercises a deletion right. The source row is deleted and the request is marked complete. Weeks later their support text is returned by the in-product assistant, and their name appears in a monthly aggregate that is regenerated on demand.

Expert

Changing a definition that two years of reports were built onTransform

The company decides that its headline retention metric should exclude a customer segment it has always included. The decision is correct and final. Two years of published figures, several external filings and every trend chart in the company were computed under the old definition.

A shared bill that nobody can decomposeCost

Eight teams share one warehouse. Spend has grown steadily for a year. Every team believes their usage is modest and each is right about their own share. Leadership wants the total reduced and has asked for a plan by the end of the month.

The federated query times out and everyone has an opinionEngines

A dashboard joins a warehouse fact table to a table in an operational database through a federated query engine. It was fast when it was built. It now times out, and it is also showing up on the source database's slow query list.

Splitting a central platform into domain ownershipArchitecture

One data team of four supports twelve product teams and is a permanent bottleneck. Leadership approves a move to domain ownership: each product team will own its own data products. The reorganisation is announced with a date.

One warehouse, or one per regionPlatforms

The product now operates in regions with data residency requirements: certain personal data may not leave its region. The platform is a single warehouse in one region. Finance needs global revenue; product analytics needs global behaviour; the legal position is not negotiable.