"You Didn't Write It, So You Don't Understand It" Doesn't Hold Up
There's an argument against AI coding tools that keeps resurfacing, dressed up in slightly different language each time: you didn't write the code, so you don't truly understand it. I read another version of it recently, confident, well-argued on the surface, and it still doesn't hold up once you actually look at how software gets built in practice.
The assumption baked into the argument
The argument only works if you accept a hidden premise: that understanding code requires having authored it. That premise sounds intuitive. It's also false for almost every professional engineer, and it's been false for a long time, well before AI tools entered the picture.
Think about the codebases you've actually worked in. Not a personal side project you built from scratch, a real production codebase, at a real company, with a real team. Now ask yourself honestly: what percentage of that code did you personally write?
For most of the platforms I've worked on, across fintech, insurance, and cooperative lending systems, my honest answer is under 1%. The rest was written by people who joined before me, people who left before I arrived, people on parallel teams I never sat next to, and entire libraries and frameworks maintained by strangers I've never met. My job was never contingent on having written it. My job was to understand it well enough to debug it, extend it safely, and ship on top of it without breaking what was already there.
This isn't the exception, it's the default condition of the job
Junior engineers sometimes arrive with the mental model that a codebase is something you build. Most working engineers quickly learn a different truth: a codebase is something you inherit, and inheriting it is the actual job. You read code you didn't write from your first week on a team to your last. You trace execution paths through modules authored by people who've since moved to different companies. You debug production incidents in code with no comments, no author you can ask, and no memory of why a particular decision was made.
None of that stopped anyone from becoming a competent engineer. If authorship were genuinely required for understanding, the entire profession would be structurally impossible, because almost nobody works exclusively in code they personally wrote.
What "understanding code" actually requires
Strip away the authorship framing and ask what understanding a piece of code actually means in practice. It means being able to trace what it does under a given input. It means knowing where its edge cases are, and being able to reason about what happens when they're hit. It means recognizing when a change nearby might break an assumption baked into it. It means having enough of a mental model to predict its behavior without running it, and enough humility to verify that prediction when it matters.
Every one of those skills is exercised on code you didn't write, every single day, for any engineer working on a codebase with more than one contributor. Reading, tracing, and verifying unfamiliar code has always been a core professional skill, arguably the core skill, distinct from and at least as important as the skill of writing new code from a blank file.
AI-generated code isn't a new category, it's a familiar one
Code from an AI assistant sits in the exact same category as code from a colleague, a legacy module, an open-source dependency, or a scaffold generated by a framework's CLI. In every one of those cases, you didn't write it, and you were still responsible for understanding it before shipping it. The skill that responsibility calls on, reading unfamiliar code critically and building an accurate mental model of it, is precisely the skill experienced engineers have always relied on. AI-assisted coding doesn't introduce a new problem here. It just increases the volume of unfamiliar code arriving at your desk, which makes the existing skill more load-bearing, not less relevant.
Where the argument has a grain of truth, and where it doesn't
I don't think the concern behind this argument is entirely empty. If a team starts treating AI output as something to merge without review, without tracing its logic, without holding it to the same scrutiny applied to a human colleague's pull request, that's a genuine problem. But that's a discipline failure, a team choosing not to exercise the reading and verification skill it already needs. It's not evidence that AI-generated code is inherently less understandable than any other code you didn't personally author. The fix for that failure mode was never "write everything yourself." It was always "review what you didn't write with real rigor," which is exactly the standard that should have applied to every unfamiliar pull request long before AI tools existed.
The question worth actually sitting with
Next time someone makes this argument, the useful response isn't a counterargument, it's a question: how much of the codebase you work in every day did you actually write yourself? For nearly every engineer on a real team, the honest answer is a number far smaller than the argument assumes. Once you've actually counted it, the "you didn't write it" objection stops sounding like a principle and starts sounding like something that was never quite true of software engineering in the first place.


