You're the Navigator. The AI Is the Driver. Sit Down.
Here is the mental model that finally made building with AI click for me:
You are the navigator. The AI is the driver.
You know where you want to go. You know why. You know what "arrived" looks like. You can read the map, spot the wrong turn, and call the destination off if the roads are bad.
The AI actually operates the vehicle. It knows the roads. It knows how to drive on them. It doesn't know where you want to end up unless you tell it, and it doesn't care whether the destination is good — it'll just drive there.
Get this backwards and you end up in a ditch.
What "in control" actually means
A lot of people, when they first start using AI to build, expect that they're just going to tell the AI what they want and the AI will handle everything, including deciding what "what they want" actually is.
That never works. Not once, not for anybody, not for me.
Being in control means:
- Deciding what to build and what not to build
- Deciding when a feature is done
- Deciding what "good enough" looks like
- Deciding when to throw work away
- Deciding what to prioritize when you can't do everything
- Deciding when the AI's suggestion is wrong for your specific situation
None of those are technical decisions. All of them are yours. The AI cannot make them for you, and if you let it try, you get an app that's technically fine and completely soulless.
What "not in control" looks like
You are not in control of:
- How the code actually gets written
- Which libraries get used behind the scenes
- The specific way a database gets structured
- The dozen little decisions the AI makes to translate your intent into functioning software
That's the driver's job. You don't need to know how the transmission works to get to your destination. You just need to notice when the car is going the wrong way and say something.
The moment you try to grab the wheel — try to dictate implementation details you don't understand — you make things worse. Everything gets slower. The AI gets confused because you're overriding decisions with instructions that don't quite fit together. You break more than you build.
Trust the driver on driving. Own the navigating.
The mistake I made for months
For a while, I thought being "involved" meant getting into the weeds of the code. I'd read the code, not understand it, and start telling the AI to change things I didn't really understand. The results were, in a word, tragic.
Once I switched to describing what I wanted the end result to be — in plain English, from the user's point of view — instead of trying to tell the AI how to build it, everything got easier. Faster. Better.
Not because I'd learned more code. Because I'd stopped pretending to be someone I wasn't.
What good navigating sounds like
Bad: "Add a useState hook in the header component that tracks the—"
Good: "When someone clicks the little menu icon in the corner, I want a menu to slide down. On mobile only. When they click anywhere else, it should close."
Bad: "Refactor the auth flow to use—"
Good: "Right now, when someone signs up, they don't get an email. I want them to get a welcome email with a link back to the site."
You're not being lazy. You're being clear about the destination and letting the driver figure out the roads.
When to step in
You do step in when:
- The AI is heading somewhere you didn't ask to go
- The result doesn't match what you asked for
- The AI is doing something destructive (deleting things, resetting things) that you didn't approve
- Something feels off about the approach, even if you can't fully articulate why
That last one — the "feels off" — is real. Trust it. You've spent decades developing a nose for when something is wrong. It works here too.
The takeaway
You are in charge of what and why. The AI is in charge of how.
Stay in your lane, let the driver drive, keep your eyes on the map — and you'll end up somewhere real. Try to do everyone's job at once and you'll end up parked on the side of the road at 2am, arguing with your phone about semicolons.
Ask me how I know.