https://svenning.io

January 2026

A New Year, A New Vibe

What developers should and shouldn’t learn from vibe coding

5 min read

A kid holding up an etch-a-sketch with some UI drawn on it

A new year and a new vibe is upon us, and with it, a necessary ending. I’m calling it now: vibe coding is dead. Prompt-and-pray has played its part. It was fun while it lasted.

Vibe coding is dead

While some might mourn its passing, I think it’s a good thing. Its demise clears the stage for what’s next, but we shouldn't walk away empty-handed. From the ashes of the vibe era, I’ve pulled three invaluable lessons every developer should embrace — and three dangerous pitfalls we must never fall into again.

Lesson 1: Something beats perfect

One of the great things about vibe coding is the speed at which you can ship. Vibe coding tools often provide the average user with a head start in terms of a backend and hosting setup. You are shipping from the get-go and can easily push multiple updates out. It might not be the best design or the cleanest code, but you get to ship fast, and that’s fantastic.

Listening closely, I now hear the roars of a million accessibility and performance evangelists echoing in the distance. “Everything needs to be accessible before any human lays eyes upon it!” growled one particularly annoyed blue-haired woman. “A performance score below 100 is not acceptable!” barked a guy in a penguin t-shirt with both nostrils flaring. Yes, accessibility and performance are important. But guys, relax — we’ll get to that bit when time allows it or users demand it. When you have four users (three of which are bots), no one cares.

Vibe coding a to-do list in two hours does no harm to anybody. It doesn’t exist. It’s a Fata Morgana and should be treated as such. Promoting that thing as a product for other people to use is obviously a violation of everything good in this world — don’t do that. But building something, being proud of it, and sharing it online is perfectly fine. Being able to do that fast for anybody, regardless of skill level, is fantastic.

Lesson 2: A blank canvas kills your vibe

You can’t ship what you haven’t started, but for many, the starting line is the hardest part to find. Closely connected to the importance of shipping fast is the ability to quickly get pixels on the canvas in the first place. If you obsess over the "right" design system or the "perfect" directory structure before implementing a single line of logic, you’ve already lost. It kills your vibe. Focusing on how pretty, neat, or clever your code is set up before the app even works is a recipe for stagnation. And no one besides you cares.

The blank canvas is a psychological barrier that often goads you into over-engineering the foundation just to avoid the fear of starting the actual work. Vibe coding bypasses this paralysis by handing you a "good enough" starting point. At this stage, you aren't doing this for an audience; you’re doing it for yourself to see if the idea has legs. Vibe coding reminds us that the fastest way to learn is to have something on the screen to react to, rather than staring at a blinking cursor in an empty main.js file for forty minutes.

Lesson 3: Web development is supposed to be fun

Once you stop staring at that blinking cursor and actually start seeing results, you remember the most important lesson of all: creation is one of the few things that separates us from the rest of the animal kingdom. It’s what makes us human. Putting an idea into the world is one of the most satisfying experiences there is, and it's a feeling that as many people as possible should be able to enjoy.

If you spend your entire day fighting with Webpack configurations or debating the merits of different state management libraries, you lose the "spark." This might be the “vibe” part of vibe coding, I don’t know, but creating something without having to worry about its correctness is a joy. As a kid you did not spend any time worrying about whether your drawings of vampire dinosaurs with bazookas had the right contrast-ratio or aria-label. You focused on the joy of creation.

Okay, those were the lessons. Not so bad, right? But now for your reward! This is the part where you get to nod your head, squint your eyes like a supervillain, and go: “Ha ha ha! You’re right, Kasper, we developers still know best! Muahaha!” Ok, sure. Let’s have a look.

Pitfall 1: Growth needs a platform that scales

As joyful as it is to skip the blank canvas and ship fast, the idea that vibe coding is a great entry point into web development is a myth. If you aren't learning how to build a solution; you’re just learning how to describe a result. You are becoming an expert at requesting the "what," but you remain completely blind to the "how." You are effectively skipping over the difficult, foundational parts of the craft, leaving the actual logic untouched.

Sure, most of these tools technically let you look at the source code, but the workflow doesn't encourage it. Digging into the files is rarely a blocker and almost never feels "needed" — until suddenly, something breaks. Because you’ve spent your time describing outcomes rather than understanding the underlying structure, you’re left stranded with a black box you don't know how to fix. You haven't been building a skill set; you've just been a passenger who forgot that someone eventually has to know how the system actually works.

A true entry point into development should be a ramp that invites you to take over the controls as you get smarter. Vibe coding, by contrast, treats the difficult parts like someone else's problem. It keeps you on the surface, and while the progress feels great, you aren't actually learning how to navigate the complexities of code. You’re just renting a result, and as soon as you need to customize a fixed backend or debug a silent logic error, you’ll realize you have no intuition for the world beneath the surface.

Pitfall 2: Your expression must be your own

Vibe coding relies on the "average" of the internet's training data. It’s the ultimate expression of "mid." When you ask an LLM to build a UI, it gives you the most probable version of that UI based on a billion mediocre examples. It’s like trying to paint a masterpiece by shouting instructions at an average artist holding the brush from across the street.

You lose the nuance, the "pixels-between-the-pixels," and the intentionality that makes software actually feel good. True craftsmanship comes from the friction between your intent and the medium. If you let the "vibe" dictate your output, your app will look and feel like every other AI-generated project: soulless, generic, and stuck in that digital "uncanny valley" where everything is technically correct but emotionally empty.

