How to become an elite vibe coder
Published on Mar 15, 2025 in Thoughts on AI
For the past few days, we have seen the vibe coding trend develop. This trend was started by Andrej Karpathy, a former co-founder of OpenAI. If you don’t know what vibe coding is, it’s simply relying entirely on AI to code and debug, without worrying about the code.
On my side, I’m surprised that this trend didn’t develop two years earlier. Maybe the AI tools have improved a bit. But there hasn’t been a big breakthrough in the last two years. And it was already possible to practice vibe coding two years ago.
Vibe coding is something that I have experimented a lot on my personal projects, when AI tools for coding appeared. And my point of view is the same as that of all the coders who are outraged by this practice. Except that I went a little further than their immediate reaction.
To make a small script or a quick and dirty PoC, it’s great. But this technique quickly showed its limits. AI doesn’t know how to organize a project. And it will have a lot of trouble refactoring a project that becomes too big.
By default, AI tends to ignore security and performance issues. It knows how to do it, sometimes, but you have to be very precise in your prompt. Which most people don’t do. We can compare the vibe coding and the no code. Except that no code often shows its limits in terms of performance. Vibe coding adds security issues to the equation.
Sometimes AI generates code that works. Variable names are self-explanatory, except they don’t designate what the variable actually does, making the code unreadable.
But the biggest problem with AI is that on a language/framework for which it doesn’t have enough data, it hallucinates a lot.
For example, with Svelte, a framework that I’m starting to know well, for everything basic, AI can help you. But when you’re faced with typical Svelte problems, such as poor store tracking that causes a component to not update when it should, the AI will lose you in its hallucinations.
If you are not used to looking at the problem and going to the manual, you can waste a lot of time in solutions that will never work.
That said, Karpathy is talking about throwaway weekend projects. But most people got upset without even seeing his message.
Also, it’s possible to go much further and benefit from the full potential of AI on large, more serious projects.
To go beyond vibe coding problems, I would like to introduce Rational Vibe Coding. These two qualifiers may seem opposite to you. And you’re right. But that’s because it’s a two-phase process.
Hemingway is famous for saying: “write drunk, edit sober”, even though this quote is probably apocryphal. Well, that’s what we’re going to do in our use of AI.
The vibe coding part corresponds to the first phase, the one where we write drunk. Well, actually, it’s the AI that’s your drunk partner. Yes, I know, it’s not a lot of fun. But in this story, you are the designated driver. AI can write code very quickly and save you a lot of time. But you have to be very attentive to what it does. It’s the rational part and it’s your responsibility.
This is paradoxical, because as AI speaks our language, we tend to humanize it. But there is nothing human about AI. It’s just data and applied maths. On one hand, it’s a mentor who can teach us an almost infinite number of things. On the other hand, it works worse than an inexperienced coder who must be closely monitored.
By doing a rigorous review of AI-generated code and manual refactoring when necessary, it is possible to write much better code, faster than without AI. AI can do refactoring, but it will often be slower. It’s going to break things that work. You’ll have to fiddle with it for hours.
It’s easy to denigrate AI-generated code. But honestly, the code created in the vast majority of tech companies is crappy. Not necessarily because the code is crappy in itself. But we don’t take the time to do engineering.
We never get out of the MVP mindset. We iterate on a PoC, thinking to save time. We use agile as a stupid dogma. We don’t do any design. We don’t make documentation. We don’t seriously manage technical debt. And any project ends up becoming a big mess, more or less impossible to maintain.
With Rational Vibe Coding, we let the AI do the coding. We really have time to do engineering. And you get a much cleaner result, faster.
However, this is not without its problems.
Unfortunately, to maintain old projects, AI doesn’t help much to be more productive.
There is also the already mentioned problem of new tech. Relying too much on AI delays their adoption.
And finally, there is the problem of junior coders. It’s already hard enough to get your first job in the software world. When organizations will become more mature in their use of AI, they will mostly need people with a tech lead profile, not juniors.
But I think that deep down, the AI is a bit like the aqueducts in the ancient world. In an ancient city without an aqueduct, the main activity was the transport of water. When aqueducts appeared, some thought that it would be the end of civilization. But in the end, it gave us time to create more value than transporting water.