I'm a full-stack developer, and my company recently provided the team with a Claude license to increase productivity. Since then, I've been using Claude Code throughout our projects and writing noticeably less code myself.
For example, our application has many model classes representing database relationships. Previously, I would run generation commands, read the framework documentation, inspect related models, and manually define the relationships and attributes. Now I can describe the task to Claude and it usually creates the model classes correctly. It also handles controllers, request validators, and other framework-specific boilerplate well, often reducing work that used to take hours to a few minutes and some prompt iterations.
I don't blindly accept its output. I review every diff, check the documentation, test the changes, and only approve code I understand. However, I'm increasingly spending more time reviewing AI-generated code and less time writing code from scratch.
Is this a sensible way to work, or am I allowing my skills and understanding to deteriorate? If an employer expects developers to use AI tools, what does a responsible workflow look like?
4 Answers
This is reasonable as long as you remain accountable for the result. The important part is that you review the changes, understand them, test them, and can explain why they are correct. The job is shifting away from typing boilerplate and toward planning, judgment, architecture, and reviewing implementation. Using the tool is not the problem; approving code you cannot understand is.
Think of Claude as a delegation layer or an extremely fast pair programmer, not as the owner of the codebase. It is excellent at boilerplate, repetitive transformations, searching through context, explaining unfamiliar APIs, and suggesting debugging paths. It is much less reliable at long-term design decisions and anticipating how requirements will evolve. Let it do the mechanical work, but keep control of the problem definition, architecture, trade-offs, and final approval.
Use AI heavily for repetitive code, straightforward refactors, migrations, debugging, and framework boilerplate. Be more cautious with architecture and novel feature work. Break larger features into small, well-defined pieces, agree on the design with your team first, and then have the tool implement those pieces. Smaller changes are easier to review and test than asking it to produce an entire feature in one pass.
It also helps to discuss the database schema and core design before generating models or services. A strong foundation gives the tool much less room to make expensive assumptions.
For anything that can be generated deterministically, prefer an actual generator, migration, script, or framework command. AI should orchestrate those tools rather than recreate their output manually. That usually gives you more consistent results, fewer mistakes, and lower usage than asking a model to reproduce known boilerplate from scratch.
Exactly. I’d put the project conventions and approved commands in the team instructions so the assistant knows when to call a generator instead of inventing equivalent files.

The main thing I would watch is whether you could still debug or modify the code without the tool if necessary. If you can, you’re using it to increase leverage rather than outsourcing your understanding.