Vibe Coding

Are you ready to become the metaphorical horse?

Describe what you want and AI generates the entire codebase. That’s vibe coding.

Imagine you have an LLM that can build a car for you. All you have to say is “Build a car for me, here are the specs.” And it gets started right away. Before you know it, a two ton machine drops in front of you and bounces as the suspension recoils. You open the door, press on the ignition button and nothing happens. Unless you understand how cars work internally, which you don't, your option will be limited to “Rebuild the car, but with a working power button”.

The car is lifted into the air, crushed and discarded. A brand new one drops in front of you. This one turns on when you press the ignition. You accidentally trigger the windshield wipers, and it immediately shatters the glass. The windshields looked perfectly fine from the outside, but it turns out they were too thin. You asked the LLM to fix the windshields, but it keeps slapping it on the hood where it falls and shatters. So, your best option is to start over, but this time highlight the thickness of the glass in the specs.

Great! Now you have a perfectly functional car that powers up and has thick windshields. But they only cover the passenger side…

The part that’s really impressive in this thought experiment is that the AI can build a decent looking car. The part that’s not so great is that you have no idea how the AI builds it. You can’t easily confirm that all the parts are working as expected. Whenever I use Co-pilot or Cursor to generate a large section of the code, it becomes an exercise of figuring out what the code actually does. As a programmer, I can rely on a library where I don’t understand the implementation. That's because I can trust that the developers have done their due diligence. And if they don't, I can debug it. But when those APIs are written by a hallucinating tool, I have no way of relying on that trust. Especially when my experience shows me that they fail often.

Vibe coding promises to do to programmers what the automobile did to horses. The horse, once essential for transportation, warfare, agriculture, and status, became decorative. A nostalgic symbol of a bygone era. Similarly, programmers may shift from being essential to development to becoming mere prompt engineers or, eventually, curious hobbyists.

But unlike horses, programmers face an awkward transition. Horses never had to maintain the cars that replaced them. They never had to take responsibility when those cars failed. Programmers, however, will likely become responsible for systems they no longer fully understand. Debugging black boxes created from vague requirements, held accountable for outcomes while having a diminishing role during implementation. We won't just be horses; we'll be horses expected to fix cars when they break down.

Vibe coding, in its new definition, even escaped Andrej Karpathy, the man who coined it. It's not that it aims to make programmers obsolete, it wants to make code itself meaningless in the eyes of humans. Why code when you can just ask the computer to do what you want and get the results. The coding part is abstracted deep in the background where no human needs venture.

When vibe coding dominates, It's not that people won’t know how to code anymore, it's that coding becomes irrelevant. The same way that there are people who still know how to ride horses, but it's irrelevant to transportation. When vibe coding reaches its peak, programming languages will evolve into something unrecognizable. Why do we need a human readable programming language when no human needs to read it? I picture a protocol agreed upon by two computers, never released to us humans.

We are not there yet. And we are probably not going to be there soon. It’s not necessarily a performance issue. It leans more towards a trust issue. Would you be comfortable delivering code that you haven’t fully vetted to a client? Would you trust the next feature release on your main application to be fully AI generated? It probably can do it. But would you trust it?

I can envision a startup taking this road to building their service. But I still have a hard time picturing a product manager properly writing the requirements of an application to the point that a specialized LLM can build it to specs. And what would debugging look like when there are errors and no humans were involved in the making?

But then again, in the world of computing, everything is always 5 years away to blow my mind. I’ll happily wait, then shop for an organic hat that won’t upset my stomach too much when I eat it.


Comments

There are no comments added yet.

Let's hear your thoughts

For my eyes only