Writing
Caring About Code Is Becoming a Coping Mechanism
The confession
I've been a software developer for twenty-five years. I work as a consultant doing daily architecture/design and coding on several large, enterprise projects, and I also run a production SaaS with paying customers, real revenue, and regular deployments.
I haven't read a line of my own codebase in over three months. The code window is now reserved entirely for claude.
Claude plans the design, and agents write the implementation. No diff skimming, no spot-checks, no nothing. Instead, my time is now spent reviewing the evidence around each change: are there tests and did they pass, did the architecture rules pass, and most importantly, what happened after deployment, does the product work?
The product ships regularly, things work, revenue is growing, and customers are happy. I care deeply about the product. I've just stopped caring about the code itself.
Ten years ago, hell even 3 years ago, I'd have called that malpractice. Today, it's just a Tuesday. The gap between those two realities is why I wrote this - because I think most of our industry is still living in that first one.
Protecting the product or ourselves?
Watch what actually happens when a team reviews AI-written code. The scrutiny is unlike anything we apply to each other. Every line inspected. Every variable name debated. Every comment scrutinized. Every test case questioned. We say the word "quality" a lot while we do it.
When a senior engineer you trust ships a change, do you read every line? Nope. You read the shape of it — the tests, the interfaces, whether it touches anything scary. You extend trust because they've earned it, and reading every line would be an insult and a waste of an afternoon.
Something's now writing pretty decent code, 10x faster than you or I ever could, around the clock, without getting tired or bored or precious about it. That's an uncomfortable thing to sit with when code is how you've defined yourself for a career. So we respond the way you do with the smarter, faster new kid: you inspect their work the hardest. Of course, some of that is diligence, though I think a lot of it is more a coping mechanism — control as a way of staying necessary.
There's a simple way to tell which one you're doing. If the agent's defect rate on some class of change dropped below your team's, would you actually review those changes less? If no measurement would ever make you read less, that isn't quality control. That's ritual.
I get to say this because I did it too, I'm just further along in accepting where this is going.
An entire industry using a thing it won't trust
This isn't me theorizing about other people's psychology. The survey data from the last year shows an industry stuck in exactly this bind.
Stack Overflow's 2025 survey put AI tool use at 84% of developers, with 51% of professionals using them daily. Google's DORA report measured 90% of tech professionals using AI at work, at a median of two hours every day. Adoption is no longer the question.
Trust went the other direction. In that same Stack Overflow survey, 46% of developers distrust the accuracy of AI output versus 33% who trust it — and the share who "highly trust" it is 3.1%. DORA found the same contradiction and named it the trust paradox: 30% trust AI-generated code a little or not at all, over 80% say it made them more productive, and they use it anyway, daily. An entire profession is shipping with a tool it doesn't believe in.
The companies employing those developers moved faster than the trust did. Sundar Pichai told investors in April 2025 that well over 30% of Google's checked-in code comes from accepted AI suggestions; by February 2026 Google's CFO was saying about half their code is written by coding agents. Even at Google, AI-generated code is still described in terms of the engineers who review it. Review is still the psychological line separating assistance from autonomy.
METR ran a randomized controlled trial with experienced open-source developers working in their own mature codebases: with AI assistance they took 19% longer — while predicting a 24% speedup going in, and still believing in a 20% speedup after it was over. The tools have improved since early 2025, but that's not why the result matters. It matters because it shows we're pretty unreliable in describing our AI transition. Those developers felt faster while being slower. So when you feel certain that your line-by-line review of AI output is where your value lives, how much would you bet on that feeling?
How fast this flips
Last year, using AI almost cost me a job. The company I was interviewing with nearly rejected my coding project, (and me) because it looked too perfect. They (correctly) assumed I'd used AI — nothing in the exercise prohibited it — but at the time, heavy AI use read as evidence that I'd skipped the real work. The product worked perfectly.
Less than a year later, everyone there is using it, and the organization is now building its own internal library of shared Claude skills. That whole transition — suspicious, then tolerated, then normal, then official infrastructure — took about 8 months.
This isn't moving at the speed of a normal tooling transition. Capability is compounding fast enough that a practice considered irresponsible today can become standard operating procedure before the organization finishes writing a policy for it.
The part where the control crowd is right
The control crowd isn't wrong about everything. The skeptics are right when they say AI still produces bad code. Where I disagree is on the response to that — keeping code inspection at the center of engineering isn't it.
The quality worries aren't invented. GitClear analyzed 211 million changed lines and found copy/pasted code exceeding refactored code for the first time in their dataset's history — churn up, refactoring down, code clones up roughly 4x since 2020. The skeptics are seeing something real. The mess is real, and it's compounding.
I'm making a bet about that mess: capability compounds faster than the debt does. The same agents generating clone sprawl today will refactor it for pennies tomorrow — large-scale mechanical refactoring against a passing test suite is exactly the kind of well-specified work they're best at. If churn keeps climbing and that refactoring never shows up, I was wrong and the control crowd gets to say so.
Any team without guardrails gets wild. That's not an AI problem; that's a team problem. You don't give a new hire production access on day one, and you shouldn't give a language model production write authority on any day. Here's what that means concretely in my shop:
- The AI never writes to production. It produces a suggestion in a structured format, and deterministic code validates that suggestion against pre-set constraints before anything happens. The blast radius of a really dumb decision is capped by design.
- Architecture is enforced by the build, not by vibes. The dependency rules of the system are encoded in build-time architectural tests. An agent that violates the design doesn't get argued with in review — its change fails before I ever see it. Behind that sits a 966-test suite that runs before any deploy.
- Money has a meter. Every model call is recorded — usage by request, user, feature, and model — with budgets and hard cutoffs. As I write this, that ledger holds 57,132 calls and 253 million tokens across four models and six workloads, including the 3,283 calls that failed — recorded, not hidden. It also tells me my entire AI bill since mid-June: $26.64. I know what every feature costs per user. Alerts are nice; automatic limits are what keep a 2 AM agent loop from bankrupting a small company.
- Every release gets an AI review of its own. The deploy pipeline diffs the release, hands it to a model armed with the architecture, tenancy, and rules, and blocks the production deploy on any critical or major findings. AI reviewing AI-written code against rules a human set. I attach the same gate to most of my projects.
The obvious hole in all of this: tests prove the behavior you expected is there. They say nothing about behavior you never thought to look for. A subtle tenancy leak sails through all 966 tests if none of them were written to catch it, and line-by-line reading is genuinely the best tool for that kind of defect. I know. I'm accepting that risk with my eyes open, the same way I accepted it for twenty years as the sole reviewer of my own code at 11 PM, tired, and biased toward shipping. The bounded write path and the cold-read release reviewer cover most of it. Not all of it. If you're holding payment credentials or health records, you might have different concerns and still read your fair share of code.
None of those controls make the code elegant. That's not what they're for. They make the product safer to operate and they make failures visible.
So yes: constraints, boxes, hard limits. I'm not anti-control. I'm asking a different question — where should the control live, and for how long?
What I actually care about
I didn't stop reading code because I found a better way to admire its quality. I stopped because code quality isn't the outcome I care about.
I care about the product. Does it do what it's supposed to do? Is it secure? Is it reliable? Can I change it quickly when the product needs to change? Can the system that built it keep maintaining it? Those are the outcomes I care about. I don't care whether the implementation is elegant, whether it follows the architecture I'd have picked, or whether another developer would enjoy reading it. I really don't care what the code looks like.
The machine can use conventions I dislike. It can produce code I'd call ugly. Eventually it may build an architecture I'd never have designed. As long as it can understand that system tomorrow, modify it safely, prove the behavior still works, and keep it secure, the internal shape of the code doesn't matter to me. Human-readable code mattered because humans had to maintain it. If machines become the primary maintainers, optimizing the codebase for human comprehension stops paying for itself. I don't need the code to be good by human standards. I need the product to be good by measurable standards.
We're not there yet. Current models still lose context, make bad tradeoffs, introduce security risks, and sometimes build complexity they can't unwind. That's why the controls in the last section exist. I still define the intent, set the constraints, limit the blast radius, and decide what evidence is enough to ship. Sometimes I still have to look lower in the stack because the controls can't tell me enough. Less often than it used to, though.
This still goes wrong. Agents misunderstand requirements, make changes broader than necessary, and occasionally create a mess. I redirect them, improve the tests, or tighten the constraints. I'm not claiming the process is autonomous. I'm saying that reading every line has stopped being the most useful place for me to intervene.
Control didn't disappear from my process. It moved up a level. I review at the boundaries now — contracts, tests, the shape of the change. The mental model I keep in my head is the system's structure, not its implementation. It's closer to how you own a codebase with six human contributors than one you typed yourself.
And yes, everything in that process — the tests worth writing, the constraints worth encoding, the sense of what evidence is enough — comes from twenty-five years of reading and writing code. Nobody coming up now will build it that way, and I don't think it matters. I never learned to read compiler output either. The generation before me was sure that skill was load-bearing. It wasn't — I just spent those years a level up. The next generation will learn how not to code: how to state intent, cap blast radius, and judge machine output at the system level, from day one. They'll get their scar tissue from owning things that break, same as I did. Just higher in the stack.
The ratchet only turns one way
Developers used to inspect compiler output because generated instructions couldn't be trusted. Most stopped when the abstraction became consistently better than the value of inspecting it. Manual memory management went the same way. I think reading code is heading to the same place.
So here's where I actually am.
Line-by-line review of AI code is already dead anywhere work ships at real speed. Structure — the thing we're all writing linters and standards documents and angry blog posts about right now — is dying the same death, and the fight over it is mostly grief. The guardrails that matter are moving up: contracts, tests, blast radius, budgets. Not "did it name the variable well" but "can it hurt me, and would I know."
We're between stages. AI can write far more of the implementation than it can safely own. I still define the boundaries and sometimes the architecture. I still decide what evidence is enough. But I spend less time inside the code every month and more time judging the system around it.
Here's how it's gone for me. At first AI wrote functions and I reviewed every line. Then it implemented features and I reviewed the changes. Now I mostly review contracts, tests, constraints, release evidence, and product behavior.
Writing the code → reviewing the code → reviewing the change → reviewing the evidence → reviewing the product outcome.
We still need humans. We just need them much less at the level of the code and much more at the level of the product. This won't happen at the same speed everywhere. Some code will need eyes on inspection for a while yet — if a regulator or an auditor reads your source, human comprehension is a requirement imposed from outside, and no amount of capability removes it. But the general movement is up, and I don't expect it to reverse.
My prediction — and I mean for it to be aggressive: within about two years, developers working on most modern application software won't routinely inspect generated code at all. Argue with the timeline if you want. I don't think you can argue with the direction.
Today I still guide the architecture, because current agents aren't consistently good at the system-level tradeoffs. It's where I add the most value and I enjoy the work. I'm not attached to keeping it. I also don't need the machine to preserve my design. I care whether the architecture stays understandable and maintainable to the system operating it, not whether it looks like something I'd have drawn. If agents eventually prove they can design, secure, and evolve a system better than I can, I'll stop caring about that layer too. The level where humans add value is not a fixed address. It keeps moving up.
I let my agents do a lot without a ton of oversight. The product is good. I don't care about the dirty details anymore, and no customer has ever asked me to.
The job was never the typing
After twenty-five years of writing software, here's where I land: this is awesome! I didn't get into this field to type. I got into it to solve problems and build things that work for people, and I've never in my career shipped more, better, or faster than I do right now — without reading a line of it. And yes, after everything I just said about METR, I know what that sentence is worth: a developer's feeling about his own speed. So don't take my word for it. I'm running four projects across three machines right now, alone, no employees. Count that however you want — it wasn't a thing I could ever have done before.
The code was never the point. It was always the tax we paid to get the product. The tax rate just dropped.
Sources
- Stack Overflow Developer Survey 2025 — AI section (~33,700 respondents): 84% adoption, 51% daily professional use, 46% distrust vs 33% trust, 3.1% high trust.
- Google DORA, State of AI-assisted Software Development 2025 (~5,000 tech professionals): 90% adoption, ~2h/day median, the trust paradox.
- Alphabet Q1 2025 earnings transcript (Pichai: checked-in code from AI suggestions "well over 30%") and Q4 2025 transcript (CFO: ~50% agent-written, engineer-reviewed).
- METR randomized controlled trial (July 2025): experienced devs 19% slower with AI while believing they were ~20% faster.
- GitClear AI Copilot Code Quality (Jan 2026, 211M changed lines): copy/paste exceeded refactoring for the first time; ~4x clone growth 2020–2024.