Le Fisherman
Industry news

Vibe Coding and the Return of the Question StyleStats Was Built to Ask

Marcus Hale
Vibe Coding and the Return of the Question StyleStats Was Built to Ask

A year or two ago, "vibe coding" was a half-joking phrase for a new way of building software: you describe what you want in plain language, an AI writes the code, you run it, and if it works you keep going — without necessarily reading, or even understanding, what was produced. You give in to the vibes. What began as a provocation has become, for an enormous number of people, simply how software gets made now. It is fast, it is intoxicating, and it has lowered the barrier to building things to almost nothing. It has also quietly resurrected the exact question this project was created to ask: when no one is watching the complexity, how do you know when it has gotten away from you?

What vibe coding actually is

Strip away the hype and vibe coding is a genuine shift in the relationship between a developer and their code. In the old model, you wrote every line, and your understanding of the system was a byproduct of having built it. In the new one, you operate at the level of intention. You say what you want, the model generates an implementation, and you evaluate it by behaviour — does it do the thing? — rather than by inspection. The code becomes a means to an end you never personally authored.

For prototyping, learning, and small tools, this is transformative in the best way. An idea that would once have died for lack of time or skill can now exist by tonight. People who could never have shipped software are shipping it. A designer can build the interactive thing instead of describing it to an engineer. That is a real democratisation, and it is not going away.

The exhilaration is real — and so is the catch

The trouble is that "it works" and "it is sound" are not the same statement, and vibe coding makes it dangerously easy to confuse them. AI-generated code is fluent. It looks like code a competent person wrote, because it was trained on exactly that. But fluency is not correctness, and a working demo is not a maintainable system. The gap between the two is where the trouble lives, and it is precisely the gap a vibe-coding workflow is designed not to look into.

The failure modes are familiar to anyone who has maintained software, only accelerated. Code you did not write is code you do not understand, and code you do not understand is code you cannot debug when it breaks at the worst possible moment. Security holes slide in invisibly. Dependencies pile up unexamined. The same function gets reimplemented five slightly different ways because the model has no memory of what it generated an hour ago. None of this announces itself. The app keeps working — right up until it doesn't, and now you are debugging a system that is, in a real sense, a stranger's.

Complexity is the thing that compounds

Here is where vibe coding meets the small, stubborn idea behind StyleStats. This tool exists because of a simple observation: complexity in a codebase does not arrive in a dramatic event. It accumulates. One more selector, one more colour, one more !important to make the deadline — each is harmless, and the sum is a stylesheet no one can reason about. The whole purpose of measuring selectors, unique colours, font sizes, and specificity wars was to make that invisible accumulation visible, to act as an early warning system before the mess became unmanageable.

Vibe coding pours fuel on exactly this fire. When a human writes CSS, the friction of writing it is itself a brake on bloat — you feel the cost of every redundant rule. When an AI generates it, that friction vanishes. It will happily produce three hundred lines where thirty would do, invent a dozen near-duplicate colours, and reach for !important because it is statistically common rather than because it is correct. The output works in the preview. It is also, very often, a complexity disaster waiting to surface. The cost was not removed; it was deferred and hidden.

The metric matters more, not less

The instinctive conclusion — that AI makes tools like this obsolete because the machine handles the details — is exactly backwards. When you stop reading the code, you lose the intuition you used to get for free, the felt sense of "this is getting out of hand." Measurement has to replace that intuition, because it is the only thing left that can. The numbers become the early warning system precisely because the human eye is no longer on the line-by-line reality.

This is the quiet argument for keeping objective metrics in a vibe-coding world. If you are going to accept generated stylesheets without reading them, then something has to be counting the selectors, watching the unique colours multiply, flagging the specificity creep and the !important sprawl. The discipline that once lived in the developer's habits now has to live in the tooling, because the developer has, by design, stopped looking. A simple report that tells you your AI-assisted stylesheet just tripled its selector count and sprouted forty new colours is no longer a nicety. It is the railing on a staircase you can no longer see.

Use the vibes, keep the instruments

None of this is an argument against vibe coding, which is too useful and too inevitable to refuse, and which is genuinely wonderful for the right tasks. It is an argument for pairing it with the thing that makes any fast, low-friction process survivable: measurement. Build at the speed of intention, generate freely, prototype with abandon — and then run the numbers, because the numbers are now the only honest account of what you actually shipped.

The deepest irony is that the AI era has made an old, unglamorous idea newly essential. For years, metrics-based tooling was a discipline for the conscientious minority who read their own output. Now that a generation is shipping code it does not read, that discipline is not optional bookkeeping but the difference between a system you control and one that controls you. The vibes will write the code. Something still has to tell you when the complexity is getting away from you — and that question, it turns out, never went away. It just got more important.