{"slug": "the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model", "title": "The vibe-coding trap has a name, and the name is not \"the model\"", "summary": "A developer's analysis of two viral Hacker News posts argues that AI coding tools have removed the historical cost of building software, which previously forced engineers to discover prior art. The piece cites Bend 2, a new language whose compiler is 99 percent AI-written and whose formal-verification demo took 442 lines of AI-generated proof versus a fraction of that in SPARK, and Liam Powell's observation that vibe coding lets developers build substantial solutions before learning a better one exists.", "body_md": "*A programming language shipped this week with a 99 percent AI-written compiler and no mention of the forty-year-old field it reinvents. The failure was not generation quality. It was that building got cheaper than reading, and nobody put a gate between them.*\n\nTwo stories ran side by side on Hacker News this week and they are the same story.\n\nThe first is Bend 2, a language pitched for the AI coding era: humans write \"laws\", the AI writes\n\nimplementations and proofs, and the compiler checks the proofs. It got six hundred points and a lot\n\nof admiration. Then Liam Powell wrote a response that got three hundred more, and his point was not\n\nthat the language is bad. His point was that the demo on the home page takes 58 lines to state that\n\na player can never touch the flag, 442 lines of AI-written proof to establish it, and that the\n\nphrase \"formal verification\" appears nowhere on the website or in the codebase. He then asked a\n\nmodel to redo the demo in SPARK, a language built for exactly this, with no further guidance, and\n\nit came back a fraction of the size. The README, a commenter noted, says the compiler is 99 percent\n\nAI-written and has not been fully audited.\n\nThe second story is Dan Abramov's account of vibing a proof of a conjecture of Conway's with a\n\nmodel, over days, in a long transcript he published in full. It is a good post and an honest one.\n\nThe most upvoted objection under it was a mathematician pointing to Gowers's essay from the same\n\nweek on why he did not sign the Fields medallists' letter, and the older point Gowers has been\n\nmaking for twenty-five years: there is a difference between solving a problem and understanding a\n\nfield, and the second is what makes the first mean anything.\n\nPowell names the mechanism precisely and we are going to steal his sentence: vibe coding makes it\n\npossible to build a substantial solution before learning enough about the problem to recognise that\n\na much better solution exists.\n\nIt has always been possible to reinvent a field badly. Every senior engineer has watched a junior\n\nbuild a job queue in a spreadsheet. What is new is the ratio.\n\nFor all of software's history, building was expensive relative to reading. Before you could produce\n\n442 lines of anything, you had spent enough hours inside the problem that you had, almost by\n\naccident, tripped over the prior art. You searched for the error message. You read the paper the\n\nlibrary cited. You asked the person at the next desk, who said \"oh, that's just a Bloom filter\".\n\nThe cost of building was a tax that paid for an education.\n\nThat tax is gone. A model will produce the 442 lines in the time it takes to make coffee, and it\n\nwill produce them competently enough that they work, and working code is the most persuasive\n\nargument in the world against going back to read. Nothing in the loop ever forces you to discover\n\nthat the field exists. The model will not volunteer it unless you ask, and you do not know to ask,\n\nbecause the whole point is that you do not know the field exists.\n\n*The old cost of building bought an education for free. The new cost does not. Time axis illustrative; the shape is the point.*\n\nThe Bend story is the pure case because a language is the most expensive thing you can build and\n\nformal verification is one of the best-documented fields in computer science. If it can happen\n\nthere, at that scale, with that much talent, it is happening in your codebase this week at a\n\nsmaller scale where nobody will write a blog post about it. The agent that built your rate limiter\n\nfrom scratch instead of reading the one in your framework. The retry logic that reinvented\n\nexponential backoff without the jitter. The custom auth layer.\n\nThe instinct is to fix this with review, and review does catch some of it. But review happens after\n\nthe 442 lines exist, when the sunk cost is already arguing for them, and the reviewer usually\n\nshares the author's blind spot. The place to put the gate is the fifteen minutes before anything\n\nis built.\n\nWe run something we call the prior-art pass, and it is embarrassingly simple. Before an agent is\n\nallowed to build anything with a name, it has to answer four questions in writing and a person has\n\nto read the answers. What is this problem called by people who study it? What do they already use?\n\nWhy does the existing thing not work here? What is the smallest version of this we could build on\n\ntop of the existing thing instead?\n\nThe model is extremely good at answering these questions. It has read the field. It will tell you\n\nabout SPARK and Dafny and Lean and TLA+ in one paragraph if you ask it to, and it will tell you what\n\neach is for. The trick is that somebody has to ask before the build starts, and that somebody has to\n\nbe willing to hear \"this already exists\" as good news rather than as an obstacle to the thing they\n\nwere excited to make.\n\n*The prior-art pass: four written answers, one human read, before an agent may build anything with a name.*\n\nLiam Nugent's piece from the same week, on why the most important product decision is what you do\n\nnot build, makes the organisational version of the same point. Nobody gets promoted for deleting\n\nthings. Those who create and launch are the ones rewarded. The models have made creating and\n\nlaunching nearly free, which means the incentive that was already skewed towards building is now\n\nskewed by another order of magnitude, and the only counterweight is a deliberate, slightly\n\nunpopular gate that asks \"does this need to exist\" before the exciting part starts.\n\nA composite from our own work, because the pass sounds like a platitude until you watch it fire.\n\nA team wanted a service that deduplicated inbound customer records, which arrive from four systems\n\nwith inconsistent formatting, so that the same person is not created four times. An agent, asked\n\ndirectly, would have built it in an afternoon: normalise the fields, hash them, compare. The\n\nprior-art pass asked the four questions first, and the agent's written answers were, in order: this\n\nis called entity resolution or record linkage; the standard approaches are probabilistic matching\n\nin the Fellegi-Sunter family and there are mature libraries in every major language; the naive\n\nhash-and-compare approach fails on exactly the inconsistent formatting the team has, because it\n\ntreats a transposed digit as a different person; the smallest version is to run an existing\n\nlibrary with blocking on postcode and hand the ambiguous pairs to a human.\n\nFifteen minutes. The person reading the answers had never heard the phrase \"record linkage\". The\n\nteam built the small version on top of the library, spent the afternoon they saved on the human\n\nreview queue for ambiguous pairs, and did not spend the following quarter discovering, one support\n\nticket at a time, every way in which the hash approach silently merges or splits real people.\n\nThe point is not that the agent knew about record linkage; of course it did. The point is that\n\nnobody would have asked, because the task looked simple and the build was cheap, and the cost of\n\nthe field not being known would have been paid by customers over months rather than by the team in\n\none visible failure. That is the shape of the trap every time. The wrong build does not fail. It\n\nworks, slightly worse than the right build, forever.\n\nThe honest caveat is that the prior-art pass has a failure mode of its own: it can become an excuse\n\nnever to build anything new, and some things genuinely are new. Bend's author may well have\n\nconsidered SPARK and rejected it for reasons that are not on the website. Abramov's proof may be\n\na real contribution even if he cannot yet situate it in the field. The gate is not \"never build\".\n\nThe gate is \"never build without having looked\", and the output of looking is sometimes \"nothing\n\nhere fits, build it, and say in the README what you looked at and why it did not fit\". That\n\nsentence in a README is worth more than the 442 lines under it, because it tells the next reader\n\nthat the author knew where they were standing.\n\nFind the three most recent things your team or your agents built that have a name. A service, a\n\nlibrary, an internal tool, a pattern with a wiki page. For each one, ask the four questions now,\n\nafter the fact. Do it with a model; it will take ten minutes each. You will find that at least one of\n\nthe three is a smaller, worse version of something that already existed, and you will feel the\n\nthing Powell's post is about, which is not embarrassment exactly. It is the realisation that the\n\ncost of not knowing has gone up precisely because the cost of building has gone down.\n\nThen put the pass in front of the next build. Fifteen minutes, four questions, one reader. The\n\nmodel will do most of the work. The only thing it cannot do is want to know.\n\n*Originally published on the [Levelbrook playbook](https://ai.levelbrook.com/playbook/the-vibe-coding-trap-is-not-the-model/). Levelbrook is a principal-led Rails and AI-systems consultancy; the playbook is where we write down what we see.*", "url": "https://wpnews.pro/news/the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model", "canonical_source": "https://dev.to/levelbrook/the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model-3fbm", "published_at": "2026-09-21 14:16:36+00:00", "updated_at": "2026-09-21 14:32:35.520061+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents", "generative-ai"], "entities": ["Bend 2", "Liam Powell", "Dan Abramov", "Conway", "Gowers", "SPARK", "Hacker News"], "alternates": {"html": "https://wpnews.pro/news/the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model", "markdown": "https://wpnews.pro/news/the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model.md", "text": "https://wpnews.pro/news/the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model.txt", "jsonld": "https://wpnews.pro/news/the-vibe-coding-trap-has-a-name-and-the-name-is-not-the-model.jsonld"}}