Tech Job Titles: Same Job, Different Price

We read 3,060 job postings from 2026 for ten tech titles in the US and Canada. Titles that ask for almost the same skills can still sit 35% to 60% apart in posted base salary.

Executive summary

A job title in tech is supposed to tell you what the work is. It also sets the pay band. This post checks whether those two things line up.

We collected 3,060 job postings published in 2026 for ten titles in the United States and Canada. For each title we measured which skills the postings ask for, then compared titles by how much those skill lists overlap. Separately, we took the base-salary ranges the postings disclose, and the base salary and total compensation (TC: base plus equity and bonus) that people report on levels.fyi. Every pay figure in this post says which of the two it is.

Key takeaways:

1
Similar skills do not mean similar pay. The three most similar pairs of titles all score 0.85, yet Analytics Engineer postings advertise a base salary 60% above Data Analyst postings, and ML Engineer postings 35% above MLOps Engineer postings.
2
Forward Deployed Engineer is more than a renamed Software Engineer. Customer-facing work appears in 73% of FDE postings and 5% of all others, and its closest neighbour on skills is AI Engineer (0.84), ahead of Software Engineer (0.80).
3
AI Engineer sits between FDE and ML Engineer, and is paid below both. It scores 0.84 with FDE and 0.83 with ML Engineer on skills, and its US postings advertise a median base of 173k, against 207k for FDE and 255k for ML Engineer.
4
The ten titles form two families. Builders (Software, FDE, AI, ML, MLOps) and data roles (Data Engineer, Analytics Engineer, Data Analyst, Data Scientist, Business Analyst). No technical skill appears in 60% of postings for every title; only cross-team collaboration does.
5
The newest titles have real signatures. Analytics Engineer is defined by dbt and the semantic layer, MLOps by CI/CD for models and experiment tracking, FDE by customer work and prototyping.

How the data was built

This section comes first because every number later depends on it.

Postings. We read 2,073 postings from 157 employers through the public job-board APIs of Greenhouse, Lever and SmartRecruiters. We added 987 postings from LinkedIn’s public job pages for the cells the boards left thin: all ten titles in Canada, and Analytics Engineer, MLOps Engineer, Data Analyst, Business Analyst, FDE and AI Engineer in the US. Every posting was published between 5 January and 3 October 2026. A posting without a date was dropped, not guessed. The same requisition posted to several cities counts once.

Titles. Raw titles were mapped to the ten titles by a fixed rule sheet. Managers, interns, new-grad programmes, sales engineers and contract roles were excluded. A title counts as FDE when it says “forward deployed” (or FDE) and “engineer”; field strategists and forward-deployed data scientists do not. Ambiguous titles were decided by the posting text. We also collected Backend Engineer, but dropped it: in an earlier run its skill profile was almost identical to Software Engineer, so it added a row without adding information.

Skills. A taxonomy of 167 skills in seven groups (languages, data engineering, ML, LLM and GenAI, cloud and infrastructure, product and analytics, soft skills) was built from 120 postings. Each skill is one regular expression, applied to every posting after the company introduction, benefits and legal notices are stripped. No language model is involved, so the same postings always give the same matrix.

Checks. The taxonomy went through three rounds of review by a reviewer who had not built it, each on postings it had never seen. The final round measured precision (when the extractor says a posting asks for a skill, is it right?) and coverage (of the skills a posting asks for, how many does the taxonomy catch?). It did not pass every target: coverage and the LLM skill group fell short. The numbers are in the limits section.

Pay. 1,852 postings disclose a salary range, mostly base salary; 26 Canadian ones that reuse the company’s US range are set aside, leaving 1,826. We use each range’s midpoint and call it posted base. Separately, levels.fyi publishes self-reported pay per title as distributions of base salary and of total compensation (TC), which adds equity and bonus. Posted base is compared with levels.fyi base; levels.fyi TC is shown as its own series. The sources are never averaged together.

Throughout, a title-country cell with fewer than 20 postings is not shown, and 20 to 39 is marked low n. The pay explorer is the exception: it draws cells from 7 postings, flagged very low n.

The common core is collaboration

Start with what every one of these jobs asks for. We set the bar before looking at the data: a skill in the common core must appear in at least 60% of postings for every one of the ten titles.

One skill clears it: working across teams. No technical skill does. Python, the most widely requested language, is in 83% to 89% of data-engineering and data-science postings, but in 5% of Business Analyst postings.

