I've seen it brought up quite a few times here in the past few weeks. I'm currently using VSCode + Copilot. Would be great to hear some experiences, even better if you migrated from the stack I am using.
I've seen it brought up quite a few times here in the past few weeks. I'm currently using VSCode + Copilot. Would be great to hear some experiences, even better if you migrated from the stack I am using.
20 comments
IMO, the 1st law of SE is about creating a bounded context, to make any junior can work like a senior.
And Cursor is a really hardworking and smart junior.
One thing I dislike about TDD is I sometimes think better in code than use cases. And stuff like mocks etc take far longer to write than a 5 line fix. Say, I have a repo where it takes variable from source A when X happens, and source B when Y happens.
Now I can do reverse TDD. I write the code first. I highlight my code and tell Cursor to write the tests. I tag all the classes and models and other things that I want Cursor to mock. It writes the test, the tests pass, green. Then I stage the code that I wrote, and those tests should fail, red. It also finds all the dumb things I missed out on like imports.
So there, I have a pair programmer that writes the 300 lines of tests while I write the 5 lines of functional code, no worries about hallucinations and all.
If you test from the outside in and build up a library of functional and realistic fakes then over time then this gets quicker and easier.
Ideally I think people shouldnt use mock objects at all, ever - only fakes of varying realism at the edge of the project, populated with realistic data.
One reason for doing TDD is that it compels you to match a realistic test with a realistic scenario. I tend to find people lose that when they do test after, and they instead lock the test in to the current behavior of the code instead. This is not just tedious work, it's also harmful.
Explanations of code work relatively well for smaller chunks of code.
When files get larger, I get more of a miss rate/bad suggestions unless I start tightening the scope.
That, and the autocomplete is more accurate and faster (I think it has access to recent history and clipboard?)
i'm also frequently in large python codebases and it just works for actually mimicking patterns when i need to do some repetitive task like adding endpoints to an API, automagically being able to add imports at the speed of a <tab>.
I had my workflow around VSCode, I am using `code` cli, devcontainer and many plugins. First time I tried, they didn't have devcontainer support (iirc last year). This time the devcontainer is there but the CLI support is nowhere to be found. And I am sticking to VSCode as I have some QoL customization in VSCode and around VSCode. Right now I am experimenting with programmamble workspace (Like adding and removing some directories in the whim of command).
I have some shortcuts, and some scripts which directly calls `code` with some arguments, all in WSL. I will go back to trying cursor if I can try `cursor` with `code`. Till then, for AI Assisted coding, I am happy with Aider...
I did try cursor but I'm just not into that whole VSCode feel (I am a JetBrains person, and zed lets you set the keymap to JetBrains-style, so most of my kb shortcuts still work in zed).
Zed is rust-based and extremely fast, and they are building it from the ground up instead of forking VScode like Cursor.
I want them to catch up though because the editor is very, very snappy. I now use it intermittently with Cursor.
- Click on the Copilot icon on the bottom bar
- Select 'Use Supermaven'
More info here:
https://zed.dev/docs/completions
Cursor is just too good. It’s comparable to a junior software developer now but is at a small fraction of the cost. With Cursor Tab, Cursor Composer, and the ability to index the documentations of the frameworks/libraries used, I have been coding faster than ever and I like it better this way because it’s cheap, fast and there’s no need for me to onboard or train somebody else or waste time on people management.
I hope all the developers out there know how much Cursor has raised the standard of software developers.
They will need to keep being better otherwise they’ll be irrelevant very soon.
No LLM is smart enough to implement novel features in a complex repo, but the inline autocomplete alone is leaps and bounds more powerful in its editing / diff capabilities, and smarter thanks to Claude and additional context.
Never going back to vscode + copilot.
That said, cursor blew up so many of my keyboard shortcuts, making it a pain to revert all of their stupid commands they try to stick on common shortcut combos that cause chat windows to pop up in random places. Chat windows suck and waste time because LLMs are brain dead if they try to come up with things themselves as opposed to just copying your existing patterns. Cursor will update and re-nuke a bunch of the un-fucked settings and commands, making it a pain in the ass.
Still leaves Microsoft’s stale tech demo in the dust. They dropped the ball after so much investment and let copilot rot in an embarrassing state. Cursor really highlights this.
It's not good at reading the context of the file. It's 'apply changes' is a bit handier than copy pasting but you could find yourself without some code you actually wanted if you click the green button too liberally.
I am likely to go back to VSCode + Copilot and using ChatGPT as chatbot assistant.
What stacks are you migrating between?
Supermaven was miles ahead of Githhb copilot for me.
Cursor's advantage is it works with today's clean code style where you need to modify 14 files and add 3 tests to change a variable value.
Supermaven is fine for more compact codebases. It has a much larger context window, but Cursor is likely utilizing RAG or something and able to work with larger ones better.
Both are great at their own thing, I'd suggest everyone try them both.