In the last 3 years, I used AI for coding almost every day.
Judging by my commits, I must have written about 150Ks lines of code with it.
I used pretty much every AI tool and model out there – from GitHub Copilot, ChatGPT, Claude, Cursor, Windsurf… yes, even DeepSeek and Gemini.
At first, it felt like magic.
(you can also watch this article as a video on YouTube, below)
Boy, I was just flying through the code. Shipping MVP in 1/10th of the time. I achieved in 1 week what a full team of developers used to deliver in over a month.
But than, something happened…
Three months ago, I was working on a feature for a huge production application.
I got a bit lazy and said…
Hey, let me “vibe-code” my way into it. I basically asked Windsurf to write the feature for me.
I literally pasted the requirements in and hit ‘Enter’.
After 15-miutes of waiting and Windsurf randomly changing 7+ files… The only thing it achieved was to add a new bug. And so I said… You know what… Fix the bug.
Windsurf went into another 10-min loop. Did the same.
And so that cycle kept repeating for about 2 hours.
So I decide to do it myself.
And that’s when I realized how bad things were: I had to literally delete the entire code, do a ‘git reset’ and start again from scratch.
The worst part?
This was not the first time I had to delete big chunks of code and start from scratch after using AI.
It usually starts like this…
You prompt the AI. It adds some code.
Than more code. It modifies files. Than more file. Then it creates a bug. Tries to fix it. Fixes, but breaks something else. And so it loops itself to the infinite and beyond.
What you end up with is a huge pile of spaghetti code.
And guess who’s going to have to fix that?
You.
Yes, you.
You are going to have to dig in, read through 100s of lines of AI-generated code and fix them.
Most of the time, it is faster to just start over instead of correcting hundreds of lines of messy AI-generated code.
What I do now is, I start from scratch myself. And only after I use AI to close the gap.
I realized what might take you 10 seconds to fix by yourself.
Can take you 10 minutes when using AI.
That was my “AHA” moment.
Because when I took a closer look at the codebase I’ve been working on with I, I found out…
🚨 P.S. Are you a JavaScript Dev interviewing right now? Here are the Top 25 Most Asked Technical Interview Questions for 2025.
To sum it up…
At some point, I decided I had enough of:
But, the worst thing about relying on AI to write most of my code:
I slowly watched my technical skills get worse… All while I was playing with ChatGPT like a with slot machine.
You prompt AI. Hope to get lucky. You don’t. Then you prompt again.
Watch out, because this kind of dopamine loop is what hooks people up the most.
So, in this article I will cover:
The idea that AI will do the repetitive tasks while you focus on System Design and Architecture is at best a myth.
If you want to be able to do the BIG stuff… The architecture, the Micro-frontends, than you have to be able to first excel at the small stuff.
Excel at CSS and JavaScript first, if you want to do frontend architecture.
You can’t dream about doing big stuff if you don’t master the fundamentals first.
You can’t build a frontend application if you don't deeply understand CSS (the box model, flex, border, shadows).
When you don’t know how to implement things… You don’t know what to ask for… You don’t know what the possibilities are with the technology you are using.
The reality is what they call “AI” cannot really think.
Those are LLMs that use the knowledge they’ve been trained on to come up with an answer. But they cannot reason anything from the bottom up.
You probably know the story of BlackBerry, one of the first smartphone companies… There were completely crushed by the iPhone.
One of the big differences between both was that the Blackberry has so many buttons. While the iPhone only had one.
Less is more in product development.
Sophisticated design is actually simple. It is a rule of nature in technology. Senior engineers come up with simpler solutions than Junior engineers.
First versions of anything are more complex than final ones.
Remember:
No single software company ever died because of lack of code…
Or not enough features. Actually, the opposite is true - software companies dies when they bloat their software with useless features and forget to focus on what actually brings value (SAP, Salesforce, Oracle…).
More code actually means less productivity.
More technical debt, longer code reviews, lower quality, longer builds, and more useless features. Writing code was never the bottleneck when writing software.
Great software engineers synthesize and simplify.
Bad engineers write tons of redundant code. Simplicity is the value of great software and great engineering.
This might undermine the whole concept of ChatGPT, but:
But hey, even if I told you all this…
You will still have people at work telling you (and almost pushing you) to use it.
Sadly, not using AI these days as a software engineer might get you fired. So, what should you do?
Look, you need to use it.
Work with it, and even pretend you like it.
Because sometimes you just have to dance along with the music being played.
The best you can do, is to use it… And at the same time stay sharp and be aware of its limitations.
Finally, this is how I use AI today:
Okay folks, this is it for this article.
Bogdan and I are putting together another article about “Best practices for AI-assisted coding”, stay tuned if you want to be the first to get it.
For now, we will still be using AI here and there, and documenting our lessons on our YouTube Chanel and here on this blog.
Till’ the next one,
Dragos
🚀 JavaScript Devs: We’ll Get You To Senior. OR You Don’t pay. See how it works here.