Impacto da Inteligência Artificial no Desenvolvimento de Software
Nos últimos tempos, houve uma explosão no uso de ferramentas baseadas em inteligência artificial, dando a impressão de que essa tecnologia surgiu do nada. Mas a verdade é que a IA não é um conceito novo. Lembro bem de quando era estagiário, lá em 2006, e já discutíamos sobre buscas semânticas e a Web 3.0, numa época em que a Web 2.0 ainda estava se consolidando e as big techs expandiam seu domínio.
O hype atual pode parecer recente, mas a pesquisa sobre inteligência artificial remonta à década de 1950. Então, o que mudou para causar essa avalanche de ferramentas e aplicações?
O processamento. Antes, a IA dependia de CPUs convencionais, que executam instruções de forma sequencial e simulam paralelismo por meio de escalonamento e troca de contexto. Hoje, com a evolução das GPUs (e aqui, vale um agradecimento especial aos gamers), o processamento ocorre em larga escala por meio de grandes matrizes matemáticas, acelerando tanto a criação de modelos quanto o tempo de resposta dos sistemas.
Além disso, com avanços nos modelos matemáticos para processamento de linguagem natural, como os baseados em proximidade de cossenos, uma abordagem comum no processamento multidimensional de vetores, surgiram ferramentas inovadoras como ChatGPT, Copilot e muitas outras.
Tudo isso parece incrivelmente promissor, certo? Mas quais são os desafios que essas ferramentas podem trazer para o desenvolvimento de software?
Como em qualquer tecnologia disruptiva, o uso excessivo ou a aplicação inadequada pode gerar consequências indesejadas. Quero abordar aqui dois pontos que já começam a levantar preocupações entre os profissionais da área: o impacto na qualidade do software gerado com IA e as implicações no desenvolvimento profissional dos engenheiros de software, especialmente quando há delegação excessiva de tarefas para essas ferramentas.
A queda na qualidade do código
Pesquisas recentes mostram que, apesar da aceleração na entrega de código, houve também um declínio significativo na qualidade. Um dos principais indicadores dessa deterioração é o churning de código, que mede a frequência de alterações em um mesmo trecho de código. Estudos indicam que códigos gerados por IA generativa podem ter até 63% de chance de introduzir erros, além de frequentemente conter inconsistências e deixa “lixo” no código.
Churning de código: Um sinal vermelho
O churning de código reflete um alto índice de mudanças repetidas em um mesmo trecho de código em um curto espaço de tempo. Mas por que isso indica um problema? Porque significa retrabalho.
Vários fatores podem contribuir para esse cenário:
- Dificuldade do engenheiro em compreender corretamente o problema de negócio;
- Falta de experiência técnica para estruturar uma solução eficiente;
- Problemas de comunicação entre a equipe e o cliente;
- Código mal estruturado, dificultando a manutenção e a leitura.
E como isso afeta a qualidade? Se olharmos para os princípios do SOLID, o “O” (Open/Closed Principle) sugere que um bom design de software permite a adição de novas funcionalidades sem modificar código já existente. Já o “S” (Single Responsibility Principle) defende que cada classe deve ter uma única responsabilidade. Se um código sofre mudanças constantes, é um sinal claro de que está mal estruturado e precisa de refatoração.
Além disso, quanto mais complexo e ilegível for um código, maior será a chance de interpretá-lo errado, introduzindo bugs e aumentando ainda mais o churn. Ou seja, churn alto é um indicador de alto risco no desenvolvimento de software.
IA e a aceleração do churning
De acordo com o benchmark da CodeScene, descrito no artigo “Refactoring vs. Refuctoring: Advancing the State of AI-Automated Code Improvements”, a programação assistida por IA exige um rigor ainda maior em práticas como testes de unidade e code review.
Se antes já era essencial validar códigos escritos por outros desenvolvedores, agora é ainda mais crítico revisar códigos gerados automaticamente. O perigo surge quando o desenvolvedor confia cegamente na IA sem validar a lógica do código gerado.
Outro risco surge quando o profissional passa a delegar por completo tarefas essenciais, como design de software, raciocínio lógico e entendimento dos requisitos de negócio. Estudos indicam que essa dependência pode levar à erosão do pensamento crítico, da capacidade de resolver problemas e da tomada de decisões, além de enfraquecer habilidades de comunicação.
Assim como um músculo que atrofia sem uso, o desenvolvimento técnico exige prática contínua. Se um engenheiro de software terceiriza completamente suas decisões para a IA, perde a chance de aprender, refinar seu repertório técnico e desenvolver habilidades essenciais. Isso pode comprometer sua carreira a longo prazo e vale lembrar que, mesmo após as demissões em massa em 2024, o mercado de tecnologia segue demandando especialistas.
A IA vai “emburrecer” os profissionais?
As ferramentas de IA vão substituir os desenvolvedores? Não inteiramente. Como disse o Dr. Miguel Nicolelis, “inteligência artificial nem é inteligente, nem é artificial”. No fim das contas, estamos lidando com modelos estatísticos que reconhecem padrões, não com entidades pensantes.
No entanto, para quem já possui uma base técnica sólida, a IA pode ser uma aliada poderosa para aumentar a produtividade e acelerar processos. O problema não está na ferramenta em si, mas no seu uso inadequado.
Minha experiência com ferramentas de IA
Ao utilizar ferramentas generativas, percebi que muitas vezes precisava refinar manualmente o que era produzido. Em diversas ocasiões, o conteúdo gerado pela avaliação da IA não capturava ou desvirtuava exatamente o que eu queria transmitir.
Você pode argumentar: “Ah, Manoel, talvez o problema fosse seu prompt!” Mas não era o caso. Mesmo com instruções detalhadas, a IA frequentemente apresentava respostas imprecisas ou desviava do objetivo. Além disso, desafios como viés e alucinação ainda são problemas persistentes.
Isso mostra que, apesar do enorme avanço, essas ferramentas ainda não substituem completamente o olhar crítico e a experiência de um profissional qualificado.
Conclusão
Ferramentas de IA são incríveis e podem potencializar a produtividade de desenvolvedores experientes. Mas precisam ser usadas com critério. Elas devem complementar o trabalho humano, não substituí-lo.
O uso irresponsável pode gerar código de baixa qualidade e prejudicar o desenvolvimento profissional dos engenheiros de software. Para quem deseja se destacar na área, a IA deve ser vista como um apoio, e não como uma muleta.
O próximo grande rompimento tecnológico
Vivemos uma revolução com a inteligência artificial, impulsionada pelo avanço das GPUs e do processamento matricial. Mas o que virá depois?
O próximo grande avanço provavelmente será a computação quântica. Assim como a IA, a computação quântica não é uma novidade, suas bases teóricas foram formuladas há décadas. No entanto, ainda não atingiu um nível de viabilidade comercial ampla. Quando isso acontecer, poderemos ver uma nova transformação tecnológica, com impactos profundos em áreas como criptografia, simulação de materiais e otimização de sistemas complexos.
Mas essa revolução também trará desafios. Já existem pesquisas em andamento para lidar com os impactos negativos da computação quântica, como os chamados algoritmos quantum-proof, sistemas de criptografia resistentes a ataques de computadores quânticos. Afinal, quando essas máquinas atingirem um nível prático, podem tornar obsoletas muitas das técnicas de segurança digital que usamos hoje.
Ou seja, a história se repete: assim como tivemos que nos adaptar à IA, também teremos que nos preparar para o impacto da computação quântica. Mas essa é uma discussão para um próximo artigo. 😉
Bibliografia:
- https://codescene.com/hubfs/whitepapers/Refactoring-vs-Refuctoring-Advancing-the-state-of-AI-automated-code-improvements.pdf
- https://www.gitclear.com/coding_on_copilot_data_shows_ais_downward_pressure_on_code_quality
- https://arxiv.org/abs/2404.06955
- https://slejournal.springeropen.com/articles/10.1186/s40561-024-00316-7
- https://arxiv.org/abs/2404.06955