vitaliks.me

AI engineering is entering a new phase

May 20, 2026 · 3 min read
aiengineeringarchitecture

Every time a new model ships, the same posts show up. "The new version is worse." "It hallucinates more than the last one."

Most of the time, the model is not the problem. The setup around it is.

When teams talk about AI cost, they usually think about model routing, caching, and smaller models. All of that matters. But teams miss another cost: forcing the model to fight your conventions.

The most effective way to use AI is not to bend the model to match your team's habits. It is the other way around. You shape your stack, style, and conventions around what the model is already good at. It sounds obvious, but it goes against how many of us were trained to think.

Every time you fight defaults, you pay in tokens, context, corrections, and hallucinations. The model is not getting worse. It is buckling under your custom layer.

Every time you fight defaults, you pay in tokens, context, corrections, and hallucinations. It shows up as slower iteration, weirder bugs, and a feeling that the model is "getting worse" when really it is buckling under your custom layer.

Here is the example I keep coming back to. You have written Java for ten years and love camelCase. Now you are on Postgres, where the ecosystem runs on snake_case. The natural move is a rule: "always use camelCase for column names." But the model has seen far more SQL with snake_case, so your rule fights that default on every call, and sometimes loses.

This is not just about naming. The same thing happens at every layer. If your team invented its own state pattern, the model reaches for the standard one. Wrap a popular ORM in an unusual way and every query drifts back toward its normal shape. Anywhere your convention diverges from the ecosystem, you pay that tax on every call.

LLMs keep changing too. A new Claude may default to a different library than the older one, or lay out a React component differently. Even if your code matches what the model expects today, in six months it may not.

Most teams underestimate this. Old engineering culture rewards stability: pick a stack, write a style guide, defend it for years. With AI, that posture quietly hurts you. The skill you wrote three months ago may now steer the model away from what it does best. Conventions are no longer set once and protected. They are revisited, refactored, and sometimes deleted regularly, like dependencies.

There is another side to speed. If you are shipping code several times faster, you are shipping tech debt several times faster too. Cleanup cannot wait until "we have time," it has to be scheduled into the loop. If you are generating code at 5x, you need to be pruning at close to 5x too.

The future is not more prompts. It is better alignment between tools, frameworks, and the model's defaults. Use boring, well documented technologies, follow ecosystem conventions, and let the AI work with the grain.

In the next phase of AI adoption, the winners will not be the teams that use the most compute. They will be the teams that waste the least.