All three write SQL every day. Past that, a data engineer, an analytics engineer, and an ML engineer barely share a job. One keeps the pipelines from silently dropping rows overnight. Another turns raw tables into numbers the business will actually trust. The third keeps a model answering requests in under 50 milliseconds. The titles get thrown around loosely, especially at startups where one person wears two of the hats, so being precise pays off: the thing you build, the interview you sit, and the number on the offer differ far more than the shared SQL suggests.
What each one actually builds
The data engineer owns the plumbing. They stand up ingestion from Kafka topics and third-party APIs, land it in a warehouse or lakehouse like Snowflake, BigQuery, or Databricks, and schedule the whole thing with Airflow or Dagster so it reruns cleanly when a source drops out mid-run. When a nightly job that used to finish in twenty minutes starts taking three hours, that pager is theirs. The hard parts never show up in a dashboard: idempotent writes so a retried batch doesn’t double-count revenue, backfills that don’t melt the warehouse, schema changes that don’t silently break every table downstream.
The analytics engineer lives one layer up, between raw data and the people asking questions. The role barely existed before dbt turned it into a job. They take the messy tables the data engineer landed and shape them into clean, tested, documented models that an analyst or a Looker dashboard can rely on. Most of the work is SQL and dbt: pinning down what ‘active user’ means so finance and product stop reporting two different numbers, modeling slowly changing dimensions so last quarter’s report still reproduces, getting the grain of each table right. It sits closest to the business, and it’s the role where one wrong join quietly corrupts a board deck.
The ML engineer takes a model and makes it survive contact with production. Sometimes they train it. More often they take a data scientist’s notebook and turn it into something that serves predictions at scale, behind a feature store, with monitoring for drift and train-serve skew. Their failures look different again: a recommendation model whose p99 latency blows past the SLA, features computed one way in training and another way at inference so the offline metrics lied, a slow accuracy decay after the input distribution shifts under them. Half the job is software engineering. The other half is knowing enough statistics to catch a metric that’s lying to you.
Build, stack, interview, and pay, side by side
| Role | What you build day to day | Stack you’re hired for | What the interview leans hardest on | Rough US total comp, 2026 (base + bonus + equity; varies by level and company) |
|---|---|---|---|---|
| Data engineer | Ingestion, warehouse and lakehouse models, orchestrated jobs that rerun cleanly | SQL, Python, Spark, Kafka, Airflow or Dagster, Snowflake / BigQuery / Databricks | Hard SQL plus a pipeline design round covering throughput, late data, and exactly-once | Roughly $120K to $260K+, higher at big tech |
| Analytics engineer | dbt models, tested metric definitions, the clean layer under every dashboard | SQL, dbt, a cloud warehouse, a BI tool like Looker or Tableau | The hardest SQL of the three, dbt modeling, and a stakeholder-translation round | Roughly $90K to $175K, closest to the analyst band |
| ML engineer | Model serving, feature pipelines, training jobs, drift and skew monitoring | Python, PyTorch or TensorFlow, a feature store, serving and MLOps tooling | Coding, ML system design, and ML fundamentals, plus LLM and RAG questions in 2026 | Roughly $150K to $320K+, top firms well past that |
Treat the comp column as a broad US band, not a promise. Those ranges come from levels.fyi and Glassdoor reads in mid-2026, and they move every quarter. levels.fyi shows Google data-engineer packages clustering near $275K total at the median, big-tech ML-engineer medians in the mid-$200Ks, and Meta’s ML medians well past $400K once you count equity. Look up your specific target company and level rather than trusting any average, because the spread inside a single title is wider than the gap between titles.
Three interview loops that test different muscles
The data-engineer loop opens with SQL that goes past the basics: window functions, gaps-and-islands, deduping with ROW_NUMBER over a partition. Then comes a pipeline or data-modeling design round, phrased like ‘design a pipeline that ingests 100k events per second and makes them queryable within a minute, and handle late-arriving data and exactly-once delivery.’ Expect a Python round, and at the more systems-heavy shops a distributed-data question about partitioning, Kafka consumer groups, or when a lakehouse beats a plain warehouse.
The analytics-engineer loop leans on the hardest SQL of the three, the nested aggregations and self-joins and funnel queries that make or break the interview. There’s usually a dbt or data-modeling round, often a take-home where you build a staging-to-marts model and then defend your grain and your tests. The round people underestimate is the stakeholder one: ‘a PM says signups dropped 10 percent this week, walk me through how you’d confirm it’s real and not a tracking bug.’ Communication gets scored heavily here because the job is translation, and an analytics engineer who can’t push back on a bad question is a liability.
The ML-engineer loop is the most crowded and the most varied. A coding round, usually medium-difficulty arrays, strings, and hash maps. An ML system design round like ‘design the ranking system for a feed,’ which wants candidate generation, feature choices, online versus offline serving, and how you’d evaluate it before and after launch. An ML-fundamentals round on precision-recall tradeoffs, overfitting, and why your AUC looked great offline and cratered in production. Through 2026 there’s increasingly an LLM or RAG question even on teams that never touch language models, covering chunking, retrieval evaluation, and when fine-tuning actually beats prompting.
Why the offers split the way they do
Analytics engineer is the newest of the three and sits closest to the analyst pay band, roughly $90K to $175K total in the broad US market, with senior and big-tech roles reaching higher. Data engineer spans wider because it shades into backend and distributed-systems work; early-career offers land around $120K and climb well past $250K total at large companies. ML engineer tends to top the three at scaled firms and carries the strongest tailwind right now, because the AI hiring wave is bidding up anyone who can reliably ship a model. None of that gap is a verdict on difficulty. It tracks two things: how close the role sits to revenue, and how scarce the skill is this year. Equity is where the real spread hides, so an offer’s headline base tells you almost nothing until you see the stock grant and the refresh.
The lines are blurring, especially in 2026
At a fifty-person startup, the data engineer and the analytics engineer are frequently the same person, and ‘ML engineer’ might describe whoever wired up an API call to a hosted model. AI tooling is eating the boundaries too. dbt ships AI-assisted modeling now, pipeline copilots write half the boilerplate, and an analytics engineer who picks up Python and orchestration is doing data-engineering work by the end of the month. The clean split holds mainly at companies with the headcount to specialize. Read the job description, not the title: two postings that both say Data Engineer can want a Spark-tuning distributed-systems person or a dbt-and-SQL modeler, and the interview follows whichever one they meant. The freshest fork is AI engineer versus ML engineer, where AI engineer usually means LLM-application work such as RAG, agents, and evals, while ML engineer still means training and serving models, though plenty of companies use the two names interchangeably.
Which one to aim for
If you like SQL, want to stay out of the on-call rotation, and get a real kick out of making a company agree on one definition of a number, analytics engineer is the fastest of the three to get good at and the most natural jump from an analyst or BI role. If you’d rather build systems, care about throughput and correctness under failure, and would take debugging an Airflow DAG over debugging a stakeholder, data engineer is the most portable path and slides naturally into backend and platform work. If you want the highest ceiling available today and you’re willing to carry both the software engineering and enough statistics to know when you’re fooling yourself, ML engineer pays the most and has the most wind at its back, at the cost of the steepest loop and the heaviest competition.
Pick the one whose worst day you can live with. Each of these jobs is defined more by what breaks at 3 a.m. than by what it ships on a good afternoon, and you’ll be doing that particular kind of debugging for years.
Line up the rest of your job search:
