In January, a senior software engineer in Silicon Valley sent Cal Newport a message about Claude Code. He had been a skeptic. Then he tried it, and the tool rewired his entire workflow overnight.
He stopped using a standard development environment. He switched to working exclusively in a terminal window, letting Claude Code write the code on his behalf. His estimate: tasks that once took a week now took two days.
That was the first message. Last week, he sent a second one.
What Went Wrong
The same engineer wrote back with a different story. Code he had generated using Claude Code crashed their product. Not once. Twice. His boss told him a third incident would cost him his job.
“I’ve never had quality issues like this before in my career.”
The core problem is not that AI writes bad code. It’s that AI writes code that looks reasonable. The bugs are hard to spot, buried in logic that passes a quick read. And reviewing someone else’s code carefully is already difficult work. Reviewing code that an AI agent wrote is harder still.
As the engineer put it, understanding code you didn’t write yourself is “famously hard,” which makes thorough review “easy to just blow it off (especially when we are all trying to ’10x’ our velocity).” So the checks get skipped. The bugs ship. Systems break.

The Conclusion He Landed On
After the near-termination scare, the engineer returned to writing code largely by hand. His current philosophy:
“Writing your own code, slowly but surely, and using LLMs for narrow or particularly annoying tasks (say like writing tests or throw-away scripts), is the best way to produce the highest quality code, since it’s the only way to properly understand it.”
In short: AI as a scalpel, not a replacement surgeon. Use it for tests, for boilerplate, for one-off scripts. Keep the core logic in your own hands so you actually understand what runs in production.
This Engineer Is Not an Outlier
Newport reports hearing similar signals across the software industry. The all-in agentic approach, where developers outsource the majority of code production to AI, is running into three distinct walls.
- Reliability: Hard-to-spot bugs that compound over time in complex systems.
- Skill atrophy: Junior developers who never write their own code will not develop the deep understanding needed to eventually design complex systems.
- Cost: As frontier labs pull back subsidies on compute, burning through tokens in search of workable output is getting expensive fast.
The Bigger Picture Newport Makes
Newport points out that almost every AI “breakthrough” since last summer has been in computer code and math: highly structured domains with massive specialized training data. These are the ideal conditions for current AI capabilities. And even here, in the best-case scenario, the industry is still working out how to use these tools sustainably.
His framing is worth sitting with: AI is not an infinity machine. It’s a normal technology. One with real strengths, real limits, and a learning curve that the industry is only beginning to climb.
The Operator Takeaway
If you’re a solopreneur or indie hacker leaning hard on Claude Code or similar tools to ship faster, the lesson here is not to stop using AI. It’s to stay in the driver’s seat on anything that runs in production. Use agents for the tedious, isolated, and reversible work. Keep your hands on the logic that matters. Review outputs as carefully as you would a contractor’s pull request, because that’s exactly what they are.
The engineers who will come out ahead are the ones who treat AI as a fast junior developer, not as a senior architect they can fully delegate to.

