Skip to main content

Vibe Coding — A Personal Reflection

· 5 min read
David Puziol Prata
Platform Engineer

alt text

Over the past few months, I've been developing a personal project using AI. I have some programming knowledge — after all, I was a Java developer at the beginning of my career. I know the fundamentals, have notions of software architecture, abstract concepts, that kind of thing. But today I'm a DevOps engineer. I still develop, but no longer the business rules of software, no longer the complex SQL queries, and I've never developed frontend in my life. Just the basics.

TypeScript on the front and Golang on the backend — the languages I chose for the project. I can say I know a bit, that I can read and analyze. But not really code, not know the nuances of the languages.

For this project, I'm using AI. It's the famous Vibe Coding.

Vibe Coding with Control

Obviously, I can't let the AI run wild, otherwise it becomes unsustainable to maintain. I've adopted some strategies that are helping a lot, and the project is progressing rapidly.

I need to control a lot of what the AI is doing. Question everything. Throw problems at it: "What if this happens? What if that? How will you solve this? Why not this way? Why not that way? What about the performance of this? What if it scales?"

To help with the process, I'm also using SonarQube to constantly analyze the quality of the written code — and it's really been a success. I focus more on thinking about the model design, the business logic, how I want it to work. I ask questions about performance, whether it's worth it or not, until I always reach something I consider worthy of keeping.

Basically, I'm doing the work of 5 people: PO, Frontend, Backend, DBA, and DevOps.

The Contradictory Feeling

Despite everything going well, I feel like I'm in control. The project is mine. The idea is mine. The decisions are mine.

But I don't feel like I fully know what I built.

It's a good and bad feeling at the same time.

Every day I sit down at my machine to develop a bit more, I finish something that would probably take a week to do. In three hours. It's too good, I won't lie.

But it's as if I'm driving a car I assembled without knowing all the engine parts, without knowing if the bolts are tightened properly.

The car is mine. I designed it. I decided the color, the model, the power. But the hands that assembled it weren't mine — so I don't know everything like I'd want to.

No matter how much you tell someone to tighten the bolt, did they really tighten it? You trust the mechanic. You even checked afterward. But that doubt persists: is it really tight?

Sometimes you just have to trust. And that's exactly what scares me.

The Conversation That Made Me Write This

I explained this feeling to a friend. About this strange sense of incomplete achievement. And I added: it feels like I didn't gain more knowledge.

Actually, I did gain knowledge. I learned more about Go, about TypeScript, about systems architecture. But of course it's not the same as if I had developed everything by myself. It's not the same type of learning.

When you write every line, you make mistakes, you debug, you struggle, you understand. When the AI writes and you review, you understand — but not in the same way. It's a more superficial understanding, more conceptual, less visceral.

Then my friend asked me a question: "If you pick up a project you made 5 years ago, do you remember everything?"

And that made me reflect. Of course not. If I pick up that project again, I'll have to study everything again. Reread the code, understand the decisions, remember why I did it that way.

What We Need to Understand

You can't swim against the current. If you can't beat it, join it.

Vibe coding is here to stay. Does it make us dumber? Maybe. Does it create dependency? Definitely. But isn't this exactly how things will be done in the future?

I'm starting to doubt that there will be truly old-school programmers in a few years. Maybe just those who maintain the languages, the compilers, the frameworks. The rest — and that includes most of us — will be in the same boat.

It will be a necessary tool for work. Period.

Think about it with me: if your colleague who uses AI delivers something functional in an hour, and you need a day to do the same thing, who will the company prefer? They solve problems. Or they know who solves them.

I remembered a phrase I read a long time ago: "We don't need to know everything. We just need to know where to find what we need."

Maybe that phrase has never made as much sense as it does now.

And Now?

I keep using AI to develop. I keep being impressed by the productivity. I keep having this strange feeling that something isn't complete.

But thinking about it — if it were someone else who had written the code, I would doubt it too. So go with the flow.

Maybe it's the price of efficiency. Maybe it's something we'll learn to deal with over time. Maybe I'm just being too demanding of myself.

Or maybe this discomfort is exactly what keeps me alert — questioning, validating, making sure the bolts are tight.

Because in the end, the car is moving. And it's moving well.

I just don't know if I could assemble it again by myself. And maybe that's okay.