Of all the arguments swirling around AI-generated software, the one I find most neglected is also the most fundamental. It's not about jobs, or code quality, or even accountability. It's about what programming languages actually <em>are</em> — and what happens to our minds if we stop using them.
The standard story casts programming languages as a regrettable middle layer: computers demand precision, humans speak ambiguity, and languages like Python or Rust are the awkward compromise we tolerate until something better arrives. Under this story, natural-language prompting is progress and direct thought-to-code translation — the brain-computer-interface future now being seriously researched — is the finish line. The intermediary finally eliminated.
I think the standard story has it exactly backwards. Programming languages were never primarily for the computer's benefit. They're for ours.
Formalism as scaffolding
Edsger Dijkstra warned decades ago that our tools have a profound — and devious — influence on our thinking abilities. He meant it as a caution, but it cuts both ways: the right formal tools don't just constrain thought, they <em>enable</em> it. Nobody multiplies large numbers with Roman numerals; positional notation didn't just record arithmetic more conveniently — it made whole classes of reasoning tractable. Musical notation didn't merely transcribe melodies; it made it possible to <em>compose</em> structures too large to hold in the ear.
Programming languages sit in that lineage. A type system is a machine for catching your own confusion before it compounds. An interface definition forces you to decide — actually decide — what a component promises. Expressing an algorithm in a real language, with its unforgiving grammar of scope and state and time, imposes a clarity that no amount of armchair reasoning achieves. Cognitive research backs the intuition: code structure measurably shapes cognitive load, and well-designed languages and conventions free working memory for higher-level reasoning. The language is not the tax you pay to reach the machine. The language is the ladder your thinking climbs.
Here's the test I'd offer anyone skeptical: recall the last time you were <em>sure</em> a design was sound — until you tried to implement it. Somewhere between the whiteboard and the compiler, the design confessed. That confession is the value. The formalism interrogated a thought that felt finished and revealed it wasn't. Now ask what happens in a pipeline where thoughts are never made to confess — where a rough intention goes in and polished-looking software comes out. The thought doesn't become sound. It just stops being questioned. The assumption baked into frictionless-creation visions — that our natural, unformalized ideas about systems are already logically coherent — is contradicted by every programmer's daily experience. Programming is an act of discovery precisely because our raw thoughts are <em>not</em> well-formed, and the language is the guide that shows us where.
Atrophy is quiet
Skills don't announce their departure. A generation that reaches for the calculator early loses arithmetic fluency imperceptibly; a profession that reaches for generated code by default will lose its fluency in formal reasoning the same way — not in a dramatic collapse, but in a slow shift in what its practitioners can no longer comfortably do. The devious part of Dijkstra's warning is that the tool shapes the thinking <em>habit</em>, and habits set capabilities. If the daily practice becomes describing vibes and auditing outputs, then describing and auditing is what we'll be good at — and constructing precise mental structures from first principles is what we won't.
That would matter less if auditing were self-sufficient. It isn't. You can only meaningfully audit what you could, in principle, have constructed. The comprehension that review depends on is built by the very practice that generation replaces. Eliminate the practice and you eventually eliminate the reviewer.
Augmentation has a shape
None of this makes me a refusenik. The productive future — the one worth building deliberately — has a recognizable shape, and it isn't "tools that make implementation invisible." It's tools that make <em>reasoning</em> more visible.
For toolmakers, that means: surface the assumptions and constraints behind a suggestion, not just the suggestion; expose failure modes alongside the happy path; run policy checks — security, privacy, performance budgets — <em>before</em> code is accepted; and maintain traceability from prompt or thought, through requirement and model, to code and test, so that every artifact has an auditable ancestry. Intent itself deserves engineering: captured as a shared artifact — assumptions, hazards, acceptance criteria — linked to tests, signed off by the roles it affects. Even a mature neural interface fits this shape honorably: as a <em>collector and refiner</em> of intent feeding a checked pipeline — a magnificent input device — rather than a bypass around engineering governance. Assistive debugging, rapid prototyping, accessibility for engineers who can't type — real augmentation, all of it.
For educators: requirements engineering, contracts, model-based design, and safety cases deserve first-class status beside coding — and reviewing AI-generated code should be <em>taught</em>, as its own rigorous skill, threat modeling included. For teams: sandbox runs and policy gates as a condition of merge, and someone accountable who can explain the change. In every case the pattern is the same — the machine contributes speed, the formalism contributes rigor, and the human stays in the loop where judgment lives.
The distinction I keep returning to: augmentation extends the craft; abdication replaces it and keeps the costume. The first gives us engineers who think <em>better</em> than we do, standing on tools we can only envy. The second gives us fluent summoners of artifacts no one can reason about — masters of intent, novices at everything intent requires.
Languages made us the discipline we are. Whatever we build next, we should make sure we're still thinking in something.





