Every few months a headline announces the end of programming: "AI will write all the code", "in two years we won't need developers". Meanwhile I use AI every day, on client projects and on this very site, and my conclusion is different: AI is a work tool, not someone who does the work for us.
It's not a new position. The compiler automated assembly, the IDE automated remembering APIs, Stack Overflow automated finding common solutions. Each time the job changed, but it didn't disappear: it moved up, towards the problems those tools don't solve.
What it really does well
Used for the right tasks, AI saves hours. In my daily work I use it mainly for:
- Repetitive code: DTOs, validation, component and test skeletons.
- Understanding legacy code: "explain what this 200-line function does" is a great starting point.
- First drafts: a query, a regex, a migration script to review.
- Conversions: from JSON to a TypeScript interface, from CSS to SCSS, from callbacks to async/await.
- A first review pass: obvious errors, unclear names, forgotten edge cases.
A concrete example: generating validated DTOs for a fifteen-field form used to take me about twenty minutes of mechanical work. With AI it takes two minutes, plus five to read it through. That's the kind of gain a tool should deliver: less time on the repetitive, more time on the reasoning.
Where it stops
The limit isn't code quality, which is often good. The limit is everything around the code:
- Context: it doesn't know why the client wants that feature, or which constraints aren't written down anywhere.
- Decisions: between two correct solutions, choosing the right one for that team and that budget.
- Verification: generated code always looks right, even when it isn't.
- Responsibility: when something breaks in production, a person answers for it, not a model.
An example that actually happened to me. To show an order date, the assistant suggested this:
// Suggested code to show an order date
const date = new Date('2026-10-02');
label.textContent = date.getDate() + '/' + (date.getMonth() + 1);
// Rome: "2/10" — New York: "1/10"
The code compiles, local tests pass and it works in Italy. But a string in YYYY-MM-DD format is parsed as midnight UTC, so for a user in the United States the order shows up as the day before. The AI wasn't "wrong" in the strict sense: it didn't know the site has users in several time zones. Noticing that is our job.
A real working day: who does what
If I look at a typical day, the division of tasks is fairly clear:
| Activity | Who does it |
|---|---|
| Understanding what the client really wants | Me |
| Choosing architecture and trade-offs | Me, with AI as a sparring partner |
| Writing component, DTO and test skeletons | AI, and I review |
| Analysing a strange error in the logs | Together |
| Releasing to production and taking responsibility | Me |
"Tool" doesn't mean "harmless"
Saying AI is a tool doesn't mean nothing changes. A lot changes: people who only did repetitive work are more exposed, and juniors risk skipping the phase where you learn the fundamentals, because working code arrives effortlessly.
At the same time, some skills are worth more than before:
- Reading and evaluating code, not just writing it.
- Knowing the domain: invoicing, healthcare, logistics, whatever the client's sector is.
- Communicating: turning a vague request into precise requirements.
- Verifying: tests, monitoring, critical review.
How to use it as a tool: five rules
- Don't accept code you can't explain. If you can't say why it works, you can't tell when it will stop working.
- Give context. Framework version, project conventions, real constraints: the quality of the answer depends on it.
- Verify with tests, especially edge cases: empty values,
null, time zones, network errors. - Don't paste sensitive data: keys, passwords, clients' personal data.
- Measure the gain. If fixing the answer costs more than writing the code from scratch, write it yourself.
In short
I see AI as a tool: the most powerful one we've had in a long time, but still a tool. It automates the repetitive and speeds up first drafts; it doesn't know the context, doesn't make decisions and doesn't take responsibility. It's often said that AI won't replace developers, but developers who use it well will replace those who ignore it: I think that's true, as long as we add that "using it well" means remaining the ones who understand, choose and verify. I also cover this from the hiring side in this article on interview questions in the AI era.