Data Engineering’s 10 Silent Killers
In data engineering, the scariest problems are rarely caused by frameworks or languages.
Data Engineering’s 10 Silent Killers
In data engineering, the scariest problems are rarely caused by frameworks or languages.
They’re caused by everyday words that sound harmless in design docs… but behave very differently in production.
After working on recommendation systems, streaming pipelines, campaign platforms, and analytics stacks, I’ve realized something simple:
Most production incidents can be traced back to one of a few “trigger words” nobody worried enough about during design.
Here are the top 10 I’ve learned to respect the hard way.

Data Engineering’s silent killers
1. Backfill
On paper, it sounds routine: We’ll just backfill last month’s data.
In reality, it often means:
- rerunning huge historical datasets
- recomputing aggregations
- handling schema changes that happened mid-way
- fixing previously “final” outputs
It is scary because Backfills expose every assumption your pipeline ever made. If idempotency wasn’t designed properly, a simple backfill becomes a data corruption event.
2. Duplicate
One of the most deceptively dangerous problems.
Duplicates come from:
- retries
- Kafka reprocessing
- API retries
- Airflow reruns
- CDC replay
- network failures
Everything looks successful, but metrics silently inflate. This is especially painful in:
- revenue systems
- recommendation features
- campaign attribution
Nothing breaks visibly… until business decisions start going wrong.
3. Schema Change
Schemas never stay stable in real systems.
Common changes:
- column rename
- type change (string → int)
- nested JSON restructuring
- new optional fields
- removed fields
This is a silent killer because It often breaks downstream systems silently, not immediately. Dashboards drift. Models degrade. Joins behave differently. By the time you notice, the damage is already historical.
4. Latency Spike
This shows up often in streaming systems.
Symptoms:
- delayed dashboards
- Kafka lag increasing
- Spark streaming backlog growing
- stale features in ML systems
Why it’s scary? Latency spikes are usually symptoms of deeper system imbalance.
Common root causes:
- data skew
- partition bottlenecks
- sudden traffic bursts
- state store overload
In real-time systems, latency is not just performance — it’s correctness.
5. Discrepancy
This is the word that usually starts full-blown debugging sessions.
Examples:
- Revenue doesn’t match between systems
- DAU is different in two dashboards
- Why do these numbers not align?
It means you don’t know where the truth broke.
Now you’re checking:
- upstream ingestion
- transformations
- joins
- filters
- metric definitions
- time windows
It’s rarely one issue. It’s usually a chain of small mismatches.
6. Idempotency
This one is subtle but critical. Idempotency means running the same job multiple times does not change the result.
Why it matters:
- retries happen
- jobs fail and restart
- backfills rerun data
- pipelines get replayed
This is scary because if idempotency is missing, every retry quietly corrupts your data. Instead of failing loudly, systems degrade silently.
7. Late Data
Real-world data is rarely on time.
Causes:
- mobile offline sync
- event queue delays
- retry mechanisms
- distributed ingestion lag
Late data breaks assumptions in time-based systems.
Impacts:
- sessionization
- hourly metrics
- attribution logic
- real-time dashboards
Without handling it properly, numbers shift after they were already “finalized.”
8. Skew
A classic distributed systems issue.
Example:
- one user generates 30% of traffic
- one campaign dominates ingestion
- one partition becomes “hot”
One bad key can slow down or crash an entire job.
Symptoms:
- single Spark task stuck
- uneven executor utilization
- long tail job delays
Skew turns parallel systems into serial bottlenecks.
9. Replay
Replay sounds like a good thing: We can just replay the data.
Until you realize:
- ordering may change
- duplicates may appear
- downstream systems may not be idempotent
- state may be inconsistent
Replay exposes whether your system is truly deterministic. If not designed carefully, replay turns into duplication + inconsistency.
10. Ownership
This is the most underestimated one. When ownership is unclear:
- multiple pipelines compute the same metric
- definitions drift across teams
- dashboards conflict
- nobody trusts the data
Even perfect pipelines fail if nobody owns the meaning of the data.
Without ownership:
- schema changes are uncontrolled
- metric definitions diverge
- debugging becomes political, not technical
Final Thought
Data engineering failures rarely come from “hard problems.” They come from familiar words used too casually:
- backfill
- duplicate
- schema change
- latency
- discrepancy
- idempotency
- late data
- skew
- replay
- ownership
Individually, they sound manageable. Together, they define the real complexity of production data systems.
Because in real-world pipelines, correctness is not about writing SQL or Spark jobs. It’s about surviving everything that happens after you deploy them.
If you’re building data platforms, exploring analytics, or just love thinking about how data actually tells a story, feel free to follow or leave a clap 👏. It’s a small signal, but it helps me keep writing honest, example-driven content about data modelling, fact tables, dimensions, and the patterns that make analytics work.
Thanks for reading and for keeping curiosity alive ❤️.
Visit my site:
**Data Engineering Roadmap — Guru, Eerla | Data Engineering**
**Data Engineering Skills Guide — Guru, Eerla | Data Engineering**
메타데이터
- post_id
- d421065d9405
- slug
- data-engineerings-10-silent-killers-d421065d9405
- url
- https://medium.com/@think-data/data-engineerings-10-silent-killers-d421065d9405
- canonical_url
- https://medium.com/@think-data/data-engineerings-10-silent-killers-d421065d9405
- author_url
- https://medium.com/@think-data
- status
- ok
- fetched_at
- 2026-06-09 15:37:30