I'm a junior developer trying to become a confident mid-level engineer, ideally within the next six months. Lately, though, I feel like my skills are stagnating because I rely heavily on LLMs. I'm not forgetting basic programming, but I'm less comfortable using libraries without assistance, and I've lost some motivation to study new technologies or understand the tools I already use more deeply.
I often ask an LLM to implement features I've written before, sometimes by providing it with examples from my own code. The result may work initially, but it can duplicate existing functionality, miss the broader architecture, and produce documentation that doesn't fully reflect the project. Maintaining or extending the generated code later can be painful.
This has also triggered a lot of impostor syndrome. I'm delivering work, but I'm not sure whether I'm actually improving or just becoming better at directing an AI. Has anyone else dealt with this? How do you use AI without losing your ability to reason through problems and build software independently?
5 Answers
Be careful with the six-month goal. Becoming genuinely mid-level usually takes longer than a fixed deadline, because it involves judgment, communication, debugging, design, and understanding the wider development process—not just writing code. Look for progress in those areas too: clearer requirements, better tests, smaller designs, stronger reviews, and fewer repeated mistakes. Feeling the gap between completing a task and truly understanding it can be uncomfortable, but noticing that gap is part of improving.
Focus less on memorizing libraries and more on understanding the system you’re building: its domain, architecture, data flow, failure cases, testing strategy, and tradeoffs. AI can suggest an implementation, but you should be able to test it, explain it, simplify it, and fit it into the existing design. Reading other developers’ pull requests and reviewing unfamiliar parts of the codebase can build that judgment quickly.
Use a short, repeatable learning cycle instead of trying to master everything at once. Pick one language or toolchain for two weeks, make one small project or feature, write a brief postmortem after each session, and rebuild one previous task without copying code. Ask for targeted feedback each week and apply at least one suggestion. Consistent deliberate practice is more useful than chasing a six-month title deadline.
Try separating productivity from deliberate practice. Use AI when it helps you deliver, but regularly build small features without it—perhaps one short exercise or module each week. Start with your own design and code, then use AI afterward to compare approaches, find bugs, or suggest improvements. That way you keep learning while still working effectively in an AI-heavy environment.
A useful rule is to attempt the problem yourself first and only ask for help after you can explain what you tried and where you’re stuck. Anything you repeatedly outsource should become the next thing you practice from scratch.
Keep a personal engineering notes file. Record library usage, commands, bugs and their fixes, confusing processes, architectural decisions, and links to useful documentation. Search it whenever you feel like you once knew how to do something. Over time it becomes a practical reference based on your own projects instead of forcing you to ask an AI the same questions repeatedly.

If your team is small or you often work alone, make a point of reading code outside your immediate projects. Lack of review can create silos, so even informal reviews or asking someone to challenge your design can provide valuable experience.