We Replaced the Build Layer, Not the Runtime — Ibrahim Cesar<br>Skip to main content
Guillermo Rauch wrote that everyone is now a programmer, because the present<br>and future programming language is your natural language: if you can write or<br>speak, you can build. He calls it the most important evolution in our field<br>since its creation, a tsunami that has just started. A claim that sweeping —<br>from someone with that much to gain by making it — deserves some critical<br>thinking, not a reflexive nod. The real part is smaller than the sentence<br>sounds: you can now build software by writing or speaking. What I want to argue<br>with is the slide from you can build to everyone is a programmer — not the<br>same claim, and the gap between them is this whole essay.
The hottest new programming language is English<br>Section titled The hottest new programming language is English
Let’s be honest about where this is coming from. Rauch runs a company whose<br>business is selling shovels for exactly this gold rush, and “everyone is now a<br>programmer” is about the most comfortable sentence a person in that chair can<br>say. So yes — some of this is hype, a marketing weather report from someone with<br>product to move. Andrej Karpathy reached for the same image earlier and more<br>bluntly — “the hottest new programming language is English”1, later naming<br>the practice vibe coding , where you describe what you want, accept what the<br>model produces, and mostly forget the code even exists2 — and he has his own<br>share of boosterism to answer for too. Discount the whole chorus for the sales<br>pitch. Skepticism is the right posture to open with.
And then, having discounted it all the way down, notice that something real is<br>still sitting at the bottom of the claim.
It works. I’ve watched people who have never opened a terminal produce<br>something that runs — a landing page, a script that renames a thousand files, a<br>small tool that solves a real problem in their day. That is not nothing. It is,<br>genuinely, one of the largest expansions of who gets to make software in the<br>history of the field. The barrier that kept most of humanity out of building was<br>never a lack of ideas. It was syntax, tooling, the thousand small hostilities of<br>the environment. Natural language dissolves a lot of that.
So yes: anyone can now build. That much I’ll grant without a fight — it’s<br>true, it’s new, and it’s one of the best things to happen to the field in my<br>lifetime.
What I won’t grant is the word Rauch reaches for to describe it. Build and<br>programmer are not synonyms, and the distance between them is the rest of this<br>essay.
Building is not programming<br>Section titled Building is not programming
Everyone can now ask for a program that runs. Not everyone can tell you why<br>it runs — or fix it when it stops. In the thread where I first made this<br>argument, Kelvin Meeks put the dividing line better than I could:
If the person can’t debug the source code, they are just a dabbler — not a<br>programmer.
That sounds gatekeep-y until you’ve been the one paged at 3am. “It runs” is a<br>statement about a single execution, on one machine, with one input, at one<br>moment. Programming is everything that statement leaves out: why it runs, what<br>it assumes, when it will stop running, and what you do at that moment. A model<br>can hand you the first. The rest is still, stubbornly, understanding — and<br>understanding does not come bundled in the output.
Here’s the objection that deserves an answer, because it’s the strongest one<br>against everything I’m about to say: the same model that writes the code will<br>also explain it. Paste the stack trace and get a root-cause hypothesis; ask why<br>the query is slow and get a paragraph about indexes. If generation got cheap,<br>didn’t comprehension get cheap right along with it?
Partly. And that part is real — I use it every day. But a machine can hand you a<br>theory; it cannot make you hold one. The explanation arrives as fluent,<br>confident prose, and fluent-and-confident is exactly the trap: you cannot tell a<br>correct explanation from a plausible wrong one unless you already understand the<br>thing being explained. Comprehension you didn’t earn doesn’t transfer, doesn’t<br>compound, and isn’t there in the one moment you actually need it — the novel<br>failure the model has never seen, where its explanation is as wrong as its code<br>and just as self-assured. So the honest version of the asymmetry is this:<br>generation fell to almost nothing, and real understanding got cheaper too, but<br>far more slowly — and it stops being free precisely when the stakes go up. When<br>those two curves diverge, you get an enormous amount of software that works and<br>that no one — the person who prompted it, or the model that wrote it — can<br>actually account for.
The abstraction moved up. The foundation didn’t.<br>Section titled The abstraction moved up. The foundation didn’t.
Here’s the framing I keep coming back to, and it’s the whole point of this post.
We did not replace the runtime. We replaced the layer where programs...