
Vibe coding is not coding
But it doesn’t mean you shouldn’t do it.
What is vibe coding in the first place?
It’s the term coined by Andrej Karpathy in one of his tweets:

Vibe coding changes codebase development into codebase querying, shifting the paradigm from AI-assisted coding to (basically!) human-assisted coding.
In such a setup, individual lines of code are buried deep down in the codebase. Developers don’t even need to be aware of their existence. What’s required is the familiarity of what is roughly there (a conceptual understanding of the system and its content) and the ability to write the queries (prompts for the AI system) that will extract specific information or modify the underlying data (lines of code).
Take my example: as a data engineer, I’m definitely not 100% proficient in all the tables there are in my system (only the ones whose dbt models break :p just kiddin’). And I believe I don’t need to be familiar with all the individual rows these tables contain. What’s important is to know where to search for certain pieces of information. Database table abstraction is tremendously helpful as it abstracts granular, incomprehensible information (rows) into generic columns, arrays, and structures - no need to waste my mental resources on the individual rows anymore.
AI-assistance will be particularly helpful and powerful in large codebases (think 100k+ lines of code). It’s simply impossible for any human being to fully understand that amount of code in detail… Even PROs/craftsmen who enjoy writing the code manually can’t make such claims. Our context windows are simply not large enough.
Humans are good at abstract reasoning, but large-scale, precise calculations are painful and extremely time-consuming for our brains. This is why we created computers - to outsource this mental incapability to them. Same applies to coding, especially in large codebases - we excel at designing and conceptualizing, but at the same are quite inefficient when it comes to adding/changing/optimizing code.
Coding in programming languages wasn’t invented because we enjoyed it - we simply needed it because it was only possible for humans to learn to speak a computer language, not the other way around. LLMs make it possible to directly translate human language into code, making them valuable proxies that can express what we mean in a source code.
Isn’t it beautiful?