I was against coding with AI. Took me too long to come around

| 3 minutes read

For a long time I turned my nose up at this whole thing. I thought it was laziness dressed up as innovation. A fancy way of asking a tool for code, copying, pasting into the project and pretending that was software engineering.

I still think that risk is real. Using AI without understanding what’s being done is dangerous.

Accepting code without reviewing, without testing, without being able to explain what changed, is an elegant recipe for technical debt with a futuristic coat of paint.

But my view changed after I started actually using these tools, not as a crutch, but as part of the development process.

That’s when I remembered something from my first jobs, over 20 years ago.

I worked with guys who coded without Google, without Stack Overflow, without autocomplete, without decent documentation open in another tab. I’d hear that and think: “what a miserable existence that must have been.” With all due respect.

But those guys were good. The limitations of the tool didn’t automatically make them better developers, technical suffering isn’t a virtue in itself, but it didn’t stop them from being excellent either. They knew how to think, how to investigate a problem, how to debug strange behavior. The tools were worse, but their brains were on.

Today I see the same reaction from people watching developers use AI: “that’s not real programming.” I get it, because I thought the same thing. But when we moved from bare terminals to IDEs, when autocomplete appeared, when people stopped memorizing everything and started Googling, someone said the same thing. The name changes, the pattern is the same.

The problem was never the tool. It’s stopping to think.

AI-assisted development done badly is outsourcing your reasoning. It’s accepting code you don’t understand, opening a pull request without being able to explain what changed, dumping complexity into the system and leaving the bomb for the next developer. That’s not productivity, it’s technical irresponsibility with a modern interface.

AI-assisted development done well is different. You know what you want to build, you use the tool to speed up parts of the process, generate a first draft, compare approaches, write tests, refactor faster. But in the end you review, test, adjust, understand and take responsibility. Because the one making the commit is you. And commits don’t lie.

AI can accelerate good developers and mask bad ones. A good developer using AI can review better, question the output, spot inconsistencies. A weak developer using AI just produces more bad code faster. That’s the real risk, not AI writing code, but code written without understanding reaching the repository faster.

The question shouldn’t be “is using AI real programming?” The question is: do you understand what you’re shipping?

You can write everything by hand and still produce garbage. You can use AI and ship something well thought out, tested and maintainable. The tool doesn’t absolve anyone.

I was against it. Now I think I took too long to take it seriously.

Lead the tool, or be led by it.

← Updated job_finder to run LLM locally | Eu era contra programar com IA. Acho que demorei demais →