# From data analyst to ML engineer: the career path

[Skip to content](#lm-inhoud)Network/[NL](/en/van-data-analist-naar-ml-engineer-het-carrierepad)EN[Hubhub.llmnet.nlCompare models on task, language, cost and licence.](https://hub.llmnet.nl/en/)[Communitycommunity.llmnet.nlPrompt techniques, patterns and system prompts.](https://community.llmnet.nl/en/)[APIapi.llmnet.nlLLMs in production: rate limits, routing, structured output.](https://api.llmnet.nl/en/)[Consultancyconsultancy.llmnet.nlRolling out AI in an organisation, pilot to production.](https://consultancy.llmnet.nl/en/)[Newsnieuws.llmnet.nlAI developments, explained for the Netherlands.](https://nieuws.llmnet.nl/en/)[Benchmarkbenchmark.llmnet.nlMeasure AI quality yourself, on your own tasks.](https://benchmark.llmnet.nl/en/)[Careersvacatures.llmnet.nlAI roles, salaries and career paths in the Netherlands.](https://vacatures.llmnet.nl/en/)[Learnleren.llmnet.nlAI concepts in plain language, beginner to builder.](https://leren.llmnet.nl/en/)[Guidegids.llmnet.nlRun AI privately on your own Mac, PC, NAS or home server.](https://gids.llmnet.nl/en/)[Directorydirectory.llmnet.nlMapping the AI ecosystem: tools, models, companies.](https://directory.llmnet.nl/en/)[Radarradar.llmnet.nlSignals from X, research and communities for indie developers.](https://radar.llmnet.nl/en/)[Appsapps.llmnet.nlReviews of AI apps and open-source repos, with tips for builders.](https://apps.llmnet.nl/en/)[llmnet.nl — main site](https://llmnet.nl/en/)[](https://x.com/intent/post?url=https%3A%2F%2Fvacatures.llmnet.nl%2Fen%2Fvan-data-analist-naar-ml-engineer-het-carrierepad&text=From%20data%20analyst%20to%20ML%20engineer%3A%20the%20career%20path)[](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fvacatures.llmnet.nl%2Fen%2Fvan-data-analist-naar-ml-engineer-het-carrierepad)[](https://www.reddit.com/submit?url=https%3A%2F%2Fvacatures.llmnet.nl%2Fen%2Fvan-data-analist-naar-ml-engineer-het-carrierepad&title=From%20data%20analyst%20to%20ML%20engineer%3A%20the%20career%20path)[](#)[](https://x.com/intent/post?url=https%3A%2F%2Fvacatures.llmnet.nl%2Fen%2Fvan-data-analist-naar-ml-engineer-het-carrierepad&text=From%20data%20analyst%20to%20ML%20engineer%3A%20the%20career%20path)[](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fvacatures.llmnet.nl%2Fen%2Fvan-data-analist-naar-ml-engineer-het-carrierepad)[](https://www.reddit.com/submit?url=https%3A%2F%2Fvacatures.llmnet.nl%2Fen%2Fvan-data-analist-naar-ml-engineer-het-carrierepad&title=From%20data%20analyst%20to%20ML%20engineer%3A%20the%20career%20path)[](#)

 
# From data analyst to ML engineer: the career path

 By Ivo Donker — compiled with AI assistance (Claude & Gemini)

 The transition from data analyst to machine learning engineer (ML engineer) is one of the most common and logical career moves in today's data landscape. Where a data analyst queries historical data to surface business patterns through dashboards and reports, an ML engineer builds scalable software systems that autonomously generate predictions and run continuously in production. This transition, however, requires a fundamental shift in mindset: from one-off ad hoc analyses and visualizations to robust software engineering, automated pipelines, and operational model management.

 Many data analysts already have a solid foundation in SQL, exploratory data analysis (EDA), and domain knowledge. The stumbling block is rarely understanding the underlying data, but almost always the technical engineering layer: object-oriented programming, version control, testing, containerization, and MLOps principles. This article outlines the complete career path, exposes exactly where the gap lies, and offers a concrete step-by-step plan to make this transition successfully in the Dutch technology sector.

 
## The fundamental role shift: from insight to software product

 To understand what the transition entails, we need to look at the fundamental difference in end product. A data analyst typically delivers answers to strategic or operational questions. The output consists of a Power BI or Tableau dashboard, a SQL query, a Jupyter Notebook with summary statistics, or a presentation for stakeholders. The primary goal is to support decision-making.

 An ML engineer, on the other hand, delivers software. The end product is a trained model that is packaged in a container, exposed via a REST API or message queue, and performs inferences thousands of times per minute with low latency. Responsibility doesn't stop at achieving a high ROC-AUC score in an experiment; responsibility really only begins once the model is running in a live production environment. To get a clear picture of the precise differences between data scientists, AI engineers, and ML engineers, it helps to look at the overview in which [the differences between AI Engineer, Data Scientist, and ML Engineer](https://vacatures.llmnet.nl/en/ai-rollen-verschil) are set side by side.

 
 
 
 
 Dimension | 
 Data Analyst | 
 Machine Learning Engineer | 
 

 
 
 
 Core goal | 
 Describing and explaining historical data | 
 Automating predictions in production | 
 

 
 Primary tooling | 
 SQL, Power BI, Tableau, Excel, basic Python/R | 
 Python, Docker, Git, CI/CD, FastAPI, Kubernetes, MLflow | 
 

 
 Code quality | 
 Scripts focused on analysis and one-off visualization | 
 Modular, tested, and documented production code | 
 

 
 Data processing | 
 Batch extracts and aggregated tables | 
 Real-time streaming, automated feature stores | 
 

 
 Critical metrics | 
 Business KPIs, dashboard adoption, accuracy | 
 Latency, throughput, drift, uptime, F1 score in production | 
 

 
 
 

 
## The skills gap: which capabilities are usually missing?

 Data analysts looking to make the switch often overestimate the mathematical requirements and underestimate the software quality that's required. Unlike academic researchers, an ML engineer rarely needs to design new algorithms from scratch. The real gap lies in three specific technical domains:

 
### 1. Software engineering and modularity

 In data analysis, a linear Jupyter Notebook with hundreds of cells is often enough to reach a conclusion. In machine learning engineering, such a notebook is merely a scratchpad. Production code requires:

 
 
- Modular structure: Functions and classes separated into reusable modules (`src/data`, `src/features`, `src/models`).
 
- Type hints and linting: Strict use of static typing via mypy and code formatting with tools such as ruff or black.
 
- Automated testing: Unit tests for data transformations and integration tests for API endpoints via pytest.
 
- Version control: Not just basic Git commands, but working effectively with branching strategies, merge requests, and CI/CD pipelines (GitHub Actions or GitLab CI).
 

 
### 2. System infrastructure and containerization

 A model that runs locally on a laptop inside a Conda environment is unusable for IT infrastructure. An ML engineer must understand how an application is packaged reproducibly with Docker, how environment variables are managed, and how network communication between microservices works.

 
### 3. Model lifecycle and monitoring (MLOps)

 Once a model goes live, the world around it keeps changing. Data distributions shift (data drift) and economic or behavioral relationships change (concept drift). Anyone who wants to understand how such degradation is continuously monitored can dive deeper into [measuring drift and model performance in production](https://benchmark.llmnet.nl/en/drift-meten-in-productie-modelprestaties-over-tijd-volgen). An ML engineer sets up automated monitoring and retraining pipelines to detect degradation in time.

 
## The step-by-step transition path: from data wrangling to model deployment

 The transition from data analyst to ML engineer works most efficiently through a structured route of four phases. By completing each phase with tangible code and experiments, you build up the necessary foundation step by step.

 
### Phase 1: Modern software design in Python (Month 1-2)

 Leave the notebook behind for core logic. Set up a professional local development environment with VS Code or PyCharm. Learn to work with virtual environments (uv or poetry), object-oriented design patterns, abstract classes for data loaders, and structured error handling. Write unit tests directly alongside every function.

 
### Phase 2: Classic machine learning and pipeline architecture (Month 3-4)

 Deepen your mathematical intuition behind regression, decision trees, ensemble models (XGBoost, LightGBM), and clustering. Focus on the full pipeline: feature engineering without data leakage, cross-validation strategies for time series, and hyperparameter tuning. Use Scikit-learn pipelines to seamlessly connect data transformations and model training.

 
### Phase 3: Deployment, containerization, and API exposure (Month 5-6)

 Build a REST API around a trained model using FastAPI. Write input validation with Pydantic, package the complete application into a Docker image, and optimize container size through multi-stage builds. Test the endpoint locally and deploy it to a cloud environment such as AWS (ECS/EKS), Google Cloud Platform (Cloud Run/Vertex AI), or Microsoft Azure.

 
### Phase 4: MLOps, CI/CD, and tracking (Month 7-8)

 Integrate tools for experiment tracking and model registries such as MLflow or Weights & Biases. Automate the test and build process through CI/CD pipelines. Set up automated data and model validation before a new artifact is pushed to the registry.

 
## Example: From analytical script to a production-ready API

 To make the difference between analytical scripting and engineering concrete, let's look at how inference code transforms. A data analyst often loads a pickle file ad hoc into a notebook. An ML engineer builds a typed, validated service with asynchronous endpoints and structured error handling.

 Below is an example of a minimalist, robust FastAPI service for model inference with Pydantic validation:

import joblib
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
import numpy as np

app = FastAPI(title="Kredietrisico Model API", version="1.0.0")

# Laad het getrainde modelartefact bij het opstarten
try:
 model = joblib.load("models/credit_risk_pipeline_v1.joblib")
except FileNotFoundError:
 model = None

class PredictionRequest(BaseModel):
 inkomen: float = Field(..., gt=0, description="Bruto jaarinkomen in euro's")
 schuld_ratio: float = Field(..., ge=0.0, le=1.0, description="Ratio tussen schuld en inkomen")
 krediet_score: int = Field(..., ge=300, le=850, description="FICO-achtige kredietscore")

class PredictionResponse(BaseModel):
 wanbetaling_kans: float
 risico_klasse: str

@app.post("/predict", response_model=PredictionResponse)
def voorspel_risico(aanvraag: PredictionRequest) -> PredictionResponse:
 if model is None:
 raise HTTPException(status_code=503, detail="Modelartefact niet beschikbaar")

 features = np.array([[aanvraag.inkomen, aanvraag.schuld_ratio, aanvraag.krediet_score]])
 kans = float(model.predict_proba(features)[0][1])
 klasse = "HOOG" if kans > 0.35 else "LAAG"

 return PredictionResponse(wanbetaling_kans=round(kans, 4), risico_klasse=klasse)

 This code contains a strict type structure, data contracts via schemas, and clean status codes for errors. This is the level recruiters and engineering leads expect during technical assessments.

 
## The role of certifications versus a built portfolio

 Many professionals in transition start by collecting cloud and data certificates. While certificates from AWS, Azure, or Google Cloud offer structure to a learning path, they don't demonstrate problem-solving ability on their own. For a detailed assessment of the market value of various programs, it's worthwhile to [the overview of valuable AI certifications and training programs](https://vacatures.llmnet.nl/en/ai-certificeringen) .

 In the Dutch labor market, a publicly accessible GitHub portfolio with working code weighs considerably heavier than paper qualifications. A strong portfolio for a beginning ML engineer doesn't consist of standard Kaggle notebooks on the Titanic dataset or MNIST digits. Employers look for projects that show the full spectrum:

 
 
- An end-to-end data pipeline that automatically ingests public data (for example from CBS or KNMI).
 
- A trained and evaluated model with explicit baseline comparisons and metric choices.
 
- A Dockerfile and CI/CD workflow that automatically runs tests on every commit.
 
- A live deployed API or demo interface with logging and error monitoring.
 
 Anyone looking for inspiration for realistic and relevant architectures can study the guide on [portfolio projects that impress AI employers](https://vacatures.llmnet.nl/en/portfolioprojecten) to see how a project is built convincingly.

 
## The Dutch labor market for ML engineers

 Demand for machine learning engineering talent in the Netherlands is structurally high, but highly professionalized. Where organizations mainly experimented with data science pilots (proofs of concept) between 2018 and 2022, the emphasis since 2024 has shifted entirely to industrialization and demonstrable cost reduction or revenue growth. Anyone wanting to know which sectors and regions in the Netherlands see the greatest demand can find current context in the analysis on [the Dutch AI labor market and job opportunities](https://vacatures.llmnet.nl/en/ai-arbeidsmarkt-nl).

 Market demand translates into specific dynamics within different types of Dutch organizations:

 
 
- Large financial institutions and insurers (Randstad): Work under strict laws and regulations (including the AI Act and model governance). Here the emphasis is heavily on robustness, reproducibility, explainability, and structured feature stores.
 
- Scale-ups and e-commerce platforms: Focus on high-throughput, personalization algorithms, and recommendation systems with low latency and continuous A/B experiments.
 
- SMEs and industrial players: Often look for pragmatic 'generalists' who can both connect data flows and keep simple predictive maintenance models running in production.
 

 
## Navigating within your current organization: the internal transition

 The most effective and lowest-risk route to becoming an ML engineer is the internal move within a current employer. As a data analyst, you already have deep knowledge of the company data, the data sources, and the domain context. That's a head start an external candidate doesn't have.

 A pragmatic strategy to grow internally includes the following steps:

 
 
- Seek connection with the engineering or data science team: Ask if you can join code reviews or help clean up data pipelines.
 
- Approach existing data analysis tasks in a software-driven way: Replace manual Excel extracts or ad hoc SQL scripts with automated Python modules with Git version control and scheduling via Airflow or Prefect.
 
- Identify a 'low-hanging fruit' prediction problem: Build a simple internal predictive prototype for an existing stakeholder (for example churn prediction or demand forecasting) and make sure the data ingestion and transformations run automatically.
 
 For a comparison with the broader AI engineering profile, the article on [the transition from data analyst to AI engineer](https://vacatures.llmnet.nl/en/van-data-analist-naar-ai-engineer) also offers additional insights into how LLM integration and classic machine learning work relate to each other.

 
## Pitfalls during retraining and interviews

 During job applications and assessments, candidates retraining for the role regularly fall into the same pitfalls. Avoiding these mistakes considerably increases the chance of a successful assessment:

 
 
 
 
 Pitfall | 
 Why it leads to rejection | 
 The right approach | 
 

 
 
 
 Only showing notebooks | 
 Doesn't demonstrate command of modular software architecture or testing. | 
 Always deliver a git repository with src/, tests/, a Dockerfile, and documentation. | 
 

 
 Choosing complex deep learning over simple baselines | 
 Shows a lack of pragmatism and business cost awareness. | 
 Always start with a simple linear baseline (e.g. Logistic Regression) before testing heavier models. | 
 

 
 Ignoring data leakage | 
 Leads to unusable models in a live production environment. | 
 Perform all feature scaling and transformations exclusively on the training set within a pipeline. | 
 

 
 No attention to latency and resources | 
 A model that's too slow or consumes too much memory can't go live. | 
 Measure inference times per request and explicitly document hardware requirements. | 
 

 
 
 

 
## Conclusion: Your action plan for the transition

 The step from data analyst to machine learning engineer is not a theoretical retraining, but a transformation of working method. By combining the strong analytical foundation and domain knowledge you have as an analyst with robust software engineering, containerization, and MLOps skills, a rare and sought-after profile emerges in the Dutch labor market.

 Don't start today with yet another course on advanced algorithms; instead, take an existing analysis, refactor the code into modular Python functions, write unit tests, package the inference into a FastAPI application within Docker, and commit the whole thing to GitHub. That's the tangible proof that will get the conversation with employers and engineering leads off to a successful start.
