Software engineer vs data analyst vs ML engineer: how to pick.
Three of the most common tech career questions, in one comparison. Which role suits which kind of person, with the honest day-to-day for each.
I get asked some version of this question every month: "I'm trying to break into tech, should I aim for software engineering, data analytics, or machine learning engineering?"
The honest answer depends entirely on what kind of work you want to do on a Tuesday afternoon, not what title sounds best on LinkedIn. Here's the comparison, with the real day-to-day for each.
The three roles, briefly
A software engineer builds the things you click on. Apps, websites, internal tools, APIs, infrastructure. Their day is largely writing code, reviewing other people's code, and debugging things that broke.
A data analyst answers questions with numbers. "How many customers churned last quarter and why?" "Which marketing campaign worked best?" Their day is largely querying databases, building dashboards, and writing reports.
An ML engineer builds the AI and data systems that make automated decisions. They sit between data and software engineering — they need both, in different proportions. Their day is largely training models, evaluating them, deploying them to production, and dealing with the edge cases.
How they actually compare
| Dimension | Software Engineer | Data Analyst | ML Engineer |
|---|---|---|---|
| Day-to-day work | Write code, debug, code review | Write SQL, build dashboards, summarize | Train models, deploy, monitor |
| Math needed | Basically none | Solid stats fundamentals | Real stats + linear algebra |
| Mid-career US base salary | $130–200k | $90–150k | $150–230k |
| Entry-level market difficulty | Moderate (was easy, got hard) | Easiest entry point | Hardest entry point |
| Time to "useful junior" | ~12 months | ~6 months | ~18 months |
| Best for someone who likes | Building things people use | Asking "why did that happen" | Math + engineering, both |
| Worst for someone who hates | Sitting in an IDE | Talking to non-technical stakeholders | Long iteration cycles |
| Effect of AI on the role | Less typing, more reviewing | SQL faster, business bar higher | Growing fast but more depth needed |
What you do most of the day
SE: writes code, fixes bugs, reads other people's code.
DA: writes SQL queries, builds dashboards, writes reports and Slacks summarizing what the data says.
MLE: writes code, but more of it is pipeline and orchestration than features. Spends real time monitoring model performance.
Math required
SE: basically none. Some discrete math for algorithms. Most days, none.
DA: solid stats fundamentals. Mean, median, percentiles, distributions, confidence intervals. Linear algebra is rare.
MLE: real stats and linear algebra. You can survive without deep math by using libraries, but understanding what's happening underneath matters when things break.
The honest path picker
Pick software engineer if:
- You like building things people can use
- You're okay debugging for hours
- You're more excited by "make this thing work" than "what does this data mean"
- You're patient with abstract thinking
Pick data analyst if:
- You like asking "why did that happen" with numbers
- You're more excited by business problems than technical problems
- You like the bridge role between technical and non-technical people
- You don't want to spend most of your day inside an IDE
Pick ML engineer if:
- You like building things AND you're comfortable with math
- You're patient with iterative experiments where 80% don't work
- You want to be at the intersection of two fields
- You're okay with the fact that it takes longer to break in
The path nobody tells you to consider
If you're starting from scratch, the often-overlooked move is: do data analytics first.
Here's why. Data analytics has the easiest entry point, teaches you SQL (universally useful), teaches you to think with data (universally useful), and gets you inside a company. Once you're inside, you can usually pivot toward SE or MLE within 18 to 24 months if you want.
Going SE → DA or MLE → DA is rare because the salaries usually don't justify it. Going DA → SE or DA → MLE is common and well-trodden.
For someone with no prior tech experience, DA is the fastest path to "in tech, getting paid, learning the rest from inside". Then you re-evaluate.
What's changed because of AI
A few things.
Junior SE roles are slightly harder to get than they were in 2021-2022. AI helps the existing engineers, reducing demand for the most-junior layer of typing.
DA roles are easier in some ways (AI helps you write queries faster) but the bar for what a "useful" DA does has gone up (everyone can write a basic dashboard now; the value is in business judgment).
MLE roles are growing fast in absolute numbers but require more depth than two years ago. The "MLE who can prompt the model" role is being phased out. The "MLE who can deploy and monitor real systems" role is in demand.
The decision
Don't pick by salary. The differences shown are smaller than the differences between similar roles at different companies.
Pick by what you'd enjoy doing on a Tuesday afternoon. The wrong role at $20k more is a worse deal than the right role at $20k less.
If you can't decide, do data analytics first. The optionality is the best feature.