Everyone is trying to get better at AI right now.
Better prompts. Better tools. Better workflows. The assumption is that if you can just squeeze more out of the model, you will stay ahead.
That is not the skill that matters.
Before We Get Into It
I have written about this shift before. About how the bottleneck moved from writing code to understanding systems. About how AI does not know your business context, and why that gap does not close no matter how good the models get.
That is all still true. But there is a layer underneath it that I did not get to, and it is the part that actually changes what a good engineer looks like day to day.
What Everyone Gets Wrong About Prompting
When something goes wrong with AI-generated code, the instinct is to blame the prompt. The logic makes sense: better input, better output. So developers iterate on their prompts, add more context, write more detailed instructions, and sometimes it helps.
But there is a category of failure that prompting cannot fix. And it is the most common one.
AI works within a context window. It sees what you give it in that moment, and nothing else. It does not see the file you did not include. It does not see the service that runs in a separate repository. It does not see the architectural decision from eight months ago that constrained everything built after it. It generates something coherent based on what is in front of it, which can look exactly right while being completely wrong for the system it lives in.
This is not a knowledge problem you can solve by writing a better prompt. It is a structural limitation. The model is not missing information you forgot to provide. It is missing information that cannot be put into a prompt because it is distributed across your entire codebase, your team's history, and decisions that were never written down.
What Validation Actually Requires
Take a concrete example. You ask AI to build authentication for an app where users can be logged in across multiple devices. It produces token expiry logic, a refresh flow, tests that pass. Everything looks correct, because at the level the AI can see, it is.
What it cannot see is that this app handles financial data, and the business requirement is that changing a password must immediately invalidate every active session everywhere. That rule exists because of a specific incident that shaped how the team thinks about security. It is not in any file. It is in the institutional memory of the people who were there.
The AI built something that works. It did not build what the system needs. And nothing about the prompt would have changed that, because the person writing the prompt did not think to include it either.
This is where validation becomes something other than reviewing output. It is the act of bringing everything the AI cannot see into contact with everything it produced. Not skimming for syntax errors. Not checking whether the tests pass. Asking whether this code, in this system, with this history, actually does the right thing.
That requires knowing the system at a level that lives outside any single file or conversation. It requires knowing which decisions were made under constraint, which parts of the codebase are fragile for reasons that are not obvious, and which requirements look stable but are not. None of that is in the prompt. All of it determines whether the output is correct.
The Skill Nobody Is Training For
Most AI workflow advice focuses on the generation side. How to structure prompts. How to break down tasks. How to get better output faster.
The validation side gets treated as a review step. Read the code, check the tests, ship it.
But validation in the way I am describing is not a review step. It is the part of the job that requires the deepest understanding of the system. And it is the part that AI makes harder, not easier, because the volume of code being generated has outpaced the instincts most developers have built for evaluating it.
The engineers who will struggle are not the ones who prompt badly. They are the ones who can generate quickly but cannot hold the whole system in their head. Who can review a function but cannot see how it fits into something larger. Who treat a passing test suite as the end of the question rather than the beginning of it.
The engineers who will not are the ones who understand that generating the code was never the hard part. Knowing whether it belongs in the system is.
Coding Still Matters
None of this means writing code stops mattering. Reading a diff, tracing logic, understanding what a piece of code actually does, that is still the foundation.
But it is no longer where the difficulty lives.
The difficulty is in carrying the system in your head clearly enough to know when something generated fits and when it only looks like it does. That is not a skill you can prompt your way into. It is built from time spent understanding how things connect, why decisions were made, and what the codebase is actually trying to do.
The developers who will matter are not the ones who generate the most. They are the ones who understand enough to know when to trust what was generated, and when to push back on it.
That has always been the job. It is just more visible now.

