Skip to content
NLEN
Illustration: Switching to AI: from Classic IT to ML

Switching to AI: from Classic IT to Machine Learning

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

The transition from traditional software development, database architecture, or systems administration to machine learning and applied artificial intelligence is one of the most common career moves within the IT sector. However, many experienced IT professionals quickly discover that this career switch involves considerably more than simply switching to Python or calling a cloud API from a model provider. Classic software engineering rests fundamentally on deterministic principles: logic is explicitly encoded in algorithms and business rules, so that identical input under the same conditions always produces exactly the same output. Machine learning, by contrast, introduces a probabilistic mindset, in which systems independently distill patterns and relationships from historical data and outcomes are inherently accompanied by a statistical margin of error.

This article offers an in-depth technical and strategic guide for experienced software engineers, backend developers, data engineers, and infrastructure specialists who want to make the switch to a role as an AI Engineer or Machine Learning Engineer. We break down the fundamental paradigm shift, take stock of which existing IT competencies are directly reusable, identify the structural knowledge gaps, and present a phased, realistic learning path. Anyone who first wants to form a general picture of supply and demand within the Dutch business landscape can start by exploring the current developments in the Dutch AI labor market to see which specializations enjoy the highest priority.

The deterministic versus the probabilistic paradigm

In conventional software architectures, the developer formulates the rules in advance in explicit code. Rules are laid down in control structures, database constraints, and strict type definitions. A programming error usually results in a clear error message: a syntax error, a null pointer exception, or a failing integration test that's exactly reproducible. Debugging is therefore a causal process of deduction: when a bug occurs, the engineer looks for the specific line of code that violates the system's assumptions.

In machine learning, by contrast, the logic is derived by an optimization algorithm that searches for the best fit over a dataset. The resulting model functions as a mathematical function with millions or billions of weights. This introduces fundamentally different behavior patterns in production:

This transformation forces developers to let go of the illusion of absolute control. Success in AI engineering is not measured by flawless compilation, but by controlled and reproducible performance on representative evaluation datasets.

Directly reusable IT skills

Classic IT professionals start their transition with a substantial strategic advantage. At many organizations, data science teams don't lack theoretical mathematical knowledge, but rather the discipline to turn experimental code into secure, scalable, and maintainable production software. The vast majority of failed AI initiatives get stuck in the transition from a local Jupyter Notebook to a reliable microservice architecture.

Experienced backend developers and infrastructure engineers bring a mature arsenal of best practices that are directly applicable in MLOps and AI engineering:

For a detailed exploration of the technical bridge between backend code and modern language models, the article on the practical route from developer to AI engineer offers a clear frame of reference for software developers who want to leverage their existing programming experience.

The structural knowledge gaps and how to bridge them

Despite this strong foundation, IT professionals run into specific blind spots when they first start working with machine learning. These gaps center around linear algebra, probability theory, data preprocessing, and non-deterministic quality assurance.

Field Classic IT knowledge Required ML knowledge Typical pitfall in practice
Mathematical foundation Boolean logic, discrete structures, complexity theory (Big-O) Linear algebra (matrices, tensors, eigenvalues), multivariable calculus, probability distributions Treating optimization algorithms (such as Adam or SGD) as impenetrable black boxes without understanding gradient descent.
Data transformation CRUD operations, database schema normalization, JSON/XML parsing Feature engineering, embeddings, one-hot encoding, missing data imputation, vectorization Data leakage: fitting transformations (such as normalization means) on the entire dataset, including the test data.
Programming style Object-oriented abstractions in C#, Java, Go, or TypeScript Array-oriented programming in Python with NumPy, vectorization via PyTorch or Polars Writing iterative for-loops over rows of data instead of using optimized C extensions in NumPy.
Quality assurance Deterministic unit tests, mocking of external dependencies Statistical validation metrics (Precision, Recall, ROC-AUC, F1), bias-variance analysis, drift monitoring Only checking whether an API endpoint returns status code 200, without testing the semantic or statistical quality.

