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 stronger hook for the intro and I enjoyed its suggestion:
"I set out to build a simple browser extension. Two hours later, I was knee-deep in cyclomatic complexity metrics. Welcome to vibe coding with AI." -- ChatGPT.
Your Regularly Scheduled Intro...
Funny, intelligent, and not at all the way I talk...anyways...
I've noticed an issue I've run into repeatedly with vibe coding is premature optimization. It happened again with a simple browser extension (ForgetfulMe) I'm vibing currently.
No, I'm not talking about the AI doing premature optimization on its own (though that happens frequently). Instead, I'm talking about the AI tempting me to focus on premature optimization.
"TL;DR: AI coding assistants are great at pointing out problems—but they also make it dangerously easy to procrastinate via premature optimization. In early-stage projects, chasing perfection can stall real progress." -- ChatGPT.
The Temptations of AI Feedback
One of my practices is to regularly ask the AI to create a markdown document with significant ways in which the code can be improved, bugs that need fixing, and best practices that aren't being followed. This works well, a little too well.
For example, when I recently asked it to analyze the codebase for dead code it did so and included some additional tidbits such as:
A. Overly Complex Functions
Several functions exceed the complexity limit of 10:
High Complexity Functions
handleMessageinbackground.js(complexity: 19)handleSignupinauth-ui.js(complexity: 11)getBookmarksinsupabase-service.js(complexity: 16)categorizeErrorinerror-handler.js(complexity: 38)getUserMessageinerror-handler.js(complexity: 21)createButtoninui-components.js(complexity: 12)createFormFieldinui-components.js(complexity: 11)createListIteminui-components.js(complexity: 12)toSupabaseFormatinbookmark-transformer.js(complexity: 15)Impact: High - Reduces maintainability and testability
Recommendation: Break down into smaller, focused functions
Well, none of that is good. It also reported on the files I have exceeding 300 lines, functions with too many parameters, and the list goes on.
At other times it's recommended implementing dependency inversion, updating integration tests - you get the idea.
It has an abundance of ways that I can and should improve the code base (now if only AI wrote a clean codebase to start with!).
Why It's a Trap
The danger is that I get distracted from what I was actually trying to accomplish (building X feature or fixing Y bug) and spend precious time on refactoring.
Yes, these things need to be done - but especially for early prototyping building something is more important than building something perfect.
Even as I say that it sits poorly in my mouth. I like architecting things the right way, I don't like sloppy code. I'd rather take a little longer to implement things well than save some time writing messy code.
But...
Conclusion
If AI is to be used productively we have to balance developing features against perfecting code. For side projects, for early prototyping too much optimization is a bad thing. Sure, the AI can do it for us, but (at least currently) this isn't a fast process and the hours we spend on refactoring are hours not spent on building out basic functionality.
What do you think?
"Have you caught yourself vibe coding into a refactoring rabbit hole? How do you balance AI feedback with actual progress?" -- ChatGPT.
What Else Did ChatGPT Do?
- I followed its suggestion to break up a long paragraph.
- I also implemented section headings as it suggested, but generally used my own wording.











Have you tried different models? Notice any differences? I've found Claude's models to be quite practical