DEV Community

Cover image for How I use LLMs: BadVibez Coding
Vincenzo
Vincenzo

Posted on

How I use LLMs: BadVibez Coding

TLDR

LLMs save time and reduce friction, but they do not replace experience. Use them to speed up the parts you already understand, not to blindly build what you cannot explain. Otherwise you might get dumber and lose touch with how things work.

I’ve been coding for about 20 years, professionally since around 2009.

I’ve seen a lot of change in that time. Not as much as someone who lived through the dot-com bubble, but certainly more than people who’ve only ever worked with React.

I also have a Bachelor's Degree in Computer Engineering (Laurea Triennale in Ingegneria Informatica), so I’ve studied serious math and physics. But what has shaped me most is not just education, it’s the projects, the missteps, and the way the industry keeps evolving.

The Last Few Years Feel Different. But Are They?

The past two years, especially the last one, have felt like something big is shifting in our field. But at the same time, I realize this is not entirely new.

When I was 17 or 18, I was making websites on Ubuntu with HTML, CSS, and some jQuery to handle AJAX. I wrote a bit of PHP and used raw MySQL to generate HTML on the server.

At one point, someone asked me to build a YouTube clone. So I did.
Users could upload videos via FTP, log in, manage their content, and play videos using some odd Flash player.

When I delivered it, he told me he would only pay 10 percent of what we agreed on. His reason? He said it was already built, and he could just recreate it in Dreamweaver.

That was the first time I was told I might be replaced by drag-and-drop tools.

A few years later, I was told my custom PHP CMS was useless because Joomla could do everything. Then came WordPress. Then came Wix.

Now we are hearing the same thing again, but this time with AI.

What Hasn’t Changed

The tools change. The trends change. The way we approach problems keeps evolving.

What doesn’t change is this:

A curated, well-maintained codebase is always better than something generated by a machine, even when it’s partially reviewed or tweaked by humans.

No-code and AI can be helpful. Use what gets the job done. But don’t forget that thoughtful engineering still matters. It always has.

Vibecoding

When I first saw the term "vibe coding" a few months ago, I was really curious.

That video blew my mind, not because it introduced a revolutionary technique, but because I recognized the same pattern I had seen many times before.

As the trend grew, I saw more and more people suggest, or at least imply, that a tool could fully replace human thinking. I was not just skeptical, I was also a bit annoyed by the idea.

Later, during a hackathon at work, we were given access to Cursor and told to use it to build some prototypes.

It was great, only it wasn't.

The project was a cloud-based to-do manager that used another AI service to read your task list out loud each day. Some features worked. Others were clearly borrowed from existing tools or APIs and roughly adapted.

I added a simple integration with Todoist to handle create and delete operations. That part was fine, although the implementation was a bit messy.

But as soon as I tried to do something more complex, like keeping track of local updates that were not yet synced to the backend, most of the suggestions I got were hallucinated.

After tweaking and editing the code, I eventually got it to work, but the result was something I would never want to maintain. Especially the second part, where I tried to connect to the paid tier of ElevenLabs for text-to-speech. Even when I pointed Cursor to the official documentation, it still suggested completely made-up APIs.

In the end, prototyping with vibe coding can be useful. It can help you prove that an idea might work. But you are the one left cleaning up the mess.

You get to an MVP quickly, but the cleanup is much harder. When you finally want to move to production, you often do not even know where to begin and what to take apart first, as the code is not at all yours.

What do I do instead?

That does not mean that I do not use LLMs in my day to day, quite the opposite.

What works better for me is taking a bit more time during prototyping. I try to write most of the important parts myself, and I let LLMs help with unit tests or small pieces of logic, asking for partial solutions to small problems, once I already know what I want the overall architecture to look like.

gnoring the help LLMs can give you is stupid, but so is thinking they can completely replace the input of seasoned engineers. Engineers forged through thousands of hours spent digging through Stack Overflow and GitHub issues.

That is what LLMs do for me. They replaced my googling. They replaced the time spent writing things I already understand. Now it takes me minutes to solve small problems, not hours.

They help me set up unit and integration testing quickly. It takes me seconds, not hours.

I also use them to compare libraries or approaches for solving domain-specific problems.

But I do the coding. I do the copy pasting. And I know exactly what each line of code does (mostly).

Here are some example of prompts I have used whilst working on or ideating Kiffarino (this is a post on dev.to on what it is and what it does.)

Going back to my experience at uni, LLMs are like scientific calculators. You still need to understand the problem and know how to solve it. The calculator just helps you get there faster.

If you delegate a problem to a calculator without understanding what the solution is, you are not an engineer. You are a manager, a business analyst, a product owner, or one of those startup CEOs with two employees.

I like to keep using my brain. Delegating too much feels lazy. It makes me feel disconnected, unneeded, and a bit useless.

Maybe I am a control freak, but I like to understand how things work. That is the main reason I love programming. And if I ever get too comfortable handing off the parts I enjoy, I might as well stop programming altogether.

To me, it feels like buying a triple A game, ($70) and then watching someone else play it on Twitch.
Something about that just feels lazy and frankly pointless.

Top comments (0)