Share of JDs asking for the skill: lowest title to highest title (required or preferred)
Cross-functional collaboration
72% to 89%
Stakeholder communication
38% to 89%
Ownership / autonomy
33% to 59%
Comfort with ambiguity / fast pace
23% to 56%
Written documentation
22% to 84%
Problem framing / trade-offs
22% to 46%
Software testing (unit/integration)
16% to 59%
SQL
13% to 99%

Each bar spans from the title with the lowest share to the title with the highest. Collaboration is the only bar that starts above 60%.

So the ten titles do not share a technical base. To see what separates them, look at the full map.

The skill map

The table shows, for 28 skills, the share of postings for each title that ask for it. These are the 28 skills whose share varies most between titles. Titles are ordered so that similar ones sit next to each other; the order comes from the clustering further down.

ML EngMLOps EngSoftware EngFDEAI EngBusiness AnalystData ScientistData EngAnalytics EngData Analyst
Machine learning (general)9991213064372342014
MLOps / ML platform708862032115600
Kubernetes1975301525031520
CI/CD19712721322742290
Observability / monitoring (Prometheus, Grafana, Datadog)26694020393951285
Docker / containers1367191434041340
AWS276335314311255207
Customer-facing / client work40473778544
LLMs (general)574217498922513156
AI agents / agentic systems402023528011416135
RAG / retrieval221552470010620
API design (REST, gRPC, GraphQL)224047596615829155
Prompt / context engineering1254216316130
Written documentation22282840328424396343
Requirements gathering / analysis129818238213194932
Process mapping / improvement052467826715
Agile / Jira4127215654979
Python7380456377589837458
ETL / ELT pipelines3139152826323896129
Data quality / contracts / testing9167681114716955
Data platform / data products72111147519705724
SQL19211316152578849985
Data modelling (dimensional, star schema)1211791014748840
Business intelligence (general)301111612287772
dbt2232208467514
Dashboards / reporting510108133733398187
Data analysis (general)71526373793378
Data visualisation / storytelling1432293273067
JDs (n)2051121583193161174185136112199

Percent of postings mentioning the skill as required or preferred. Darker means more common.

Two blocks stand out. On the left, the builder titles share Python and cloud platforms, and ML, MLOps and AI Engineer add the ML stack. On the right, the data titles share SQL and data modelling. The boundary is sharp: SQL is in 99% of Analytics Engineer postings and 13% of Software Engineer postings.

Signature skills

Raw prevalence mixes two things: what a title needs, and what every title needs. To isolate the first, we compare each title’s rate for a skill with the rate in all other titles combined, using a smoothed log-odds ratio (details below). A signature skill is common in that title and rare elsewhere.

TitleSignature skills (this title vs all others)
ML EngMachine learning (general) 98% vs 29%; Graph ML / GNNs 4% vs 0%; JAX 7% vs 0%; PyTorch 53% vs 5%
MLOps EngCI/CD for ML / continuous training 54% vs 2%; Experiment tracking / model registry (MLflow, W&B) 54% vs 3%; MLOps / ML platform 88% vs 12%; Feature stores 23% vs 2%
Software EngKotlin 9% vs 1%; Go 29% vs 5%; Mobile development (iOS, Android, Swift) 8% vs 1%; Rust 11% vs 2%
FDECustomer-facing / client work 72% vs 5%; Enterprise integrations / iPaaS 10% vs 2%; Rapid prototyping / proof of concept 38% vs 11%; Product sense / product strategy 27% vs 8%
AI EngPrompt / context engineering 63% vs 5%; RAG / retrieval 70% vs 8%; LLM frameworks (LangChain, LlamaIndex, HF) 46% vs 3%; LLMs (general) 89% vs 21%
Business AnalystProcess mapping / improvement 78% vs 3%; UAT / acceptance testing 44% vs 2%; Requirements gathering / analysis 82% vs 14%; Agile / Jira 65% vs 7%
Data ScientistCausal inference 35% vs 1%; Statistics / statistical modelling 61% vs 6%; R 29% vs 2%; Predictive modelling / classification 32% vs 3%
Data EngChange data capture 14% vs 1%; ETL / ELT pipelines 89% vs 21%; Data modelling (dimensional, star schema) 74% vs 15%; Data quality / contracts / testing 71% vs 14%
Analytics EngSemantic / metrics layer 58% vs 3%; SQL 99% vs 27%; dbt 75% vs 6%; Reverse ETL 9% vs 0%
Data AnalystPower BI 51% vs 3%; Tableau 56% vs 3%; Business intelligence (general) 72% vs 7%; Data analysis (general) 78% vs 10%

