Should you use them?
Depends on your purpose.
I built an MVP at work recently. It was essentially a static website, with some interactive UI components. The details aren't so important, but for a front-end heavy app, AI is actually indispensable.
Don't get me wrong, the code quality is very low, but you don't really care about that with MVPs.
If you're programming for the joy of it, then probably no, you shouldn't use AI. It'll just take away your joy, right?
If your goal is to learn something, then probably not. You'll learn far less when reading the AI's "solution."
If your goal is to ship features, then you probably should. It lets you do far more in less time. I've been playing around with Claude Code, and it's getting pretty good. The boilerplate and annoying stuff (like adding in translations) go without saying. But it's also getting pretty good at doing non-trivial stuff. You have to be careful about it going on tangents and generating rubbish spaghetti code.
What you shouldn't do, is generate stuff you don't understand. It's almost the same as vibe coding, where you choose not to understand the code. Both are bad (unless you're making an MVP). If you can't understand something, then you can't maintain it. You can't reason about the pros and cons of your approach. You can't reliably fix bugs when stuff goes wrong.
How should you use it?
I guess this answer will eventually trend to use them "all the time" as the models and tooling gets better.
But for now, my workflow that's been working well goes like this:
- Figure out what I need to do.
- (When unsure, ask AI if my approach is sound, and for better alternatives).
- Once I have a solid idea for the implementation, prompt the coding agent to write out my exact solution.
- (If applicable, get it to generate some tests).
Summary
- For throwaway code, AI is indispensable.
- Don't use it for learning, or when programming for fun.
- For shipping stuff quickly, use it with restraint.