I vibe coded this entire electron app to help me browse, catalog and download files from Archive.org. It’s worked pretty incredibly, but a lot of the details are hard to get just right. I think if I had stayed in the drivers seat rather than just vibe coded and not read any of the code, I’d be more prepared to deal with a bunch of inefficiencies in how it deals with where it stores data, pagination (which is like a bizarely universally hard problem)[/pagination-is-really-hard.md]. Instead I just keep saying “It’s slow make it fast!” or “Why is this piece of data I expect to be here not here!” ‘Why does clicking the delete button not ‘delete’ in the UI’. This works, basically, but because caching and pagination and other technical details are hard problems, I think it helps to know how the LLM decided to implement them, so you know where to go and ensure you don’t prompt it in ways that go in the wrong direction.

The most important principal I’m trying to confer here is:

If you’re not in the drivers seat, put the keyboard down.

I think there’s a narrow but critical gap between flow and mindlessness and I think it’s easy to flop over. I think that all the “You should use AI Agents this way” arguments some of the psychological steps which is how do you stay in the drivers seat? And I think one of the ways you stay in the drivers seat is to continue to write code. A few recommendations I’m taking from my own experience:

Bionics Robotics.

  • For your main code bases, don’t have an agent do full-stack multi-file changes. Instead have it do one or the other:
  1. Find where the code should go, read that code to get a broad sense of what it does to stay familiar, and then prompt the agent to change it, maybe one file at a time.
  2. Ask the agent where the change should be made and change it.

Balance three things:

  • ~70% Stay in the driver’s seat. AI can generate code, but more in the style of autocomplete, figure out what it’s changing and why, maybe direct it where to make the change.
  • ~20% AI Generate tools, libraries, etc.
  • ~10% Vibe Code proof of concepts.

The balance of how much AI vs how much manual code should shift over your career - more manual as you’re learning, more AI as you get higher level, but. for instance - One way I stay current is doing a quick google search and browsing observability tools every time someone pastes a weird error or bug into Slack. Learning is often about intentional friction. The best engineers have always gone one step deeper than they need to.