In 2014, when I joined the workforce, moving from Eclipse to JetBrains' IntelliJ was world-changing for me. The key reason for moving to JetBrains' IDE was IntelliSense. For decades, JetBrains was the dominant IDE player. However, since I switched to GitHub Copilot, my productivity has improved by 40% (as measured by issue resolution).
Several people have been recommending that I try using Cursor. I was happy in my world, using Github Copilot to autocomplete all mundane boilerplate codes. Although I was reluctant, I went ahead and installed it anyway.
First prompt: Alright, it is like an GPT-embedded IDE. The second prompt has been entered, and it works excellently. In the third and fourth prompts, I noticed something intriguing in my behavior. I did not even want to explore the files it was generating. I felt both physical and mental resistance to exploring the code and editing it manually. This kind of behavior shift toward programming is something I had not experienced before. While IntelliJ's IntelliSense was productive, it did not result in a significant change in behavior. This hit differently. The change did feel like a radical shift. You can argue it is a VS Code clone with prompt executors stitched together, but the complete experience is behavior shifting. It feels powerful, full of serendipity.
People seem to instinctively kick and abuse humanoids when they see them. I believe that people have a similar instinct when it comes to using AI-generated code. After using Cursor for over a week, I realized that I was not valuing the code generated by the IDE. My second instinct was that I would be hesitant to use it on our core product. My hesitation may stem from the belief that an AI IDE could generate code better than I can; consequently, this fear might act as a barrier, particularly regarding support, operations, and maintenance.
Autocomplete from GitHub Copilot is ok, as it is just boilerplate code, but with Cursor touching multiple files, you often have a tendency to click Accept All because that's the behavior it induces. After generating several projects, I realized that you end up with a project that looks like a 3rd-party product but then you own it, rather than having no ownership. Another key observation was that I was transforming deterministic codes into probabilistic codes. Although the code generated was correct almost all the time, theoretically, changing a variable name transforms a deterministic operation into a probabilistic one.
Giving a cursor to junior engineers is like giving a chainsaw or a road roller to a teenager. If you lack the necessary knowledge to use it effectively or comprehend its side effects and technicalities, you risk causing irreversible damage.
There are specific use cases for AI-native IDEs, back-office software, and internal tools; these are scenarios where the software is considered disposable, business cases are not the primary focus, and we are developing low-ROI tools that do not require architectural discussions or team alignments.
We generated a few projects using the cursor tool.
We designed the Superclass project to classify various types of documents, including PDFs, images, and text.
https://github.com/adaptive-scale/superclass
Scan Google Drive, S3 buckets, and local file systems for secrets, tokens, and sensitive information.