Vicissitudes

vibe coding sucks

About a month ago I decided to try out Cursor which is an AI-powered code editor. I'll admit that I'm not immune to hype and doing whatever is popular at the moment, which is why I decided to try it out. They state on their website that Cursor is "The best way to build software." which is a very bold claim.

At the time, I was working on building a browser extension which would allow for bookmark syncing across different browsers and computers. I decided to try implementing some basic features with Cursor just to see how it goes.

To start off, I got it to build some UI for the extension, as I hadn't implemented the bookmark list at the time. However, attempt after attempt, it kept producing terribly laid out UIs which had numerous issues even after asking the model to fix any layout issues. Moreover, the code it produced was somehow over-engineered and over-simplistic at the same time. Certain parts of the code-base took quite some time to read over and understand while other parts weren't abstracting enough.

This inconsistency in code output and unreliability really put me off using it at first, but I thought I'd stick with it for a bit to see how good I can get the model to output. After all, you always hear about these vibe-coded SaaS's getting built and launched in a few days right? So it couldn't be that bad, maybe it was my problem that the model was producing incoherent code that did not pair well with existing code.

So I watched some tutorials from people who claim to use vibe coding to build at blazingly fast speeds. Most of these tutorials were comprised of putting a lot more effort into guiding the model with guidelines, checklists, and restrictions to reduce the amount of bad code being produced. However, after all of that, it still seemed that the model would produce code that would need human intervention to look over and fix the mistakes.

To me, this just felt like so much more effort to watch over and baby this incompetent probabilistic black box rather than getting your hands dirty and building something yourself. After I implemented the workflow "fixes" recommended by these tutorials, I was still getting buggy code and awful UI designs. I kept this up for 2 weeks until I decided to give up and unsubscribe from Cursor.

This experience was a far cry from their purported "best way to build software". Being a software engineer, vibe coding puts you more in a managerial position rather than being the one to write the actual code. However, from my perspective, this can be a slippery slope for engineer's skills to decay if all they're doing is reviewing code made by a junior engineer. This is especially dangerous in the case of junior engineers who use AI a lot in their workflows, it risks a loss of knowledge gain that would be gained had they coded the feature themselves.

In saying that, I do use AI for very specific tasks when coding. I found that AI is good at answering any questions I might have when writing something which utilises syntax which I don't use often. Another scenario would be asking it what would be a concise or idiomatic way to write something, which would be useful when learning a new programming language. Furthermore, I actually think AI can be useful when coding tiny functions rather than making changes on a project-wide context, this also minimises impact if it generates bad code.

I don't mean to say AI in its current state has zero practical applications. But if the AI coding future is anything like what I've experienced so far, then I'd rather stick to the good old ways of writing code.

#ai #programming