Decide the job AI does before you open it. Use it as a tutor, reviewer and sparring partner that explains and challenges, not a vending machine that hands you finished code. Attempt first, ask second, and always be able to explain and defend what you ship.
What people tell me
I use AI for almost everything now: writing functions, fixing errors, explaining concepts. It makes me fast, but when I try to code without it I feel slow and unsure. I do not want to stop using it, because everyone at work uses it too. I just want to make sure I am actually getting better, not just getting better at prompting.
A composite of the messages behind this question, with personal details left out.
Key takeaways
- Try first, then ask. Even ten minutes of your own attempt changes what you learn from the answer.
- Ask AI to explain, question and review, not only to produce.
- Never ship a line you cannot explain. If you cannot, ask until you can.
- Keep regular no-AI practice sessions so you can measure your real skill.
- Use AI output as a draft to be judged, not an answer to be trusted.
Dependence is a habit, not a tool problem
AI does not make you dependent. The way you use it does. The same tool can make one person sharper every month and leave another person unable to write a loop alone. The difference is almost always in when they reach for it and what they ask it to do.
My working rule is simple: I decide what I want to learn from a task before I open the AI. If the task is something I already understand well, I let it do the typing. If the task is something I am still learning, I use it as a tutor, not as a replacement.
The four roles AI should play
| Role | What you ask | What you get |
|---|---|---|
| Tutor | "Explain why this works. What would break if I changed this line?" | Understanding |
| Reviewer | "Review my code. What are the risks and edge cases?" | Better judgement |
| Sparring partner | "Argue against my design. What would a sceptical senior say?" | Stronger reasoning |
| Assistant | "Write the boilerplate for this pattern I already understand." | Speed |
Most people use only the last role. The first three are where the growth comes from.
A workflow that keeps you learning
- Attempt first. Give yourself ten to twenty minutes on any problem that is at your level. Write down your approach, even if it is wrong.
- Ask for hints, not solutions. "Give me a hint about what I am missing" teaches far more than "fix this".
- Compare, do not copy. When you see the AI's version, compare it to yours. What did it do differently, and why?
- Rewrite it yourself. Close the chat and write the solution from memory. If you cannot, you have not learned it yet.
- Explain it back. Write two sentences on why the solution works. If you struggle, that is where to focus.
The explain-it rule
Before any code goes into your project, you should be able to answer three questions about it: what does each part do, what inputs would break it, and why this approach and not another. This rule alone prevents most of the damage people worry about. It also protects you professionally, because in a real team you will be asked these questions in code review.
Measure your real skill regularly
You cannot tell whether you are improving if AI is always in the loop. Once a week, do a short session without it:
- Solve two small problems you have not seen before.
- Debug something using only error messages, documentation and logs.
- Build a tiny feature from scratch in your main stack.
Note how long it takes and where you got stuck. Over a couple of months, those notes are the clearest evidence you have of real progress.
Signs you are becoming dependent
- You paste errors into a chat before reading them.
- You cannot describe how your own project is structured.
- You feel anxious starting any task without AI open.
- You accept suggestions you do not understand because they seem to work.
If you recognise two or more, do not quit AI. Just shift the balance for a few weeks: more attempting first, more explaining back, more no-AI sessions.
Where AI genuinely speeds up learning
Used well, AI is the best learning tool we have had. It can explain a concept five different ways until one clicks, generate practice problems at exactly your level, walk you through an unfamiliar codebase, and review your work at any hour. The goal is not to use it less. It is to use it in a way where you are the one getting smarter.
Prompts that teach instead of do
Here are some prompts I suggest people keep handy, because the wording matters:
- "Do not give me the solution. Ask me questions that lead me towards it."
- "Here is my code. Point out the two most important problems but do not fix them."
- "Explain this function as if to a beginner, then give me a small exercise to check I understood."
- "What would a senior engineer criticise in this design? Be specific."
- "Give me three test cases that would break this code."
Each of these keeps you doing the thinking, while the AI does the part it is best at: explaining and spotting patterns.
An example week
Here is what a healthy balance looks like for someone learning backend development:
| Day | Task | How AI is used |
|---|---|---|
| Monday | Build a new API endpoint | Only for looking up syntax after trying first |
| Tuesday | Write tests for it | Ask for edge cases, then write tests yourself |
| Wednesday | Refactor last week's code | Ask for a review, decide which suggestions to accept |
| Thursday | No-AI session | Solve two problems and debug one issue alone |
| Friday | Read an unfamiliar codebase | Ask AI to explain structure, then verify by reading |
Notice that AI is present most days, but never as the one doing the core thinking.
If you are still stuck
Read How to Use AI as a Companion, Not a Crutch and What to Do When You Are Stuck Learning to Code. If you want help building a learning routine that fits you, join Sefism and, as a member, book a 1:1 session.
Was this answer helpful?
Read next
- How to Use AI as a Companion, Not a CrutchOne rule decides whether AI tools make you faster or hollow you out: use them for work you could do yourself but would rather not, and for work you are actively trying to understand, never for work you cannot evaluate. Where they genuinely excel, where they quietly damage your skills, and the verification habits that separate engineers who benefit from those who accumulate debt.
- What to Do When You Are Stuck Learning to CodeThere has never been more good material for learning to program and the failure rate has not improved, which tells you the bottleneck is not access to explanation. It is that watching someone else solve a problem feels exactly like learning and is not. Sixteen heuristics for the first year, mostly about what to do at the point where you are stuck.
Your situation is not quite this one?
Members get written answers to their own questions, a roadmap built for them and feedback on their projects. Early access is open to X and Instagram followers and university students. Prefer to talk? A free call works too.