I have used agentic coding tools daily for about a year now. They are genuinely good, and the discourse around them is genuinely bad — split between people who think engineering is over and people who think the whole thing is a parlour trick.

What actually changed for me is the ratio. I used to spend most of my day producing code and a small slice reviewing it. Now that is inverted, and the skill that matters most is the one that was always undervalued: reading code critically and knowing when something is subtly wrong.

The failure mode

Agents are relentlessly agreeable. Ask for a feature and you will get one — often with a new abstraction you did not need, a config flag nobody will ever flip, and a helper file that duplicates something three directories away. It compiles. It passes. It is still a mess.

The bottleneck was never typing. It was deciding what deserves to exist.

So I push back hard. I reject output that does not fit the architecture, I make the agent delete things, and I keep the codebase’s conventions written down where it can read them. Treated that way, it amplifies my work. Treated as an oracle, it quietly fills your repo with plausible sludge.

None of this replaces judgement about what to build, how it should be shaped, or what will still make sense in three years. That part has, if anything, become more valuable.