Systems Thinking Lab Newsletter: sharpen your engineering judgment, every Saturday

What an AI Engineer job actually tests

The weekly letter from Systems Thinking Lab: systems thinking insights for junior engineers, framed through the seven building blocks.


An AI Engineer job posting almost never asks you to train a model. It asks for Python. Backend services. APIs. Deployment.

Say you are two years into your career. You want the AI Engineer title, because that is where the hiring is right now. You open a listing. Under requirements you find things you already know: REST APIs, Postgres, a message queue. Then one line stops you: experience with LLM-based retrieval systems. You have never trained a model, so you assume the role is out of reach. You close the tab and go back to applying for titles that do not say AI.

Open ten AI Engineer job listings yourself. Count how many ask you to design a training pipeline. Count how many ask you to call a model through an API, store some vectors, and ship a working service. The ratio is not close. And unlike most claims you will read this week, that is one you can check in ten minutes on any job board.

That gap between the title and the requirements is not a trick played on the applicant. It is a plain description of what the job actually is. Model training is real machine learning work, PhD-deep, and it happens at a small number of companies with the budget and the data to do it. Everyone else shipping something called an AI feature is doing something else entirely.

Most AI Engineer work is product engineering with a model in the stack. A Service takes the request from the user. The model sits behind an API call, an External Service in exactly the slot Stripe or Twilio occupies on any other project you have built. A Vector Database holds what gets retrieved before the model is asked anything, so the answer is grounded in real documents instead of a guess. The same relational databases and queues every other feature already needs round out the design. Perplexity answering a question with sources, the AI notes assistant, the AI coding sidebar: strip away the branding and each one is this same handful of parts, wired together with care.

The model is one component. The composition is the job.

And composition is learnable. It is the same skill that ships any production system you have already worked on, a checkout flow, a notification pipeline, a search page, pointed at one new primitive instead of a familiar one.

Here is the wrong move I see most often, and it is the expensive one. An engineer decides the gap is technical: they need to learn embeddings math, or enroll in a machine learning certificate, before they can call themselves qualified for the title. That is solving the wrong problem. The company hiring for that AI Engineer role is not testing whether you can derive backpropagation. It is testing whether you can take a Service, an External Service, a Vector Database, and a queue, and compose them into something that survives real traffic on a Tuesday afternoon. Come back to the same listings six months later and the requirements have not moved: still a Service, still an External Service, still a Vector Database. Only now half a year has gone to the wrong half of the job. I believe this enough to grade on it: the course I am teaching at UC Berkeley this fall has students build real applications with agentic coding, then grades them on defending the design decisions.

Composition, choosing the right primitive for the job and wiring it correctly, is the entire subject of the seven building blocks and three external entities I teach. A Service, an External Service, a Vector Database, and the storage and queues around them are not background theory here. They are the actual vocabulary behind the job title on that listing, named and taught, in the order you would actually build them.

You do not need to master gradient descent. You need to build the composition around the model: what takes the request, what talks to the model, what remembers enough to make the answer good, and what quietly keeps the whole thing running when the model call is slow.

P.S. The Vector Database is the one piece of that composition the AI era genuinely made essential. I wrote up how it actually works and why it is the retrieval half of almost every AI feature you have used: https://systemthinkinglab.ai/learn/building-blocks/vector-database/