Stronger Hook in the Intro:
I wrote this article, but I asked ChatGPT for recommendations on how to improve it. It suggested I needed a ...
For further actions, you may consider blocking this person and/or reporting abuse
Have you tried different models? Notice any differences? I've found Claude's models to be quite practical
I like to use Claude, too. However, even Claude can result in adding unnecessary complexity. Just this week I was using Claude to analyze some Blazor code I'm working on, trying to figure out why buttons on a page weren't working. I asked Claude, which I'm using in GitHub Copilot, why the buttons weren't working. It gave me some code suggestions in a couple of files, as well as adding a NuGet package. It didn't work. I tried Claude again, more suggestions, etc. Still didn't work. By now I'm thinking that this thing is becoming complex, so I backed those changes out. Then I thought, maybe the rendermode was wrong. Sure enough, I left
@rendermode InteractiveAuto
out of the Razor file. I put that in and, presto-chango, it worked! One line of code that I neglected to enter, rather than a few dozen lines of code that were useless.I'll still use Claude, but I'm more cautious of the suggestions it, or any other AI Agent, will give me.
Yeah, it's definitely a struggle. I go back and forth on how helpful AI is.
I think another big problem is the fact that the AI doesn't back out code changes when they fail - it keeps piling on top change after change after change. So it tries restructuring something and that doesn't work so it refactors something else and it still doesn't work. By the time it actually makes the fix it's touched 4 or 5 different areas of code that didn't need to be touched at all.
Man isn't that the truth!! It makes me wonder if I should just create a branch after each interaction with an AI.
I use Claude Sonnet 4 for a lot of the coding I do.
Not sure if I'm alone on this, but the model is really good at UI and front-end development but he begins to struggle on back-end. Specifically to do with security and more complicated user functions.
He'll also sometimes just randomly throw on additional features that I didn't ask for - which can slow overall development time as I have to go through and remove it.
Interesting! How are you using Claude? Claude Code? Cursor? Copilot? etc.?
I found Cursor to be somewhat frustrating when it comes to UI, but Claude Code seems to do better.
I've had the random features thrown in as well - quite frustrating. If I see that happening I often roll back the code (in Cursor) and then tell it to implement what I asked while avoiding making any other changes...it's still annoying, but at least I don't have to go through and remove it.
I have used a few different models. I also find that Claude's models seem to do quite well. I'm less impressed with OpenAI and I need to experiment with Gemini more, it feels so foreign.
Gemini 2.5 Pro and Claude 4 Sonnet are approximately at the same level
Totally agree with this. AI is an engine for "good ideas" on next steps. I do think though that it does identify done states. So if you give it a goal (I'm not saying it does the best job) but it can judge when it's done. But yeah I think it'll be harder to triage open ended good ideas. So maybe having a clear Definition of Done and Focusing on getting to that point. Do clean up in another step with a clear Definition of Done.
I like that idea. It would be good if we could ask AI if something is done, within the definition of done that we've decided upon. And if it is, then the AI would say, "Looks good to me", then stop. Rather than a never-ending list of improvement suggestions .
I agree giving a definition of done is helpful. The problem I've run into is that the AI creates a list of tasks (e.g. 5 code refactors to improve code quality) but it faulters on maybe 2 of them and requires a lot of handholding. It gets there eventually, but the handholding takes me away from continuing the prototype.
I'm working on this as well. Is it right sizing the ask? Asks too big get bugs, too small feels like hand holding. Some of the answer I know is task decomposition. You ask it to break down big asks into the small ones, it automates some of the work out of hand holding. But I too am trying to keep it out of the black hole of fixing incorrect assumptions
For the newest extension I've been working on (ForgetfulMe) I started off writing it with Cursor and have continued working on it with Claude Code. I've been spending a lot of time refactoring so I told Claude to create fresh specs for the extension based on the current code, provided other guidance on tech stack, methods, etc. and now am starting fresh with Claude.
In a clean branch (I deleted all files) I've placed the docs Claude created, told Claude to read them, and to create a step-by-step todo list...then I'm going to have it try and see what it churns out. Interested to see what happens.
Totally agree! This problem is very familiar.
When AI starts diving too deep into details and suggesting tons of "improvements", I actively discourage it. Sometimes I want to scold it for such eagerness, but I hold back 😅
I just undo everything it created and clearly explain: "I need to solve specific task X, not rewrite the entire project. Let's focus only on this."
The key is to immediately cut off AI's attempts to "improve everything around" and keep focus on the current goal.
Haha, I give in to the scolding sometimes!
If you are a non technical person I think vibe coding a prototype is a great way to show developers your idea of the application.
A developer should not let AI do prototyping.
I find when I'm typing I often get other ideas about the solution. Then I stop and explore that idea to access if it is the better solution or not. If I let AI do the typing I remove those moments from my process.
A prototype is like a fixer upper. The core is good enough to go into production with minor changes. And outside the core the quality matters less because most of the times it will be rebuild. And then there are the parts that are in between.
Creating code for different levels of cleanliness is hard to define in a prompt. I never even attempted it because I have no clue how to do that.
I know I didn't directly respond to the question. But maybe it can help you find an answer.
I think there is a lot of wisdom in what you state here. I'm still working on the balance myself. I'm more willing to vibe code on things that aren't important but that I'd like to have now.
I can agree with your view. When I wrote; A developer should not let AI do prototyping, I was thinking about long term projects.
If you got an idea and you want to quickly see it working, AI can be a good tool. With the consequence that it is possible you have to rewrite the whole thing if the idea turns out to be something you want to continue to develop.
I think at some point in the process you have to decide if the idea is a throwaway or a keeper. And If it is a keeper you should invest in code quality.
I get your point but when I think of optimizing code I think about optimizing to make it perform faster when being executed rather than doing things like breaking it up into smaller functions in order to make it easier to maintain. I'm not entirely focused on the "Developer experience" aspect of Optimization. It's a priority to me that the code actually do the job while using the least amount of resources and as fast and cleanly as necessary. I'm not certain ChatGPT is great at writing C Code for instance that is optimized in the sense of getting the job done in the least amount of time.
Yeah, I guess I could have called it overengineering or something.
It's hard to find the balance between efficiency while maintaining your own knowledge base. For me I've seen too many classmates at my university utilize vibe coding instead of their own knowledge on a topic (I can't say I'm not guilty either). But for someone like me, who falls into the rabbit hole of optimization (and procrastination), AI just lengthens the amount of time I spend per project.
I appreciate you bringing this topic up because now I feel less alone in my optimization struggles. I think it's important for those who don't know a topic to learn it and then we can utilize AI when the time comes for it, but since it's so new, we don't really know how to regulate it large-scale, and especially for our own personal use.
That's just my 2-cents I hope everyone's projects are going well!
I'm planning on writing another post with thoughts on balancing learning / utilizing. I agree that having knowledge on a topic is still incredibly important!