Using Cursor - First Impressions
First impressions of using Cursor during a hackathon
For the past two and a half days, I had the opportunity to vibe-code with the Cursor IDE during a hackathon to build a Chrome extension that directly modified the Slack webapp page to add features to it. This was my first time using Cursor, and I wanted to see how far I could push the code generation without intervention.
Besides having a ChatGPT-like webapp for coding, Cursor also has a VS Code fork IDE, allowing you to select the AI model you use for code generation.
Just like Lovable, the Cursor tool was amazing at kickstarting the project by vibe coding, but Cursor, being a full IDE, had FAR better usability for developers than Lovable. It was also pretty cool to see the agentic mode breaking down my prompts into TO-DOs and seeing it solve them one by one.
During the first day, as the project was small, vibe coding was a breeze. I was adding features one by one, writing comprehensive prompts, referencing classes to try and guide the AI, always keeping the context window less than 70% as recommended, and fixing the small mistakes it made along the way.
But I wasn't really reviewing the output code in depth; I only cared whether the code worked. And it did work, for a while. By the second day as the project got larger, things slowed down, a lot.
I only stopped to read the code in depth when prompting wasn't working anymore. By this time the codebase was a mess. Whenever a change was made, something else broke. The UI components were so intertwined that there was no way to move forward other than to refactor the whole components architecture, manually, as the AI wasn't able to do it. This took hours, but it was a good experience to see the kind of changes the AI made:
It created its own worse UUID function instead of using what I consider to be a common library.
Sometimes, especially as errors became harder to fix, instead of trying to find and fix the root cause of an issue, it tried to fix only the output by adding more "validate-and-fix" functions before the function output, or even in the middle of the function. In one case, I literally removed more than a hundred lines of code with a two-line fix.
Imagine I wanted a function SUM of A and B, and for some reason the first time the AI wrote this function as "SUM = A + B + 1", when I pointed out to the AI that the output was wrong by 1, it fixed the function by making "SUM = A + B + 1 - 1" or something even weirder like "SUM = C + D + 1; C = A - 2; D = B + 1", which technically worked, but this made the code get progressively worse over time with tons on unnecessary functions, making the code even harder for the AI to reason about.
It also duplicated a lot of complicated logic over multiple components, which was really hard to refactor, as I had to first reduce the "SUM = A + B + 1 - 1" functions to "SUM = A + B" to see they were doing the same thing.
The point of this post is not to say the tool is bad, the source of all bugs, and that you shouldn't use GenAI to generate code, as I have seen some doomsday developers say on LinkedIn.
This is just another anecdote to show that current models are not near ready to be fully in control of coding, and I took it to the extreme by not reviewing the code it wrote. I would never do this in a real codebase and don't recommend anyone to, but it was fun seeing how far I could push it.
The tool itself was really useful before the breaking point. Even if no further improvements are made, I can definitely see Cursor being a tool I use every day when used correctly. Besides, not only the model, but the UX and model usage will also improve over time, which is where I think the biggest leaps will come from in the coming months.
It also needed less context than at least half the interns and junior developers I helped over the years, so I can now understand companies hiring fewer junior developers. In a way, I feel this will weed out junior developers who only copy and paste code faster than ever.
If you are a Junior developer who is just as capable as the AI tool you are using, and expecting other developers to review the changes proposed by the AI, you are in for a short career.
Extra - Hackathon Tips
I've participated in a few hackathons over the years (more than 5, fewer than 10), and this was the first one I've used GenAI on. It is a game-changer, and most people not using it will have a hard time winning1.
You should use it smartly:
Use it for things these kind of tools currently excels at: generating webapps (most Chrome extensions also behave as webapps). In a hackathon there is hardly a “best” UI2, so most of what the AI will generate will go into the final deliverable.
Having an immediate visualization of what you are trying to build after just one prompt makes it much easier to get everyone in your team on the same page, even if it used to make it easier to disagree about what you should build.
Don't use it to code integrations with newer and poorly written API/library documentation. You'll probably spend more time debugging the output than writing the code yourself. You can use it to write the boilerplate code though.
Use it to improve your pitch by making the AI behave as a jury for your idea, and go back and forth with it a few times until you are satisfied.
During the next weeks I'll be working using Cursor in real projects and have a better feeling of its usage in the real world. If you are interested, consider subscribing.3
Of course, there is always that oddball who is used to starting projects left and right, but most people are usually working on existing code bases most of the time.
You know those little tweaks and improvements designers do, like the best color for the app to increase user retention, or the best place to put a button to encourage buying. These are things that matter in the real world, but not in a hackathon. Unless improving an existing UI is part of the objective of the hackathon, no one will be looking for this kind of stuff.
This article was supposed to be a short LinkedIn post, but I had to change it to an article after reaching the post character limit. Consider following me on LinkedIn if a shorter version of this article would also be interesting for you





