We Have Always Been Vibe Coding

Cassia Scheffer

Published on May 28, 2025

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 was irked when Andrej Karpathy first posted his now-infamous “vibe coding” Tweet (yes, I still call them Tweets).

It’s not the part about LLMs or the AI that irks me. It’s the proposition that this is new.

I hate to break it to you, but most code is fueled with vibes. How else do you get an idea off the ground?

Before AI, vibe coding was just called being scrappy. Startups can’t burn money debating between the London School of TDD and the Chicago School.

They throw some code out there, copy-paste some Stack Overflow answers, ignore logs, and hope they make enough money to keep going.

It Has Always Been Vibes

Vibe coding isn’t new. The speed is new.

I worked at a startup with six months of runway, and despite our best efforts, the end of that runway came quickly. Racing for a solution before funding ran out meant late nights spent furiously hammering away at problems until they were good enough.

We didn’t have time to find the best-looking code or slick UIs.

We threw Stack Overflow, templating engines, and vibes at our code until it worked. Until it didn’t because there was no money left.

Even at more stable businesses, teams code with vibes. Sure, we had more time to focus on testing, quality, and best practices at those companies, but we didn’t make money off of test coverage. We made money because people liked what we built.

The faster we could build things, the quicker we could get feedback.

Speed Thrives on Vibes

Coding with AI is about speed. I can now rip through a proof of concept in hours, if not minutes. The point of this code isn’t quality. The point is to test a hypothesis.

A few weeks ago, I was talking with a security developer who needed to introspect a GraphQL Schema in production. However, we don’t provide introspection on public APIs.

I had a good idea how to build this using our schema registry, but I hadn’t worked in his codebases in a long time, and it would have taken me a solid day to complete a POC on my own.

I opened Cursor, used superwhisper to describe the desired outcome, and had a good enough POC in under 15 minutes.

The developer took it from there, polished it, and tested it, and it worked!

Was that vibes? Yep. Before AI, I would have pieced together what I knew about this repo to make something. Or I would have drawn some diagrams to explain how things should work. I would have communicated the vibe of the outcome, and the other developer would have to take it from there.

With AI, I had a mostly working POC in a few minutes, and the dev improved on the AI code to make it production-ready.

Both ways of doing this are based on vague direction that becomes more clear as the code takes shape, which, I guess, we’re calling “vibes” now.

With all coding, there will be an inflection point where you have enough information to stop the vibes and start solidifying things. Trusted, money-making code gets tested and refactored to ensure stability.

Vibes fuel new features until they catch on.

This has always been the business of startups, and AI accelerates the feedback cycle so that we can test the vibe of our product before spending too much time on it.