| Software Engineer | ML Engineer | AI Engineer | |
|---|---|---|---|
| Core question | How do we build this system so it's correct, fast and maintainable? | How do we train a model that predicts this well from our data? | How do we turn an existing foundation model into a reliable product? |
| A typical day | Design APIs, write and review code, fix bugs, improve CI/CD, handle on-call | Clean data, engineer features, run training experiments, tune, deploy and monitor models | Design prompts and context, build RAG and tool integrations, write evals, tune cost and latency |
| Main inputs | Requirements, specs, existing code | Labeled datasets, features, compute (GPUs) | Pretrained models (via API or open weights), company docs and data, tools |
| Output | Services, apps, infrastructure | Trained model artifacts + training/serving pipelines | Chatbots, copilots, agents, LLM-powered features and workflows |
| Math depth | Low to medium (algorithms, complexity) | High: statistics, linear algebra, calculus, optimization | Medium: probability, vectors, metrics. Enough to reason about models |
| Typical tools | Python/TypeScript/Go/Java, SQL, Docker, Kubernetes, Git, CI | PyTorch, scikit-learn, pandas, Spark, MLflow/W&B, feature stores | LLM APIs & SDKs, vector DBs, eval & tracing tools, MCP, agent frameworks |
| How quality is measured | Tests pass, uptime, latency, bug rates | Offline metrics (AUC, F1, loss) and online A/B tests | Eval suites (code checks + LLM-as-judge + humans), user feedback, cost per task |
| Nature of bugs | Deterministic: same input, same failure | Statistical: data drift, overfitting, leakage | Probabilistic: hallucinations, prompt regressions, injection, retrieval misses |
The honest summary
AI engineering is software engineering with a probabilistic component in the middle. You rarely train models. You design what goes into them (context), what they can do (tools), and how you know they're working (evals).
ML engineering lives closer to the model itself: data, training, and serving. When an AI team decides to fine-tune or distill a model, ML engineers usually lead that work.
The overlap is growing. Strong AI engineers understand loss, overfitting and evaluation metrics. Strong ML engineers increasingly build LLM systems. Strong software engineers move into either with the right practice.
Which problem sounds most fun to you?