After a few hundred kilometers, you forget what learning to drive actually felt like.
With a manual car, your brain had to get familiar with every part before you could think about where you were going. The gear, the clutch, the brake pressure, the mirrors, where the car ends on each side. All of it had to become automatic first. Most of that did not happen in a classroom. It happened on the road, scenario by scenario.
That is just in time learning. You took the 20% from theory and built the rest through practice. That is what made you road-ready.
Coding agents assume you already are.
Cursor, Copilot, Claude — they help you move faster toward the destination. They do not teach you how to drive.
Take something simple. A new engineer asks an agent to handle authentication. The agent returns working code with JWT tokens, expiry logic, refresh flows. It runs. It passes the happy path. What the engineer does not know is why the refresh token is stored the way it is, what happens when it leaks, or why that expiry window was chosen. The code ships. Nothing breaks immediately. The understanding never comes.
Or take async code. An agent generates something like this:
Take something simple. A new engineer asks an agent to handle authentication. The agent returns working code with JWT tokens, expiry logic, refresh flows. It runs. It passes the happy path. What the engineer does not know is why the refresh token is stored the way it is, what happens when it leaks, or why that expiry window was chosen. The code ships. Nothing breaks immediately. The understanding never comes.
Or take async code. An agent generates something like this:
const data = await fetchUser(id); const orders = await fetchOrders(data.id);
It works. But an engineer who does not understand the event loop, error boundaries, or what happens when fetchUser fails silently will not catch the edge case until it hits production. The agent wrote correct code. The engineer just does not know when it is wrong.
Experienced engineers are in a different spot. They carry something agents cannot give you. Product sense. Business context. An understanding of what the job actually is beyond the syntax. When they use an agent to generate a database migration or scaffold an API, they already know what to look for. They review it with intent. That combination is genuinely powerful.
The risk is not with those engineers. The risk is assuming that pattern scales to everyone.
Cheaper mistakes do not mean better learning. When bad code is easy to generate, it is also easy to ship without understanding it. In a personal project that is fine. In a product with real users, a flawed auth model or a broken background job is not a recoverable fender bender. It costs trust. Sometimes it costs data.
The engineers who will matter are the ones who stay sharp on the fundamentals by choice, not because something broke.