Programadores serão substituídos por inteligência artificial?
Há alguns dias vi um título intrigante no LinkedIn que exibia uma declaração audaciosa: "Empresa Brasileira Quer Aumentar em 50% a Produtividade dos Programadores com o GitHub Copilot". O que tornou a situação ainda mais curiosa foi que o autor do post não era um programador. Apesar da audácia da manchete, acredito que a questão pode render uma análise e uma discussão interessante.
Não há quem não se impressione com o que as ferramentas de IA disponíveis à público hoje em dia podem fazer. No campo da programação, já estão ajudando devs de maneira significativa, otimizando suas rotinas e aumentando sua produtividade. Aliás, tendo ferramentas adequadas, os problemas podem ser resolvidos com uma velocidade maior. Porém, para aqueles que não estão familiarizados com programação, essas ferramentas de IA podem parecer quase místicas, dando a impressão de que elas podem resolver qualquer problema de forma rápida e automática. Mas nós sabemos que a realidade é bem diferente.
O entusiasmo gerado por essas ferramentas é plenamente justificável, e antes de ter uma concepção errada de mim, saiba que sou um deles. No entanto, acredito que nem todos sabem o que essas ferramentas são capazes na realidade. Temos, de um lado, o iniciante na programação, que teme ser substituído por uma máquina. Do outro, o CEO que busca soluções mágicas para reduzir custos ou aumentar a produtividade, talvez sem uma compreensão clara do trabalho que um programador realiza de fato.
Não é bem assim...
"ChatGPT (ou Copilot), crie uma página para vender ingressos de um show em NodeJS. O back-end deve estar pronto para uma média de 2 mil requisições por segundo e resiliente a falhas. Prepare um load balancer para distribuir as requisições entre os servidores distribuídos. Garanta o funcionamento dos caches para reduzir a carga dos servidores. Instrumente ferramentas de monitoramento em tempo real. E óbvio, o banco de dados deve ser clusterizado com uma boa estratégia de replicação."
O exemplo é exagerado, eu sei. Mas ilustra a complexidade por trás da implementação de algo que para alguém que não é programador pode parecer simples. Escrever código é parte do trabalho de um programador, e isso tenho certeza que IAs generativas fazem bem, mas não é tudo que um programador faz.
Nós, programadores, passamos boa parte do nosso dia sem escrever uma linha de código. É preciso antes entender os requisitos de novas funcionalidades, engajando em conversas e ajustes com stakeholders, projetando a arquitetura técnica e, por fim, traduzindo todas essas informações em código. E antes que me esqueça, esse código deve ser escrito em contexto, considerando como ele se encaixa com o restante do código existente no projeto.
O que quero dizer é que essas ferramentas de IA, embora muito úteis, não fazem mágica. Mas podem ser bons assistentes do programador.
Pato de borracha
Uma das leituras que mais ampliaram minha visão em engenharia de software foi o clássico O Programador Pragmático escrito pelos dinossauros (no bom sentido) Dave Thomas e Andrew Hunt. Um dos capítulos fala sobre uma técnica de debug curiosa: o pato de borracha.
A ideia básica por trás do rubber duck programming é explicar o código ou o problema que você está enfrentando em voz alta, como se estivesse explicando a um pato de borracha. Ao verbalizar o problema ou descrever o código passo a passo, você mesmo vai achar uma solução ou ter uma nova perspectiva sobre o problema.
O ChatGPT é muito bom em conversar, e mais, conversar de forma contextualizada. Seria essa inteligência artificial a iteração do pato de borracha de Dave Thomas e Andrew Hunt? Já existem extensões para o Visual Studio Code que integram com o ChatGPT usando-o como pato de borracha, veja.
Gosto de como o GitHub resolveu chamar seu produto Copilot, e isso vai de concordância com o conceito do pato de borracha. A ferramenta tem como objetivo ser um co-piloto e não o próprio piloto. É o assistente do programador, seu rubber duck.
A dura realidade
Essa vai para os que estão ansiosos e preocupados com o futuro da sua carreira em programação: fique tranquilo! Mas nem tão tranquilo, pois a dura realidade é que os fundamentos da engenharia de software é o que fazem um bom programador, e não somente o código.
Com a popularização dos computadores para o público geral nos anos 70 e 80, profissionais de contabilidade e finanças se sentiram ameaçados pelas planilhas eletrônicas. Uma máquina que podia guardar milhares de linhas e colunas e que não errava os cálculos. Quem iria rejeitar isso?
É verdade que as planilhas eram e são poderosas, e de fato ameaçou o emprego dos "escritores de planilha". Porém os que interpretavam os dados, compreendiam o contexto empresarial e a aplicação de conceitos contábeis com certeza souberam usar as planilhas ao invés de criticá-las.
Programadores não são escritores de código. Não tema seu novo pato de borracha, pelo contrário, use-o. E obrigado ChatGPT por ter me ajudado a escrever esse texto.
Esse texto foi originalmente publicado em Debugando.org, publicação para inspirar programadores a escreverem software pra além dos bits. Resolvi trazê-lo para discussão aqui, aproveitando a seção de comentários e a comunidade <3
Fonte: https://debugando.org/ia