cat posts/2025-06-10-to-my-ai-skeptic-friends.md

To my AI-skeptic friends

· 4 min read · ai agents programming opinion

Four people have sent me Thomas Ptacek’s My AI Skeptic Friends Are All Nuts since it went up on the 2nd. Two sent it as “this is you”, meaning the version of me from a few years ago, and two as “is this true?”, meaning the version of me now. Both are fair. In 2020 I wrote that GPT-3’s arithmetic was the warning label, in 2021 that Copilot was very good autocomplete and “AI pair programmer” oversold it, and I spent 2023 moving my skepticism a step at a time. So I’ve been on both sides of this essay, and I wanted to answer the “is this true?” people properly.

If you haven’t read it, it’s long, profane and funny, and it goes through the standard objections one heading at a time. His central claim is in the first section: “People coding with LLMs today use agents.” That is, if your opinion comes from pasting code into a chat window in 2023, you’re having an argument about a tool that most people using these things seriously don’t use anymore.

Where he’s right

That first point is the one I’d put my name to without any hedging. My view changed more between February and April this year, when I started using an agent in my terminal, than in the two years before it. The models got better too, but what changed my mind was the loop. When the tool can run the compiler and the tests itself, read the errors and try again, a whole category of mistakes I used to complain about stops reaching me. My 2022 ChatGPT post had an invented Postgres setting and a broken regex in it. The agent invents things just as often, as far as I can tell. It’s just that the build fails, and it notices, and fixes it before I see it.

He’s also right about the tedium, and about what that does to motivation. The stuff I used to put off for months, the dependency upgrade, the tests for the module nobody wrote tests for, the migration script, I now just start, because starting costs me a paragraph. My text file has a bit over 300 agent tasks in it since February. The ones I’d have put off are most of them.

And he’s right that a lot of the argument is about whether the code is beautiful, and that most code doesn’t need to be. I spent a lot of my career on the parts of systems that nobody would ever call craft, and good enough, tested and reviewed, is what they needed.

Where I think he’s wrong

The line that’s been quoted at me most is “If hallucination matters to you, your programming language has let you down.” I see what he means, and for Go or Rust or C#, with a strict compiler, it’s close to true for invented APIs. A method that doesn’t exist doesn’t compile. But half our backend is Ruby. In Ruby an invented method is a NoMethodError at runtime, if your tests happen to reach that line, and a wrong keyword argument can be silently swallowed by a method that takes **opts. That’s an argument for better tests, and he’d say so. Fine. But the bigger problem is that the compiler only catches the hallucinations that are about the language. It doesn’t catch the ones that are about the world.

Our support pilot this spring had a model invent a Trash feature with a 30-day restore window. No compiler would have caught it, because it was a perfectly valid sentence about a product that doesn’t exist. In code, the equivalent is the agent that gets a business rule subtly wrong, in a way every test passes, because the tests encode the same misunderstanding. I had a milder version last month, where an agent made a reasonable decision about timestamp handling and wrote it down in entry 9 of 14 in its notes. The tools are very good at being wrong in ways that type-check.

The second disagreement is “LLMs only produce shitty code if you let them.” True, and it carries a lot of weight in the essay. “If you let them” means reading every diff carefully, and that’s exactly the habit that wears down when the output is usually right, which is the skim I wrote about in April. Ptacek is a very experienced engineer, and I’m sure he reads every line. I’m much less confident about a team of twenty under deadline pressure, six months into agents being right nearly every time, and that’s the case I actually have to manage.

I’d add that the essay is about people like him and me, senior engineers who can tell quickly when something’s wrong. Most of the value I get from these tools comes from that, and I said the same in 2023. What happens to someone who’s learning, and who never had to write the tedious code that taught the rest of us how the system worked, is a question the essay mostly doesn’t take on. I don’t have an answer either, but I’d be careful about calling the people asking it nuts.

So, is it true?

Mostly, yes. If you’re a good programmer and you tried this stuff in 2023 and decided it wasn’t for you, try an agent for a week on real work, on code with tests, and then make up your mind. I’d be surprised if you came out where you started. But keep the skepticism, because you’ll need it for the review. If I’m worried about anyone this year, it’s the converts who stopped reading the diffs.