Mastodon Icon RSS Icon GitHub Icon LinkedIn Icon RSS Icon

It Is Okay to “Vibecode”

Sure. It is not the best. But, if it works for you, who cares?

One of the more common mistake we can do when evaluating the utility of something new—a new product, a new technique, a new discovery—is to compare the right tail of the distribution. This is way more common when we are the ones in that tail.

Let’s clarify with an example. Like many things in life, cooking skills comes with a certain normal distribution: there are a few great chefs, there are some few people that are so incompetent that should be banned from going near a stove, and then a lot of average cooks in the middle.

Now, let’s assume that a new technology arrives (e.g., a machine that creates great pizza dough). If we are brilliant chefs (we are in the right tail of the Gaussian) we may be tempted to evaluate new technology by comparing with data close to our skill level. And, in doing, so we may not see a lot of advantages in it: yes, it is a good dough, but it is not hard to make Pizza dough and with some practice you can do a pizza dough from scratch that will blow the machine-made pizza out of the water. The machine adds nothing to your work.

The problem is that you are not looking at the effect of the new technology on the entire distribution. Yes, it offers little improvement (if any) with respect to chef-made pizza, but now, not only we have improved a bit the average quality of pizza for the average cook (and there are a lot of average cooks), but we also pushed people from the left tail (the incompetent ones) over the threshold of “they can do something.” People that never thought about making their own pizza before this day, now saw the machine and thought: why not?

Vibecoding and the Developer’s Reaction

What’s the point of this elaborate pizza metaphor? That I am hungry, and I should not write at lunch time. But, more importantly, that I see the same bias when we developers talk about “coding with LLMs” and vibecoding (that is, making application and script by throwing prompts to specialized LLMs such as Copilot and Cursor).

Many developers are horrified. Many others are confident that this is totally useless and people should learn to code in the proper way. On an instinctive level, I agree. But this is an example of right-Gaussian thinking. And, in fact, I have direct experience of people from other place of the skill distribution:

  1. There are many people that are not good developer. They do not do that for a living. LLMs and prompt-coding helped them to go past the point of being able to publish an app. They are not unwary. They know that they have to debug everything the machine writes and they understand what the output is. But the tool helps them like a good IDE helps beginners while I can happily go on with just Neovim.1
  2. The second, and for me more important, is the left-Gaussian group. All the people that barely know what a script is and that have, for the first time, tasted the satisfaction of having a custom “software” to automate a specific work or solve a problem that only they have.

Talking to the “Left Tail”

I will focus on this second group because, I think, it is the most interesting one. And it is composed of people that do not talk about software; they do not take part in software developers’ forums; they do not know what an Hacker News is. And, yet, they pop up all the time. I have friends that, out of the blue, started talking to me about Python and I was so shocked that I thought they were talking about the snake. My lawyer friend is now happily using a Python script to organize their case files according to their specific preference. Other discovered they could “make a program to convert complex sequences of characters in a book.” Yes, I saw the program, is just a simple regex: but good luck explaining regex to non programmers (and, honestly, even explaining it to programmers is quite the challenge sometimes).

All those people are automating away genuine problems of them and vibecoding lowered the threshold to the point that they can do something about it. Things that they didn’t dream about doing before. I know this seems stupid. To us developers, it is like going back in time to watch humanity discover the wheel for the first time. But for them, the feeling of amazement and empowerment is real.

Risks and Limitations

Now, let’s be clear. This doesn’t invalidate all the problems produced by vibecoding and excessive reliance on LLMs. For once, sometimes LLMs produce clearly broken software that may end up doing damage.2 This is increasingly important if you want to generate scripts that manipulate financial data, computer files or automate critical tasks. In that case, the chance of errors (quite common in unsupervised LLMs generated code) may offer an unacceptable level of risk.

Second, reliance on LLMs for coding doesn’t train the most important skill of a developer: problem-solving and algorithmic thinking. You may not care about that if you just to want to complete a task, but if you plan to be a developer, it is something you need to weigh carefully.

Moreover, vibecoding easily slips into overconfidence. One thing is to make a little script for my needs; another is if I think I can now do anything and use it to do actual public services. Unfortunately, I watched a lot of overconfident people thinking they can provide actual application using only LLMs. If you used to build public services by relying on these tools, you will quickly smash your face in the problem of cybersecurity. If you don’t know what you are doing at all, well… good luck. And don’t let me start on technical debt.

A message to the vibecoder

But I don’t want to focus on the problems. There are a lot of articles discussing the problems of LLMs usage in coding. I agree with most of them (as long as don’t become a “the end is near” kind of things).

What I want to say is that if you are someone that has zero developer experience and you want to do something with these new fancy tools, then it is okay to vibecode. It is not a mortal sin. Do not feel yourself gatekeeped by the Real Developers™. Know your limits, sure, but do it. Try it. Then use that magical feeling of “wow, coding solved a real problem of mine!” to push yourself to learn more about actual coding. If you wish. We are here to help you. And who knows? Maybe you will like that feeling and this will be the first step toward learning to code the proper way.


  1. Neovim is great, btw. I am really underselling it by saying “just.” ↩︎

  2. To be perfectly honest, though, you should ask my father how many times I nuked our home PC as a kid while I was learning to code the proper way. :D ↩︎