AI Coding Tools: What I Actually Use and What I Stopped Using
I'm not the type to test every tool and produce a comparison chart. You can find those anywhere — complete with star ratings and feature matrices that still don't tell you what to actually use.
This is just my experience. I'm a backend and full-stack developer. I write Java, Python, and JavaScript/TypeScript daily. Everything below is from real, paid-use experience over the past two years — not from reading reviews.
Cursor: The One I Can't Go Back From
I started using Cursor in early 2025. Haven't gone back to plain VS Code since.
Here's what makes it different from Copilot: Copilot quietly autocompletes code next to you. Cursor actually talks back. You hit Cmd+K, say "make this endpoint async with retry logic using exponential backoff," and it does it. Not five options to pick from — it just changes the code.
I write almost everything in Cursor now. When I'm building new features, the workflow goes like this: I think through the data model and interface first, then let Cursor fill in the skeleton. Controller, Service, Repository layers — it writes those fast and cleanly. Debugging too — paste in the error stack, ask "where could this null pointer come from," and 80% of the time it points me in the right direction.
But there are definite limits.
I don't use it for complex business logic. Cursor doesn't know your business. Ask it to write an order state machine and it'll give you a generic one that has nothing to do with your actual requirements. You design the logic yourself; use it to check for edge cases.
I also don't use it to review other people's code by just feeding it a file and asking for a review. It'll often change good code for the worse because it doesn't know the context — it may flag a deliberate workaround as bad style. Read and understand first, then decide whether to touch anything.
And don't paste a PRD into Cursor and say "implement this." I tried. The result looks complete but is far from what you actually need. You have to digest the requirements yourself, break them into specific tasks, then tackle them one by one.
The worst mistake I made was trusting it too much. There was a batch processing feature — I used Cursor's implementation straight, tested it fine, shipped it to production. With real data volume, performance went through the floor. O(n^2) logic. Functionally correct, but unusable at scale. Since then: Cursor writes the code, but anything performance-critical, I review myself.
One more thing that catches people off guard — sometimes it confidently calls APIs that don't exist. Especially with newer libraries, it'll invent method names that look perfectly real. You won't find out until compile time. This happens with every AI coding tool, but Cursor is so smooth that it lulls you into dropping your guard.
Hard to quantify exactly how much time it saves, but the gut feeling is: a medium-complexity CRUD endpoint that used to take me half a day now takes a couple hours for a working version. Most of the time saved is on repetitive work — field validation, boilerplate tests, format conversion code.
v0.dev: Impressive for Prototypes, Problematic in Production
Vercel's v0 lets you describe a UI and it generates a React component. And it's genuinely impressive — "a dark-theme dashboard card showing user growth data with a small line chart" gives you something you'd actually use in a prototype within seconds.
Iteration is the best part. You say "make this button bigger, change the color to blue" and it does it on the spot. In a traditional dev workflow you can't even imagine that kind of speed.
But two problems.
its code is heavily coupled to shadcn/ui and specific library choices. If you're integrating it into an existing project with your own component library, the adaptation cost is high. The code structure doesn't match your project's, and there's a lot of adjustment needed.
complex interactions expose its limits. A simple search dropdown is fine, but form state management, async data fetching, dynamic rendering — the code quality drops noticeably, and edge cases aren't handled.
So: great for prototyping and validating ideas fast. Don't plan to put its output directly into production. You'll end up rewriting most of it.
GitHub Copilot: Solid, But I Use It Less Now
Copilot was the pioneer and it's still good. If you're happy in native VS Code and don't want to want to switch editors, Copilot alone is enough. The completion feature by itself is genuinely valuable — it's quiet, accurate, especially for repetitive patterns like setters, getters, constructors.
Copilot Chat has also gotten noticeably better over time.
But if you're already using Cursor, Copilot feels redundant. And in non-VS Code IDEs, the integration experience isn't as smooth. I tried it in IntelliJ for a while — sometimes completions would lag — and eventually turned it off.
Bolt.new: Fun While It Lasts
Bolt.new's pitch is great — describe an app idea and it builds the whole thing, frontend to backend, right in the browser. I tried building a small tool with it.
The experience is dazzling. You say "a todo app with user registration, login, and a stats dashboard," and it actually runs — frontend pages and API endpoints included. It feels like science fiction.
But when I tried to push it toward a real project, the architecture is toy-level. No error handling, no input validation, no permission controls, database connections done in the simplest way possible. It gives you a "working demo" and nothing more.
Also: the stuff it builds for you, you don't really understand. When something breaks, you don't know where to start debugging. Code you wrote line by line vs. AI-generated blocks — the difference in "can I quickly locate a problem" is enormous.
Best use case: hackathons, quick demos for investors, validating ideas fast. If you need to show something clickable within hours, Bolt.new gets you there faster than building from scratch. But plan on rewriting everything if it becomes a real product.
Tools I Tried and Dropped
ChatGPT for coding: Fine for simple questions — "how do I parse a datetime string in Python." But for larger code contexts, it falls apart. You paste code in chunks, it can't see file relationships, and the same question twice can get you different answers. For actual coding, I'd rather use Cursor (in-editor, no copy-pasting) or Claude directly.
Amazon CodeWhisperer: Tried it for about a month. It exists. Completion is comparable to Copilot but nothing stands out. If you're deep in the AWS ecosystem, its service integration might be useful. For pure coding experience, I didn't find a reason to choose it.
Is It Worth Paying For?
Cursor is $20/month. Copilot is $10/month. That's $30/month total, roughly 210 RMB.
I did the math once: as a developer, my daily rate — even conservatively — far exceeds that. If these tools save me 30 minutes a day, they've paid for themselves many times over. In practice, they save much more than that.
Students and beginners: DeepSeek's web version is free, and Cursor has a free tier (with monthly limits). Don't let cost hold you back — start with free options, upgrade when you see the value.
My Daily AI Development Workflow
New features: I think through the data model and interface design first. Then I build the skeleton in Cursor, let AI fill in the CRUD boilerplate. Core logic I write myself. After that, I ask AI to check for missing edge cases.
Bug fixes: Small bugs — describe them in Cursor and let it fix them directly. Complex problems — I paste the relevant files and logs into Claude (its long-context analysis is stronger), have it help me pinpoint the direction, then go back to Cursor to make the changes.
Documentation: After writing code, I have Cursor generate method comments, then I edit the wording honestly. This is where the time savings are most obvious — I used to hate writing comments. Now it's basically not a chore anymore.
Code review: I mostly don't use AI for this. Reading a colleague's code, understanding their thought process — AI can't really help with that. I read it myself, line by line.
The Honest Bottom Line
No tool is perfect. Every AI coding tool will give you wrong answers. Every one will write bugs into code that looks correct.
The principle is simple: you need to understand the code you're writing. AI saves you the manual labor, not the mental work. If you don't understand the code yourself, you can't tell if what AI gave you is right — and using it just means planting time bombs in your project.
If you get that, the specific tool matters less. Pick one that feels right, get good at it, and you're fine.
