Avatar

The Vibe Coding Movement

3 min read
Ever since Andrej Karpathy coined the term "Vibe Coding" in his viral post on X, there's been a lot of hype around the term and rightly so, it's an interesting concept. Around the same time AI coding tools like Lovable, Bolt, Replit and v0 really started to gain popularity. Mirroring the same promises of the no-code tools of old, these platforms really do help none technical people dabble in programming and creating digital products but how far does that really get you?
When Karpathy first coined the term, I was already kind of playing around with Vibe Coding. I built the beta of my fly fishing companion app, Cast Companion, over the span of 2 evenings after work by pretty much writing 0 lines of code and prompting it into existence. I was astonished how you could create a prototype without writing a single line of code, this was Vibe Coding in it's truest sense following Karpathy's definition:
"There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists."
I have a few issues with the current use of the term, everyone is using the term when it applies to any sort of AI assisted programming and it's hard to tell at what point a programmer is driving or whether the AI is driving. The term is so ambiguous that if it's used in a professional setting, I am not sure whether to be concerned that the code produced has even been reviewed or whether it's just been "vibed" into existence. As an industry we should probably be a bit more explicit and deliberate when using these terms, especially in a professional setting.

There's no denying the power of these tools though, for shipping prototypes and proof of concepts there's really no better time. The issue comes when there's software being shipped into the world that's not been built with even just a little bit of knowledge on security. It feels like there is going to be a wave of vulnerabilities and hacks shipped into the world where the product builder will not be sure how to fix them.
What I had noticed when building my products heavily using AI was that while it felt nice to prompt features into existence and they seemed to work, if I had a bug to fix it was a nightmare manually going in and fixing it or refactoring. Often types get duplicated, logic gets duplicated, there's an inline function added to an action when there's the same function declared further up the file. While LLMs and AI tools are getting better, there's no denying the tech debt they create when leaning too far into the vibes can be quite serious. They often give the illusion that you're being fast and productive but more often than not, if you just engaged in a flow state and wrote the code yourself you'd do it faster and with more overall context of what you're building.

This blog seems to be me coming across as hating on AI, this couldn't be further from the truth. I use it daily to help code, brainstorm, look things up and just allow me to do my job and live my life more informed and better but it's good to reflect on the short comings of these tools and where they could head if we just lean into the learned incompetence and vibes.

If you have any thoughts on Vibe Coding, AI assisted development or just AI/software in general I'd be happy to chat, just drop me an email at seb@sebsmith.dev

📧 Stay in the loop

Get notified when I publish new posts. No spam, unsubscribe anytime.