When Vibing Is Not Enough
tl;dr: when complexity comes into play, we're not there yet.
Today, I want to discuss when vibing is not enough. We often see people sharing their vibing on X while coding web apps, gaming, or creating whatever else they enjoy. I believe "vibing " comes from relying heavily on AI to make most decisions or generate all the code. People then continue interacting with, arguing with, or instructing the AI on what to fix or change. But the reality is, that's not always enough.
“Vibe coding” is the concept that even people who don't know how to code can create digital products like apps or websites using AI by merely writing prompts. It became an overnight buzzword in Silicon Valley after being coined by OpenAI co-founder Andrej Karpathy
I've been coding with AI since this new wave of large language models (LLMs) began. While AI can be helpful, it struggles when dealing with complex systems. When systems are complex, it's tough to get good outcomes from AI (yet).
There are two important aspects to what I'm saying here.
First, I'm specifically talking about complex systems. I like a definition from Derek Sivers, who describes "simple" as something without dependencies and "complex" as something with many dependencies. That's the definition I'm using here to discuss complexity.
For instance, imagine you have a system where you must coordinate various business customizable rules, ensure the security measures are applied, and handle different statuses that change based on process complexity over time. On top of that, you have customers interacting with the system and also internal users with different requirements and goals using it as well. Considering all these factors, it becomes challenging to clearly and precisely explain to AI what you need. In many cases, writing the code yourself can be easier and faster rather than trying to articulate all these nuanced rules to an AI.
Right now, that's where we stand with AI because, as humans, we are in a development process where we're still absorbing and internalizing this knowledge during multiple internal calls and discussions with customers. We need to transform this knowledge into code, but it's tough to do all this in a single shot and with a complete explanation to the AI.
Secondly, I said "yet" because right now, maybe the models themselves are ready to accomplish the work needed, but we lack the tools to transfer all the knowledge from our interactions with many people.
In complex systems, we are not working alone. We need a group of people with different skill sets to reach conclusions. This usually involves in-person calls, visiting local operations, and numerous virtual calls. We still lack tools that could bring all this data together into a single place for AI consumption.
The tools, or wrappers, around AI are coming. New tools emerge every day, but we're not there yet.
So, to wrap up, it's excellent to vibe code for small stuff, proofs of concept, or simple systems. At Quave, we do this quite a lot with our clients—even non-developers are achieving a lot with AI. However, when it comes time to implement complex systems and go live, we still require much human time and knowledge to achieve the desired output.
Producing code is not enough; we must produce code that generates the expected result. If you don't pay attention, you can end up with a big pile of code that makes no sense. Then, you need to fix all the nonsense to start moving forward again, ultimately losing time instead of speeding up the process.
All that said, vibe coding allows anyone to code and discover its magic. I'm addicted to coding and would like everyone to enjoy it. Vibe coding is opening doors for many people to code, which is amazing.
Also, some people may never need to create a truly complex system; in this case, Vibing Can Be Enough.
Happy vibing!