I've been using AI coding tools seriously for well over a year now — Claude Code as a daily driver, with Cursor for in-editor work. Long enough to have real opinions about what actually changes and what stays exactly the same.
The hot takes tend to go one of two ways: "AI will replace developers" or "it's just autocomplete". Neither is right.
What genuinely changes
Boilerplate disappears. Scaffolding a new API route, writing a test suite for an existing function, converting a REST endpoint to use a new schema — these used to take 20 minutes of mechanical typing. Now they take a few seconds of review. That's a real and meaningful change to how I spend my time.
Unfamiliar territory is less scary. When I was reading an unfamiliar codebase recently or picking up a library I'd never used, I used to spend a lot of time just navigating — finding the right file, reading docs, figuring out the pattern. AI tools compress this dramatically. I can describe what I'm trying to do and get a working starting point I can then understand and adapt.
Debugging gets faster. Pasting a stack trace and asking what's wrong is not magic, but it does work often enough to be worth doing before spending 30 minutes down a rabbit hole yourself. It's like having a colleague who's seen the same error before.
What doesn't change
Architecture is still yours. Deciding how to structure a system, where to draw service boundaries, when to introduce an abstraction — AI tools are not reliable here. They'll suggest something plausible-sounding but often subtly wrong for your specific context. This is still a human skill and probably the most important one.
You still need to understand the code. The biggest trap I see is accepting generated code you don't understand. It might pass the tests and ship fine today. When it breaks in production at 2am, you'll wish you'd read it properly. AI-generated code needs the same scrutiny as code from a junior dev — sometimes it's great, sometimes it's confidently wrong.
Knowing what to build matters more. When the cost of writing code drops, the bottleneck shifts to knowing what to write. Being precise about requirements, thinking clearly about edge cases, writing tight specs — these compound in value because the implementation step is so much cheaper.
How to actually use it well
A few things that have made a real difference in how I use these tools:
Be specific. Vague prompts produce vague code. "Add error handling" is worse than "throw a ValidationError with the field name if the input is missing required fields, and log it at warn level." The more context you give, the better the output.
Work in small chunks. Asking an AI to build an entire feature end-to-end in one shot usually produces something you then have to unpick. Breaking it into steps — schema first, then the handler, then the tests — gives you review checkpoints and better results.
Push back. If something looks wrong, say so. These tools respond well to "that won't work because X, try Y instead." Treat it like a conversation with a smart colleague, not a command you execute once and accept.
What skills matter more now
Understanding what you want. Thinking in systems. Reading and critiquing code quickly. Communication — both to the AI and to your team about what the AI produced.
The developers who will get the most out of this shift are the ones who are precise thinkers. The tools handle the mechanical parts. What's left is judgment.