The world doesn't need more "average" software; it needs to see and feel you. Your quirks, your specific taste, and even your "wrong" design choices are exactly what make a product human. When you hide behind a prompt, you’re depriving us of your unique perspective. We want to get to know the creator through their work, but that connection is impossible when the creator is just a middleman for a statistical model. Don't let the convenience of a prompt erase the very thing that makes your work worth looking at: your own presence.

Pitfall 3: Create better, not just more software

Looping back to “Lesson 1: Shipping something is better than waiting for perfection,” there is a dangerous flip side. The "vibe" culture encourages us to litter the web with half-baked, unoptimized, and insecure trash. Just because you can generate a CRUD app in 30 seconds doesn't mean you should deploy it to production.

Vibe coding is a medium for those who just want an app, not those who want to build an app. You get some of the feelings of accomplishment, but nowhere near the ones you get from learning the web platform from the ground up. And learning is exactly the issue. You are the architect; if you don't understand the foundation because an AI poured the concrete while you weren't looking, the whole thing will eventually collapse on your fifth user.

Ultimately, if you ship an app that lacks your unique intent, you are just adding to the noise in an already crowded ocean. The digital world is increasingly flooded with identical, soulless clones that look and act exactly like yours. Without your specific human touch — your taste, your quirks, and your intentionality — you aren't actually contributing anything new. You’re just cluttering the sea with more generic plastic, making it harder for the things that actually matter to be found. We want to see you in your work, not just another prompt-powered mirage.

Stop feeding the AI centipede

If you follow these three lessons and avoid the three pitfalls, vibe coding won’t have lived in vain. But we have to address the "big picture," and it’s a bit of a horror show.

Lovable, the current poster child for vibe coding, recently secured $330M in Series B funding, led by Google (CapitalG) and backed by NVIDIA and Databricks. They boast about "100,000 projects created every day," a stat any founder would envy. But look closer: who is actually using those projects? They are test projects, demos, and prototypes that rarely amount to more. They are Figma files with a pulse — valuable for a quick sketch, but almost always hitting a wall when it’s time for real-world substance.

This is a self-sustaining cycle of hype: The AI Centipede. Look at the investors. Google, NVIDIA, and Databricks are the very companies that need to prove to their shareholders that there is a bottomless, infinite demand for AI chips and models. It’s a closed loop where the giants fund the startups that use their technology, creating a "demand" that they happen to be the only ones providing the supply for.

Why doesn’t Google just create their own Lovable clone and wipe them from the face of the Earth (they don’t really push Google AI Studio)? Because there’s more business in fueling the hype than in ending it. They’ve already proven they can do it; they just released Antigravity — a full, "agent-first" IDE that is a far greater technical feat than hooking Gemini up to an input field. And Microsoft? They own Visual Studio Code and half of OpenAI, the only two ingredients in Cursor. They could vibe out Cursor tomorrow, but they are content to let the pioneers take the arrows while they sell the fuel and wait to swallow the market.

Don't put all your eggs in one AI basket. If you want to take your product all the way, you cannot be entirely reliant on a single platform designed to keep you as a "passenger." Stop feeding the AI centipede relentlessly. Use AI for what it is, a tool for the grunt work, and then apply yourself.

A new vibe: The Nordcraft GenAI

Episode IV: A new vibe

It’s imminent that something is missing in both the world of vibe coding and traditional software development. Both camps have something going for them, but they are also getting some important bits wrong.

Vibe coding lacks transparency; it’s all black-boxed and hidden behind a privately-owned paywall. When you give in to the "vibe," you sacrifice the ability to apply yourself and understand the web platform as a whole. But traditional development has its own sins: we’ve spent decades pretending that writing complex syntax in a text editor is the only "real" way to create visual experiences. It never made any sense. We need a medium that takes both perspectives into account: one that unblocks the developer from the blank canvas, but also enables them to express themselves and learn the platform as they grow.

Don't worry, because (surprise, surprise) I have just the cure for this mess. I’m the Co-Founder of Nordcraft (everything is a pitch, get over yourself) and we’ve just improved our AI to a level where it truly understands what you are building. Nordcraft is the best of both worlds: you build visually so you’re never paralyzed by syntax, yet our AI never leaves you in the dark. Every AI-generated output can be verified and inspected visually, for both logic and design.

Now, I know what you’re thinking: “Visual development with an AI assistant? But that's just NoCode! We buried that two years ago.”

And I dare you—I double-dare you: say NoCode one more time. NoCode is not defined by the interface; it’s defined by its limitations. It’s a deliberate set of guardrails designed to keep you "satisfied" by keeping you from touching the real gear. In traditional NoCode, you can't tweak every attribute or style. In Nordcraft (nordcraft.com), you can.

This isn't a walled garden; it is the web platform you already know—clean HTML and CSS bundled with a suite of tools for creating amazing web experiences. Add a lightweight framework, hosting, and domain handling, and you have what we call a Web Development Engine.

Vibe coding tools enable you to get somewhere fast, but you might not end up exactly where you intended. That’s fine for a quick prototype or an internal tool. But for the next big thing—the thing that needs your unique human touch to survive the cluttered sea—you need more than just a vibe. You need an engine.

© Copyright Kasper Svenning 2025. All rights reserved.