IA e Desenvolvimento de Software

Publicado em

Connections

Se você passa algum tempo acompanhando discussões entre desenvolvedores hoje em dia, é impossível evitar o tema do desenvolvimento assistido por IA. Desde ferramentas de geração de código até Copilots completos que prometem construir aplicações inteiras, a narrativa geralmente é algo assim:

“As pessoas vão apenas descrever o sistema e a IA vai construir tudo. Não vai mais precisar aprender a programar”

Como quase sempre acontece, a realidade tem um pouco mais de nuance. Tenho usado essas ferramentas ultimamente, e minha opinião geral é simples:

Elas são incrivelmente úteis, mas não “resolvem” a engenharia de software.

Nos estágios iniciais de um projeto, é impressionante. Se você tem uma ideia e quer transformá-la em algo utilizável, a IA praticamente resolve o seu problema. Você descreve o conjunto de funcionalidades, refina o que a ferramenta devolve e em pouco tempo tem algo que realmente funciona.

Isso é extremamente valioso. Na prática, torna a ideia do Lean Startup muito mais viável para experimentos técnicos.

Já existiam algumas ferramentas e frameworks que ajudavam nisso, como o Rails com seu scaffolding, ou o JHipster com geração de CRUD. Mas a IA está em um nível completamente diferente, e as coisas anteriores não chegam nem perto.

Busca é outro ponto onde ajuda muito. Poder trocar ideias e procurar respostas quando você nem tem certeza de qual é a pergunta certa é algo fantástico. Você pode perguntar coisas como: “Meu problema é X e Y, existe algo que ajuda com isso?” e a ferramenta responde “o que você está procurando é Z”. A partir daí você pode se aprofundar e aprender sobre Z.

É excelente.

Onde as coisas ficam mais difíceis

As coisas mudam quando o problema sai do nível de scaffolding e entra na complexidade do mundo real. Quando um sistema cresce o suficiente, as partes mais difíceis raramente envolvem escrever código novo. Em vez disso, envolvem coisas como debugar comportamentos inesperados em produção ou entender lógica legada em sistemas antigos.

A IA ajuda com busca semântica, mas muitos dos detalhes mais complicados ainda precisam ser resolvidos manualmente.

Em alguns cenários, você pode investigar o problema, descobrir a causa, construir uma camada de interface e pedir para a IA ajudar a escrever a solução separadamente. Isso funciona bem. Nesse tipo de fluxo você usa seu conhecimento para definir os limites da solução e a IA para gerar o código mais rápido.

No entanto, não acho que o “escrever código” era o gargalo antes.

Problemas complexos exigem contexto e compreensão do sistema, coisas difíceis de comprimir em um prompt. Às vezes você leva mais tempo escrevendo um prompt extremamente detalhado do que levaria resolvendo o problema diretamente. Às vezes, usar IA demais acaba até deixando desenvolvedores mais lentos.

Um Novo (Velho?) Equilíbrio

Dito tudo isso, a IA realmente muda o dia a dia dos desenvolvedores. Algumas tarefas ficam mais rápidas, validar ideias fica mais barato e mostrar algo funcionando ficou muito mais fácil do que antes, e isso é muito bom.

Por outro lado, eu realmente não entendo essa história de “você precisa estudar IA ou ficará para trás”. Se você já sabe programar, usar ferramentas como OpenCode, Claude e alguns plugins não é nada difícil. A facilidade é justamente a proposta da coisa.

A IA ajuda muito, mas engenharia de software continua existindo. Não vejo isso desaparecendo tão cedo, e tenho a sensação de que, quando esse momento chegar (se chegar), basicamente todos os outros empregos de escritório já terão desaparecido antes.

Ou talvez não. Não sei. Eu não sou futurologista.

Comentários

Sinto que os comentários em blogs têm diminuído com o passar do tempo. Se você tiver alguma dúvida ou quiser falar sobre o post, entre em contato comigo pelos links abaixo.