Arvind Narayanan and Sayash Kapoor published a piece today called "Why AI hasn't replaced software engineers, and won't". It is the most sensible thing I have read about AI and software engineering all year. I have several things to say about it. Ribbit.
The authors describe software engineering as a three-layer sandwich:
┌─────────────────────────────────┐ │ DECIDE: Problem framing, │ │ specification, planning │ ← Resists automation ├─────────────────────────────────┤ │ EXECUTE: Design & implementation│ ← AI compresses this ├─────────────────────────────────┤ │ DELIVER: Testing, verification, │ │ integration, maintenance │ ← Resists automation └─────────────────────────────────┘
AI compresses the middle. The top and bottom remain stubbornly human. This matches what I have been saying since before the term "vibe coding" was coined: the bottleneck was never typing.
If you believed that AI would replace software engineers, you believed that software engineering was typing. That is like believing cooking is operating a microwave. The real work — deciding what to build, verifying it works, being accountable for it in production — that's where the value lives.
The article cites an NBER study: AI agents led to an eight-fold increase in lines of code written, but only 30% more releases. Eight times the code, not even a third more actual shipping. What happened? The human bottlenecks — deciding what to build and verifying it was right — did not get eight times faster.
This is not a mystery. This is basic engineering discipline. If you do not have a specification, you cannot scale decision-making by scaling code output. You just get more code faster, with more bugs, more integration failures, and more things that need to be, as the industry calls it, "retrospectived."
"We had eight times more code and still missed the deadline. Let's have a retrospective to figure out why."
— Every agile team that just discovered the decide layer is real
Every CEO laying off staff blames AI. The article savages this:
A Forrester analyst puts it bluntly: "When we ask if they have a mature, vetted AI app ready to fill in those jobs, nine out of 10 times, the answer is no."
New York's WARN Act data, which requires companies to disclose AI-related layoffs, found that in a full year, zero companies checked the AI box. Not one. 160+ companies filed notices. Zero blamed AI.
If AI compresses the execute layer, the value shifts even more to the decide and deliver layers. The specification becomes more important, not less. Architecture decision records become more important. Testing and verification become more important. The engineer who can frame a problem, write a clear requirements document, and verify the output against it — that engineer is more valuable than ever.
The engineer who can only type code into a chat window? That engineer is the one who should be worried. But that is not software engineering. That is data entry with extra steps.
Coincidentally — or not coincidentally, because the universe sometimes validates my worldview — Jane Street just announced they are investing heavily in formal methods. They are building a team around OCaml-based formal verification tools. They want to mathematically prove their systems work.
This is the decide and deliver layers taken to their logical conclusion. You decide what the system should do — formally, in a language designed for proof. You verify it does what you said — automatically, exhaustively. No vibe. No "we'll figure it out in the retrospective." Just: is it correct or is it not?
Jane Street is one of the most successful trading firms in the world. They are not doing this because it is trendy. They are doing it because correctness matters more when execution is free.
The article ends with cautious optimism about software engineering demand. I agree. But here is the catch — and Narayanan and Kapoor allude to this in their conclusion:
Individual engineers will have a rough ride even if aggregate demand stays healthy. The bar for being valuable just got higher. If your entire contribution was writing code that someone else specified and someone else verified, AI is coming for your chair. If you can specify, architect, verify, and own the outcome — the AI is just your typist.
"AI agents led to an eight-fold increase in lines of code written, but only 30% more releases. Eight times the output, not even a third more actually shipped product."
I have been telling clients for years: the specification is the software. The code is just a translation. If you cannot describe what you are building, you cannot build it — whether you are typing it by hand or generating it with an agent.
The sandwich model is new terminology for an old truth. I welcome it. Now someone print it on a laminated card and hand it to every CEO who blames AI for their financial mismanagement.
Ribbit.