Bridging this knowledge gap requires a pragmatic study approach. It's rarely necessary to manually solve complex differential equations, but conceptual insight into how tensor manipulations, loss functions, and gradients work together is essential for effectively resolving training errors, vanishing gradients, or exploding latency during model inference.

Three concrete learning phases for the transition

A successful retraining path follows a structured build-up in three phases. Working step by step prevents you from getting lost right away in the complexity of advanced deep learning frameworks without mastering the underlying data principles.

Phase 1: The Python Data Ecosystem and Statistics (Weeks 1–8)

The first phase focuses on mastering the scientific programming environment in Python. Those used to strongly typed languages like Java or C# need to learn to think in n-dimensional arrays and vector operations. Learn how NumPy manages memory blocks and how Pandas or Polars manipulate dataframes. Pay special attention to data hygiene: identifying and handling missing values, removing outliers, and applying scaling techniques (such as MinMax or StandardScaler). Write scripts that perform exploratory data analysis (EDA) and visualize correlation matrices.

Phase 2: Classic Machine Learning and Validation Techniques (Weeks 9–16)

Before deep neural networks are deployed, thorough mastery of classic machine learning via scikit-learn is necessary. Study algorithms for regression, classification, and clustering, including logistic regression, Support Vector Machines, and ensemble models such as Random Forests and Gradient Boosted Trees (XGBoost, LightGBM). Focus here on the validation process: strictly splitting data into training, validation, and test sets, implementing k-fold cross-validation, and managing the balance between underfitting and overfitting via regularization techniques (L1/L2).

Phase 3: Deep Learning, Embeddings, and LLM Orchestration (Weeks 17–24)

In the final phase, the focus shifts to deep learning and modern language models. Work with PyTorch to build neural networks, and understand the transformer architecture and self-attention mechanisms. Apply this knowledge to current use cases: setting up Retrieval-Augmented Generation (RAG) architectures, indexing data in vector databases (such as Qdrant, Chroma, or pgvector), and orchestrating LLM interactions with structured output validation. Also learn how models can be efficiently adapted via parameter-efficient fine-tuning methods such as LoRA (Low-Rank Adaptation).

Building convincing evidence

Within the technology job market, a hard rule applies: theoretical knowledge and badges earned online don't convince technical interviewers. Employers are inundated with applicants who have completed generic courses but are unable to independently bring a model to production. Anyone who wants to know which formal credentials and certificates actually open serious doors with employers can consult our overview of relevant AI certifications and training programs to make targeted choices in training budget and time investment.

Candidates with a classic IT background distinguish themselves by building complete, reproducible systems. A strong technical portfolio preferably contains two deeply developed repositories:

For specific design rules, documentation requirements, and code quality guidelines for open-source demonstrations, the guide to building a convincing AI portfolio offers concrete guidance for aligning projects optimally with the expectations of engineering managers.

Practical example: an automated validation test in CI/CD

To illustrate how software quality and statistical evaluation come together, the Python example below shows a test script that can be included in a CI/CD pipeline. The script trains a classification model, validates it against data leakage, and checks whether the statistical performance (macro F1 score) meets the established production threshold.

import numpy as np
from sklearn.metrics import classification_report, f1_score
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 1. Reproduceerbare synthetische dataset genereren
np.random.seed(42)
num_samples = 1500
num_features = 8

X = np.random.randn(num_samples, num_features)
# Doelvariabele afleiden met een niet-lineaire relatie
logits = X[:, 0] * 1.5 - X[:, 1] * 2.0 + np.sin(X[:, 2])
y = (logits > 0).astype(int)

# 2. Strikte splitsing ter voorkoming van data leakage
X_train, X_test, y_train, y_test = train_test_split(
  X, y, test_size=0.25, random_state=42, stratify=y
)

