
How Vibe Coding Broke My Brain (And How Fixing It Made Me A Better Dev)
Published: 6/25/2025
Like so many of my fellow junior programmers trying to break into the industry, I reached a point in developing my more difficult projects where I began to reach out to LLMs. In the process, I took AI for granted and started losing my programming intuition as I watched the issues pile up. Even worse, I felt like I had lost ownership of my own code when all was said and done.
I wrote this to document how I fell into a trap of blindly "vibe coding", and how I found a much more rewarding way to prompt that can be applied to much more than just web development or programming.
Watching My Curiosity Turn Into Complacency
In Summer 2024, I was working on an e-commerce MERN site for my portfolio. It was my first serious full-stack project where I took a paid course and completely changed the premise of the project. In my case, I decided to create a booking-based charity website.
I had seen plenty of AI-created websites and decided to make those exclusive to other "less serious" projects, as I was serious about showing off my full-stack ability with this portfolio piece. I wanted to truly understand how to implement this stack before moving onto more trendy things like Next.js.
This was when I ran into the problem that made me reconsider.
If the poor hypothetical admins of this website had to create something like a daily event, they'd have to create each one day-by-day. Instead, the solution seemed clear to me: keep events as single entries to cut down on database bloat, and find a way to translate this to the front-end.
Eventually I found rrule, a wonderfully-robust library that trivializes the Herculean task of trying to figure out how to write date recurrence rules for an event when you need more than just a single time and date. Despite being an excellent library, the docs just weren't clicking for me. Instead of really buckling down to figure out where I was going wrong, I was curious to know how an AI would execute this. I wasn't exactly sold yet, but I thought seeing a working solution would motivate me to figure this out.
This seemed harmless enough. But then as I fed more and more of my code to the LLM, the more it seemed to "know" more about my project. I started by just copying down what it had produced, and I was skeptical of nearly every line it spat out.
But that quickly changed, and I started doing exactly what this article is about: vibe coding. I prompted to receive a block of code, put it in my project, fed it errors or odd behavior, and repeated this ad nauseam.
I had no clue what I was doing at first. I was prompting through the browser where the AI had no clue about my code base beyond whatever I could fit in a limited prompt. When Gemini's code wasn't working for me, I took it to Claude and fed it everything that wasn't working, and vice-versa. Probably the worst way you could go about doing this, in hindsight. I was getting somewhere, though! My server was giving me exactly what my calendar component needed. For now.
I was fascinated to watch everything come together, taking all the little red flags my conscience was seeing and hiding them under blind optimism. These hallucinations were nothing serious, and fixing up the small little assumptions the AI made seemed so trivial when I spotted them. At this point, I absolutely felt like I had unlocked a cheat code. We'll just send the errors and good vibes to the AI until it's working. Great idea. 🥲
Before long, I was starting to realize just how much generated code was piling up throughout the whole project. By now, however, this was a 'sunk cost fallacy' situation. I was doing serious legwork just to tie these big, prefab blocks of AI code together and make them stick.
Fast-forward about two weeks. I was at my wits end, up late on a work night, begging Gemini to fix an issue with one of my controllers. This would lead to another issue I'd have to debug, leading to what felt like an endlessly-branching tree of problems that needed to be addressed.
This was my breaking point. I just turned my computer off and went to sleep, knowing in the back of my head that I had to throw all of this out. All of that time and effort had to go down the drain. At this point, it wasn't just about getting it to work, it just straight up didn't feel like my code anymore. That was a much, much bigger problem. I hadn't felt this lost since college.
I signed up to make things, but here I was feeling like nothing more than a flesh-and-blood wrapper for these LLMs. This was no longer my project. Even when the AI's code was working, I didn't feel like it was my solution saving the day. The code made complete sense, but I wasn't learning anything at all. In fact, the very opposite happened to me.
I feel as though my experience resonates with a growing concern in the industry: reliance on AI contributing to skill atrophy. No, I didn't forget what an IDE was, but I was noticeably slower and less confident with my intuitive decisions. My first intuition became: prompt the AI to see how this is really done. Without even realizing, I had written myself out of the executive decisionmaking and made AI my boss.
When I finally got around to working on the project again, I wasn't sure if using AI at all was a smart move. It took a week or two, but I was very glad to revisit my mistake. I realized how foolish it was to wildly prompt like that, but more importantly, it dawned on me how LLMs could be tailored to become powerful tutors.
The Socratic Tutor Prompt
Eventually, I found a much better way of leveraging the power of AI; a slower, more thoughtful approach that I use whenever I want a guiding hand without the answers in my face. It starts with a different kind of prompt, like so:
💬🛠️ Socratic Tutor Prompt Template (Troubleshooting)
Hi [Name], could you be my Socratic tutor to help me figure this out? [Describe what you're trying to accomplish, what went wrong, and steps you took trying to fix it]. Please give me no code unless explicitly asked to (Optionally, include something like "only use code snippets from the docs"), instead opt to provide helpful hints and links to relevant docs for me.
Here's a different one I use to just explore an idea before I've jumped in.
💭🧭 Socratic Tutor Prompt Template (Exploratory)
Hi [Name], I want to [accomplish a goal], and I'm [describe your skill level, or relevant topics you already know]. Could you please be my Socratic tutor and help me achieve a goal in a way that provokes thought and fills knowledge gaps? Please give me no code unless explicitly asked to (as above, you can tweak the prompt to make an exception for official documentation/sources) unless I explicitly ask for it.
After a few days of victories using this method, I felt a lot more confident in my skills. I was saving bookmarks to documentation left and right, and working out how to implement this new booking feature to the best of my ability felt great. More importantly, however, I reached my goals and became so much more comfortable with my stack. Being able to follow the logic flow to troubleshoot and add new features to such a complex application without pain, and without AI, is an amazing feeling.
Things that might seem small to others like writing my own custom JWT-protected routes, or understanding how mutations can happen in a Redux slice that's supposed to have immutable data (thanks to Immer) reignited my passion for truly understanding how these things I created worked. With the help of these Socratic prompts, I was proud of what I had learned, and in turn what I created with that knowledge.
The Cynical Market
I admit, dear reader, there is no secret AI sauce, no prompt that will make hiring managers look at you over everyone else.
But that is not what this article is about.
I cannot tell you who is right or wrong when it comes to the future of our industry. Some think AI will fizzle out, others claim that wiping out all tech jobs will be just the beginning. I'm no Ray Kurzweil, and I won't even begin to tell you what will happen tomorrow let alone the next 5-10 years.
Right now, the market is looking for programmers who are honing their craft and looking to grow. In 2025, the real challenge isn't competing with AI, it's cutting through all the noise surrounding us. Tech jobs are not dead, but in many ways, the way we used to look for jobs (and the way employers look for candidates) is a thing of the past.
We all have our own personal truths about the situation. I've seen so many posts across multiple communities from people regretfully leaving the CS/tech job market because of these outlooks. So many articles with a 72-point title screaming "YOUR JOB IS DEAD".
Despite all of that, everything I've seen thus far tells me this:
Capable programmers who are good problem solvers and can think critically will always find a way to thrive, one way or another.
Those of us who love creating things, who light up when people ask about how our projects work, will always have an opportunity to succeed. It's just about shining bright enough for people to see us.
Conclusion
Vibe coding isn't the problem. It's a response to the real problem, of needing to ship more and more code, especially for juniors trying to prove their worth.
Self-directed learning never stopped working. The term is thrown around a lot, but it truly has the ability to supercharge how we learn by providing tailored responses to the things we struggle with, so long as we don't skip to the answer immediately.
It's easier than it's ever been to ship code with a few clever prompts. But the real value that we bring to the table isn't speed, it's understanding. No AI will ever be enough to replace our ability to think, adapt to circumstance, and grow. These are skills you'll carry into the future even beyond programming, no matter what you're trying to accomplish in life.
Using AI will get easier and easier. Critical thinking will not. The devs thriving in the future are those who brought more than just clever prompting, because clever prompting will be expected of everyone.
The only wildcard in this equation is you.
- Terrell
Wanna connect? I'm on LinkedIn! Or drop me a line at terrell@rellsoft.dev.