The newest titles hold up. Analytics Engineer has a sharp signature: dbt in 75% of its postings against 6% elsewhere, and the semantic layer in 58% against 3%. MLOps Engineer has its own: CI/CD for models in 54% of its postings against 2% of the rest. FDE’s marker is customer-facing work, at 73% against 5%.

Details: the log-odds score

For skill $s$ and title $t$, let $y_t$ be the number of postings for $t$ that mention $s$, out of $n_t$, and $y_r$, $n_r$ the same counts for all other titles. With pooled rate $p_0$ and a prior worth $\alpha = 10$ postings,

$$\delta_{s,t} = \log\frac{y_t + \alpha p_0}{n_t - y_t + \alpha(1-p_0)} - \log\frac{y_r + \alpha p_0}{n_r - y_r + \alpha(1-p_0)}$$

A skill is listed only when $\delta$ is at least 1.96 standard errors above zero. The prior keeps a skill seen in 2 of 23 postings from outranking one seen in 400 of 1,000.

Forward Deployed Engineer, the newest title

FDE needs an introduction. According to Pragmatic Engineer, Palantir created the role in the early 2010s and ran two engineering tracks: “Dev”, one capability for many customers, and “Delta”, one customer served with many capabilities (Pragmatic Engineer, Aug 2025). An FDE is embedded with a customer and writes production code against that customer’s problem, then feeds what it learns back into the product. That separates it from a sales or solutions engineer, who works before the sale, and from a consultant, who advises rather than ships.

The title spread with enterprise AI. OpenAI built an FDE team in 2025, and Tom Tunguz estimates that by mid-2026 the large AI labs and cloud providers had committed roughly $10B to FDE-style deployment groups (Tom Tunguz, Jul 2026). Some observers say the 2026 versions drift toward consulting, with about a quarter of the time spent coding (Pragmatic Engineer, May 2026).

The postings agree that it is a different job. Besides customer work, FDE postings ask for prototyping (38% against 11% elsewhere) and, less sharply, product sense (27%, about the level of Data Scientist postings). They ask for stakeholder communication more often than Software Engineer postings (70% against 52%), though less often than Data Scientist, Analytics Engineer and analyst postings (85% to 89%). On skills, FDE is closest to AI Engineer (0.84), then Software Engineer (0.80).

Which titles are the same job

If two titles ask for the same skills in the same proportions, they describe the same job. We measure this with the cosine similarity of their skill-prevalence vectors: 1.0 means identical proportions, 0 means no overlap.

ML EngMLOps EngSoftware EngFDEAI EngBusiness AnalystData ScientistData EngAnalytics EngData Analyst
ML Eng0.850.720.720.830.380.740.600.490.43
MLOps Eng0.850.740.660.760.320.590.660.470.36
Software Eng0.720.740.800.760.530.640.720.600.50
FDE0.720.660.800.840.540.680.660.590.52
AI Eng0.830.760.760.840.440.650.610.520.43
Business Analyst0.380.320.530.540.440.550.470.610.66
Data Scientist0.740.590.640.680.650.550.670.730.78
Data Eng0.600.660.720.660.610.470.670.850.67
Analytics Eng0.490.470.600.590.520.610.730.850.85
Data Analyst0.430.360.500.520.430.660.780.670.85

Cosine similarity of skill profiles. Shading starts at 0.40, the floor for these ten titles.

No pair of the ten is a duplicate. The closest pairs, at about 0.85, are Analytics Engineer with Data Analyst, ML Engineer with MLOps Engineer, and Data Engineer with Analytics Engineer. Next come FDE with AI Engineer (0.84) and ML Engineer with AI Engineer (0.83). AI Engineer is further from Software Engineer, at 0.76.

Hierarchical clustering on the same numbers gives the two families. Analytics Engineer and Data Analyst merge first, then ML and MLOps, then AI Engineer and FDE. Software Engineer joins the AI and FDE pair, and that group then joins ML and MLOps. On the data side, Business Analyst is the last to join. The two families merge only at the final step.

Seniority moves some titles toward a neighbour, not all. Senior Data Analyst postings resemble Analytics Engineer postings more (similarity 0.88) than junior and mid-level ones do (0.82), and senior AI Engineer, MLOps and Business Analyst postings also sit slightly closer to their nearest title. For the other six titles the senior postings sit further from their nearest neighbour. Senior Data Engineer postings, for example, move toward Software Engineer (0.74 against 0.67) and away from Analytics Engineer (0.83 against 0.86).