# 3. Modelconfiguratie en training
model = RandomForestClassifier(
  n_estimators=100,
  max_depth=6,
  min_samples_split=4,
  random_state=42
)
model.fit(X_train, y_train)

# 4. Statistische evaluatie op ongeziene testdata
y_pred = model.predict(X_test)
macro_f1 = f1_score(y_test, y_pred, average='macro')

# Kwaliteitsnorm voor geautomatiseerde release
MINIMUM_F1_THRESHOLD = 0.82

print("=== Statistische Modelvalidatie ===")
print(classification_report(y_test, y_pred, digits=4))

# CI/CD assertie: blokkeer deployment bij ontoereikende prestaties
assert macro_f1 >= MINIMUM_F1_THRESHOLD, (
  f"Kwaliteitsnorm niet behaald: F1-score {macro_f1:.4f} "
  f"ligt onder de vereiste drempel van {MINIMUM_F1_THRESHOLD}"
)

print(f"Validatie geslaagd: F1-score {macro_f1:.4f} >= {MINIMUM_F1_THRESHOLD}")

In this code example, principles from software engineering are combined with statistical validation. The data is split using stratification to keep the ratio between classes intact, after which a hard assertion prevents a model with degraded quality from automatically being promoted to production.

Team dynamics, ethics, and organizational change management

The switch to an AI discipline changes not only the technical way of working, but also affects the dynamics within multidisciplinary teams and contact with business stakeholders. In a classic development environment, a lead developer can estimate with reasonable certainty how many sprints are needed to deliver a specific feature according to functional design. In AI projects, however, the end result depends directly on the signal-to-noise ratio in the data, meaning the success of an experiment cannot be guaranteed with absolute certainty in advance.

This phenomenon requires clear expectation management toward product owners, compliance officers, and executives. Engineers need to learn to report in terms of hypotheses, experimental iterations, and confidence intervals. In addition, laws and regulations, such as the European AI Act, play an increasingly large role in safeguarding data integrity and preventing algorithmic bias. Anyone who wants to take the lead within their organization in smoothly transforming traditional departments into data-driven units can learn a great deal from the methodologies for targeted change management for AI adoption in teams to effectively mitigate organizational friction.

Cost control and hardware trade-offs in production

One aspect that classic software developers often underestimate during their transition is the direct link between architectural choices and operational infrastructure costs. Where traditional microservices can run on relatively modest CPU clusters, deep learning and LLM inference require substantial compute power. Carelessly designed AI applications can quickly lead to sky-high cloud bills.

As an AI Engineer, it's necessary to design with cost awareness by taking the following into account:

The ability to not only build accurate models, but also host them cost-efficiently and with minimal latency, makes a career changer immediately valuable to employers who watch over their operational margins.

The first hundred days in the new role

Once the transition is complete and the first appointment as an AI Engineer or ML Engineer is a fact, priority shifts to delivering tangible value in practice. The most common beginner's mistake is wanting to immediately apply the most advanced, complex neural networks to problems that can be solved much more effectively with proven methods.

Experienced career changers build their reputation through pragmatism:

  1. Start with a simple baseline: Implement a robust, simple rule set or a classic regression model in the first few weeks. This immediately provides a measurable standard against which all future, more complex AI models can be fairly compared.
  2. Invest in data quality and logging: Thoroughly analyze the source data. Improvements in annotation quality or cleaning up inconsistent input fields almost always yield greater performance gains than days spent tuning hyperparameters of a complex neural network.
  3. Ensure operational robustness: Ensure structured monitoring of response times, API costs, token usage, and data drift from day one. A simple model that runs stably and is reliably monitored delivers considerably more value to the organization than an advanced prototype that remains stuck in a development environment.

By merging the solid foundation of classic software engineering — code quality, architectural insight, and operational discipline — with in-depth knowledge of probabilistic systems and statistical evaluation, the career changer positions themselves as a rare, well-rounded, and resilient asset within the modern technology landscape.