AI can save me a significant amount of time on some programming tasks. It can also waste time and leave me with code I do not understand.

I’ve used these tools regularly for several years across different parts of the stack. The main risk I see is not code quality by itself. It is the loss of technical context.

A developer who understands a complicated codebase will usually outperform someone who does not, even when the second developer has more general experience. Frameworks, conventions, and documentation help, but they do not replace the mental model built by working in the system.

Heavy AI use can skip that work. The model writes the code, so you never build a full understanding of the decisions behind it. When the code fails, you need the same tool to explain and repair it. Sometimes it cannot.

This creates a leaky abstraction between you and your own code. The abstraction is convenient until it leaks. Then you have to understand everything underneath it without having learned it along the way.

I try to limit that risk with a few rules:

  1. Use AI for small, focused changes.
  2. Use it for work I could complete myself and already understand.
  3. Review every change closely enough to fit it into my model of the system.
  4. Form an opinion before asking AI to compare architectural options.
  5. Verify research and technical claims outside the model.

These rules reduce some of the speed benefit. That is the point. I want AI to help me move faster without letting it replace the understanding I will need later.