I'm a self-taught developer with a civil engineering background and a little over three years of professional software experience. Until recently, I mostly used language models like a faster alternative to searching documentation. After moving into a more senior role at a software house, I started using agentic workflows because of tight deadlines, frequent project changes, and strong pressure to deliver quickly.
I helped define the agent rules for my team, and much of our current project is AI-generated. The agents follow strict conventions for file structure, naming, tests, API documentation, and other quality requirements. Producing the same result manually would take me several times longer, especially in frameworks and syntax I'm still learning.
The productivity boost is significant, but I'm worried about the tradeoff. I feel less familiar with the codebase than I normally would be, code reviews are becoming harder, and much of my time is spent supervising agents and reviewing AI-generated code at a fairly high level. I'm concerned that I'm becoming less sharp rather than continuing to grow as a developer.
Outside work, I've tried reading technical books and learning tools such as Go and LangChain, but I've been jumping between topics and feeling burned out. I also don't have much energy for structured learning during vacations.
How do you stay sharp and continue improving while using AI heavily? Is this simply the new normal for software development, or am I relying on these tools too much?
4 Answers
The important distinction isn’t whether AI wrote the code; it’s whether you understand and can take responsibility for the result. Read the documentation for the APIs and frameworks you use, investigate unfamiliar patterns, and spend deliberate time hunting for bugs and edge cases. Treat generated code as a draft that needs engineering judgment, not as something to accept because it passes a quick review.
Some skills will naturally become less important when tools automate them. That has happened repeatedly as programming languages, libraries, IDEs, and other abstractions improved. The skills worth protecting are understanding requirements, system design, debugging, testing, reading unfamiliar code, and knowing when a solution is unsafe or overly complicated. Use AI for speed, but keep ownership of those decisions.
My concern is that earlier in a career, writing code was also how people learned those deeper skills. I don’t want to become someone who can produce features with AI but can’t grow into a stronger engineer.
You may be using AI in a way that optimizes for output while removing too much of the learning loop. Try adding deliberate friction: write a design or rough solution before asking for implementation, predict what the agent will produce, request explanations for unfamiliar sections, and occasionally implement a small feature manually. You don’t need to abandon AI, but you should make sure you are still practicing the parts of development you want to retain.
It also helps to review generated changes by behavior and risk rather than only by formatting or file structure. Ask what can fail, what assumptions were made, and how the code behaves under unusual inputs.
A small project built without AI can help keep your problem-solving muscles active. It doesn’t need to be impressive—a command-line utility, toy game, or weekend experiment is enough. The point is to work through the design, implementation, and debugging yourself without deadline pressure or an agent filling in every gap.
That makes sense. I’ve noticed that small games and side projects are much more engaging for me because I’m still making the decisions instead of supervising generated code.

Blindly rejecting AI output is just as unhelpful as blindly accepting it. The useful skill is being able to inspect the code, understand its assumptions, and decide whether it belongs in the system.