I've been learning programming for a few months and started relying on AI whenever I got stuck. It was useful at first because I could describe a problem and get working code almost immediately. But when I tried building a small project without AI, I got stuck on something basic and realized I understood what the finished code should look like, but not how to arrive at it myself. I had been avoiding the difficult parts: debugging, reading documentation, tracing errors, and sitting with a problem until it made sense. I don't want to stop using AI completely, since it can be genuinely helpful, but I need some boundaries. How are other people using AI as a learning tool without letting it do the actual learning for them?
4 Answers
The uncomfortable part is usually where the learning happens. Try working on a problem independently for a while first: read the error, inspect the relevant code, search the documentation, and form a theory about the cause. If you use AI immediately, you skip the process of building those instincts. It can be useful afterward to check your reasoning or explain a concept, but you should still be able to describe why the fix works.
Use AI as a tutor rather than a code vending machine. Ask it to explain a concept, point you toward relevant documentation, create practice exercises, or give you hints one step at a time. Avoid asking it to solve an error outright. A good rule is that you shouldn't move on until you can explain the bug, the fix, and how you would recognize a similar problem next time.
There is also an argument for using AI strategically once you have the basics. In real development, it can save time on routine code, and knowing how to plan, verify, test, and maintain the result matters a lot. The important distinction is whether AI is helping you complete work you already understand or carrying you through concepts you haven't learned yet. For unfamiliar material, solve smaller exercises without it so the fundamentals become yours.
A practical workflow is to write your own solution first, then ask AI to review it for bugs, edge cases, or unclear design choices. You can also have it generate tests, documentation, or diagrams, but review everything it produces because it can be confidently wrong. For learning, make yourself rewrite the solution from memory or explain each function in your own words instead of simply copying the response.

That makes sense. I think I was treating a correct-looking answer as proof that I understood it, instead of testing whether I could explain or reproduce the solution myself.