Post

Having done a lot of vibe coding lately, I think I’ll move away from it exclusively. Current agents eventually fail to adhere to some prompt despite various attempts and approaches. Whenever this happens and I look in the codebase I am usually mortified by what I find.

0 reposts1 like

Is not even worth talking vibe coding, the discussion should shift towards practical talks. I use cursor a lot and I already kinda know ahead what sonnet is good at and I know rules work only to a certain degree, it's not uncommon to ask it to redo a change after reading the rules again.

And then LLM is one thing but there's a lot of unknown that cursor does around it, you never know if they are cutting of some context from the chat because they think it's not relevant. Sometimes trivial things seems very hard for sonnet while complex refactoring are done in seconds.

Working with Cursor and LLMs is a skill on its own like searching on Google and understanding technical docs. It's not linear, it cannot be teached without foot on the ground experience, it changes over time and it's expensive for students and hobbyists.

You might argue I need to use rules better or something like that. I would say that isn’t vibe coding. I interpret vibe coding as the agent addressing whatever whim I have in the realm of the possible, figuring it out for me. Mostly, I end up with spaghetti codebases that the agent cannot untangle.

Agents love to generate code. Give one a task and it is off to the races. In a new project, this isn’t the worst thing. In a project with existing functionality, this becomes a problem due to a combination of lack of context and lack of effective planning. The two go hand in hand.

Agents use search to look around a codebase to find relevant files to pull into context. You can also use rules to define how an agent should structure the codebase. At some point, often unbeknownst to the viber, the agent fails to pull a relevant file into the context window.

Initially, this doesn’t seem like a problem. The agent does what it does best. Writes code to solve the problem. No shared states available in the React app? No problem, it’ll write some hooks for you. Viber validates the behavior in the browser. Looks good? Commit and ship. Never reads the code.