Sitemap

Learning to code with AI: progress over vibes

2 min readJul 4, 2025

--

I love the idea of shipping something in 2 hours, but I hated vibe coding.

Why?

  • Lots of things are buggy. Plain not working or not of an acceptable quality beyond building a prototype. Endlessly pressing the “attempt to resolve” button in Bolt without knowing what’s happening or copy-pasting error messages in V0.
  • My control issues: I can’t handle hundreds of lines of code I can’t understand and debug

Still, I want to be able to code well enough to ship features when needed.

I don’t think throwing JIRA TICKETS back and forth, or having HANDOVER meetings is the future of how we work. I didn’t enjoy coding at Booking.com (all the designers were coding there!) because the codebase was a mess, but later on, I had plenty of experience “write a ticket to change a button, put it in the backlog, convince someone it’s a priority, and wait for months”, so I want to be done with that.

Realizing I needed to focus on building ‘shipping muscle’ rather than immediate results made everything click. Focusing what I’ve learned every day, rather than just what I shipped, gives me a sense of progress and a necessary dopamine hit. It also removes the pressure to ‘vibe code’ everything in a couple of hours or immediately become the world’s best prompter.

How?

I asked ChatGPT to create a learning plan for me based on my prior knowledge (basic understanding of HTML, CSS and JS) and goals (learn React), and then progressed with the plan with Claude AI in Cursor. Here’s how it started:

My “understand React” learning plan

It worked very well because:

  • It was based on my then-current abilities
  • Helping me build something useful (everyone who has tried learning React is probably familiar with… tadam, to-do list). And it comes with a tangible, achievable goal (learn all of it)
  • It consists of small, achievable tasks
  • Along the way, I learn what works and doesn’t for my specific tools (like _do not_ ask all the questions in the same chat in Cursor, it decreases the quality of answers)

Current setup:

  • ChatGPT-generated learning plan I can tick off from
  • Claud via chat for coding theory (I started with ChatGPT as I have Pro subscription, but it consistently gives outdated answers, e.g. it’s not aware of Tailwind 4)
  • Cursor for most of the coding
  • Bolt.new for design (I find it considerably better in producing designs than Claude)

It took me a while to understand my reluctance to vibe code, but the further I am in the process, the better I feel about large AI-generated chunks of code. What changed wasn’t the tools — it was how I used them. Once I stopped expecting magic and started focusing on progress, everything got easier.

--

--

Elena Borisova
Elena Borisova

Written by Elena Borisova

Combining data and psychology for product and design decision-making | Head of Design at DeepL | elenaborisova.com

No responses yet