Pay by title

The explorer shows three distributions for each title, each labelled with what it measures. Posted base is the midpoint of the base-salary range in each posting. levels.fyi base is the base salary people report for the title. levels.fyi TC is their total compensation: base plus equity and bonus. Each bar is a box plot: the thin line runs from the 10th to the 90th percentile, the box covers the middle half, and the tick marks the median.

Filter by country, level, series (posted base, levels.fyi base, levels.fyi TC) and title. Canada is in CAD, so compare within a country. levels.fyi has no dedicated page for six of these titles; we used the closest job-title page under Software Engineer, listed in the limits section.

Three things to read carefully.

First, compare base with base, and level with level. Across all levels, US posted base sits well above the levels.fyi title page: Software Engineer postings have a median midpoint of 220k, while the title page reports a median base of 160k (and a median TC of 196k). Two things make up that 60k. About 40k is employer mix: submissions listed on the levels.fyi company pages of the posting-sample employers have a median base of 200k, so these employers pay more than levels.fyi’s whole population (this step also absorbs the newer offer dates and which submissions the company pages list). About 22k is level mix: 82% of the postings are Senior or Staff+, against 56% of those submissions, and reweighted to the postings’ level mix the same submissions come to 222k. Matched by level, within those employers, the two sources nearly agree: 175k against 160k at Junior/Mid, 212k against 219k at Senior, and 260k against 260k at Staff+. Data Scientists agree at Senior (202k against 200k), and so do Canadian Senior Software Engineers (178k against 173k CAD). When a US posting lists several regional ranges we take the first, usually San Francisco or New York, so posted base is still “what this sample of employers advertises”.

Second, the gap between base and TC is mostly an engineering phenomenon. On levels.fyi, ML Engineer base is 200k and TC 283k; Data Analyst base is 107k and TC 110k. Equity is where the builder titles pull away, and postings never show it.

Third, levels.fyi does not publish a Junior/Mid, Senior and Staff+ breakdown per title. It publishes pay per company level (Amazon SDE II, Shopify L6). For the level filter we took those company pages for the employers in our posting sample and mapped each company’s ladder to tiers: levels titled Senior are Senior, levels below them are Junior/Mid, and levels above them are Staff+. A ladder with no Senior title borrows the tier of the same level code from that company’s Software Engineer ladder, or else uses the typical years of experience at that level. Only submissions with 2025-2026 offer dates are used. levels.fyi splits these by job family, so this works for Software Engineer, Data Scientist and Business Analyst, and through focus tags for ML Engineer and Data Engineer; Data Analyst has too few submissions to use. FDE, AI Engineer, MLOps and Analytics Engineer have no levels.fyi split, so with a level selected they show posted base only. Junior postings are almost absent (29 of 3,060), because new-grad programmes were excluded, so junior and mid-level are reported together as Junior/Mid.

Where skills and pay disagree

If titles were pure descriptions of work, similar skill profiles would come with similar pay. The table lists the ten most similar pairs and the pay gap between them.

Pair (higher posted base first)Skill similarityPosted base gaplevels.fyi base gaplevels.fyi TC gap
Analytics Eng over Data Analyst0.85+60%+41%+55%
ML Eng over MLOps Eng0.85+35%+43%+89%
Data Eng over Analytics Eng0.85+23%-5%-8%
FDE over AI Eng0.84+19%+18%+35%
ML Eng over AI Eng0.83+47%+35%+77%
Software Eng over FDE0.80+7%-9%-9%
Data Scientist over Data Analyst0.78+98%+50%+65%
MLOps Eng over AI Eng0.76+9%-6%-6%
Software Eng over AI Eng0.76+27%+8%+23%
ML Eng over Data Scientist0.74+19%+25%+56%

Each gap is the first title's median over the second's, US only. Posted base and levels.fyi base are salary only; levels.fyi TC adds equity and bonus.

High overlap does not bring pay together:

Software Engineer and FDE are within 7% of each other on posted base, and on levels.fyi FDE is 9% higher on base and 10% higher on TC. FDE’s posted base is 19% above AI Engineer’s, its closest neighbour on skills (18% on levels.fyi base, 35% on TC). Lower in the table, Data Scientist and Data Analyst share less (0.78) but differ the most of any listed pair: 98% on posted base, 50% on levels.fyi base.

In this sample, a title that adds an engineering or modelling signature to a shared core is paid at the engineering title’s level, and the gap widens once equity is counted. The data show the association, not the reason for it.

Limits