Skip to content
    Back to writing
    May 27, 2026 · updated May 27, 2026 · 7 min read

    Karpathy walked back vibe coding. Aesthetics, judgment, and taste were always the load-bearing part.

    TL;DR [show]

    At the Sequoia Ascent 2026 fireside, Andrej Karpathy described AI-written code as bloaty, brittle, gross, and full of awkward abstractions, then reframed the work around aesthetics, judgment, and taste. The trade press read it as regret. The load-bearing read is the practitioner-class register catching up to the operator-class register a few cohorts have been operating from already. Vibe coding was the hype-tier label that papered over an operator-tier discipline gap. The gap got named. The walkback is the discipline arriving in the language the field uses on itself.

    Karpathy walked back vibe coding. Aesthetics, judgment, and taste were always the load-bearing part — by Thomas Jankowski, aided by AI
    The walkback was the discipline arriving— TJ x AI

    Andrej Karpathy coined "vibe coding" in February 2025 as the convenient handle for what AI-assisted development was starting to look like. By November 2025 the Collins dictionary picked it as Word of the Year. By April 2026 the same Karpathy was sitting at the Sequoia Ascent fireside walking it back. The trade-press read out of that conversation was that Karpathy regrets the term. That is the wrong read. He did not regret it. He named what it had been hiding.

    The specifics are worth quoting because the trade-press summary blurs them. Karpathy described the code AI tools produce as "bloaty," "brittle," full of "awkward abstractions," code that "works but is just really gross." He then reframed where the human work lives: developers "in charge of the aesthetics, the judgment, the taste." Three words, deliberately picked, that the discourse around "vibe coding" had spent the prior fourteen months not naming.

    I have been operating from a register that treats aesthetics, judgment, and taste as the load-bearing part of any shipped system for longer than the language around AI tooling has been willing to. That is not a brag. It is the standing posture of anyone who has spent enough time inside a codebase to know which decisions compound and which evaporate. The interesting move at Sequoia Ascent is not Karpathy noticing this. It is the field's most quoted AI voice saying it in language the field will now use on itself.

    The label was always doing concealment work. "Vibe coding" reads as a posture, a half-joke, an aesthetic. It is not, structurally, an aesthetic. It is a workflow with specific properties: the human supplies intent at the level of prose, the model supplies code that approximates that intent, the human ships or revises. The label collapsed the second step (the model's output) and the third step (the human's revision-or-acceptance) into a single mood, and the mood-framing made the revision-or-acceptance look like taste, which made it look optional, which made it look like the kind of thing a serious practitioner could either do or skip depending on personality. The mood-framing erased the discipline gap by turning the discipline into a personality variable.

    That worked for fourteen months because the failure mode was distributed. Each person shipped a small amount of "gross" code. The compounding cost showed up at the codebase level, not at the individual-commit level. When the compounding cost is invisible at the unit you are looking at, the optional-discipline framing holds. It held until the cohort of people who actually opened up two-quarters-old vibe-coded codebases started talking about what they found there. Karpathy's "bloaty, brittle, awkward abstractions, works but is just really gross" is the field-level read on the cohort-scale data: enough of these codebases now exist that the modal one is recognizable.

    Once that is named, the reframe lands naturally. "In charge of the aesthetics, the judgment, the taste" is not soft language. It is the specific list of things AI tools do not do, which is the same list any operating discipline has always cared about. Aesthetics is the shape of the system as it reads, which determines what the next person can change without breaking it. Judgment is which decisions get made now versus deferred versus refused. Taste is the cumulative pattern of those judgments expressed as a coherent voice in the codebase. These are not preferences. They are the load-bearing properties that determine whether the system survives its second year.

    The "Karpathy regrets" framing matters because it pushes the walkback into a wrong genre. Regret implies the original move was a mistake. Coining "vibe coding" was not a mistake. It was the field naming a real new thing at the speed the field could absorb it. What changes at Sequoia Ascent is that the namingmatured: the discipline the original label hid is now also legible. Both labels stand. "Vibe coding" still describes the workflow shape. "Aesthetics, judgment, taste" now describes the load-bearing layer the workflow does not absorb on its own. Pretending one of these supersedes the other is the pundit-tier move; carrying both is the operator-tier move.

    This is also why the autoresearch-loop story Karpathy spun up in March 2026 reads as the same direction from the practitioner-deployment angle. Shopify CEO Tobi Lütke applied the loop to Shopify's Liquid template engine, ran it, and reported a 53% speedup. Then Lütke himself caveated the number as "probably somewhat overfit"; Glenn Moody, the original Liquid maintainer, flagged the resulting code as "just bad"; the PR sits unmerged. The 53% is the pundit-tier framing. The caveat-shipping-alongside-the-result is the operator-tier register. Lütke's instinct to ship the caveat without being asked is the same instinct Karpathy is now reaching for at the language layer: practitioner-class taste-and-judgment surfacing as the part the AI assistance does not absorb.

    What this looks like over the next eighteen months is the part worth getting right. The cohort of people who absorb "aesthetics, judgment, taste" as the load-bearing axis will accumulate codebases that survive their second year. The cohort that hears Karpathy's walkback as "AI tools aren't ready" and waits will accumulate codebases their successors throw out. Neither cohort will see itself sorting; the sorting will be visible only in retrospect, the way every sorting under a new tool eventually is. The "build alongside the model with explicit judgment" mode is going to look obvious by 2027. The "either AI tools work or they don't" mode is going to look like missing the point.

    There is a structural read on what is happening at the field level that I want to name because it has been load-bearing in this work for a while. The practitioner-class register tends to lag the operator-class register by two to three years in any new technology cycle. The operator-class register holds the discipline-naming language early because operators ship and operators absorb the second-year cost of skipped discipline. The practitioner-class register catches up when enough of the practitioners have seen the second-year cost on their own work. Karpathy at Sequoia Ascent is the most-quoted practitioner moment of that catching-up so far. It will not be the last. The walkback is the discipline arriving in the language the field uses on itself, on schedule, exactly when the cohort-scale data made the operator-tier framing impossible to delay any further.

    There is also a subtler move worth flagging. "Vibe coding" the label was popular because it gave the discourse a way to talk about AI-assisted development without committing to a stance on whether the resulting code was good. The label was non-falsifiable in a way the practice was not. By replacing the label with three concrete properties (aesthetics, judgment, taste), Karpathy made the practice falsifiable: a codebase either has those properties in its load-bearing layer or it does not. That is the genuinely sharp move. It costs the field its non-falsifiable cover. It also gives the field a checkable spec for the work it is now obviously doing.

    The cohort that has been writing about [agent-runtime as the new operating system](/writing/agent-runtime-will-be-the-operating-system-not-the-model/#agent-runtime-stack-decoupled-from-model-layer) has been operating from a version of this reframe for at least eighteen months. The runtime sits one layer up from the model; the operator sits one layer up from the runtime. At every layer, the question is the same: which decisions compound and which evaporate. The discipline-naming language that lets you ask that question at the code-shape level is what Karpathy supplied at Sequoia Ascent. The cohort that absorbs it inevitably ships the systems the next decade will be looking back at as the ones that survived. The cohort that doesn't will be writing the post-mortems.

    —TJ

    —TJ