A inteligência artificial aprendeu a programar. Os programadores serão substituídos?
Fiz a seguinte solicitação ao ChatGPT: "crie uma classe em java para programar um aplicativo para Android que pede ao usuário sua data de nascimento e retorna a idade em anos, meses e dias". Em poucos segundos ele me deu o código fonte da classe que ele chamou de AgeCalculatorActivity. Lá estavam todos os imports, variáveis e métodos. Nomes criados de acordo com as melhores práticas de programação, uso de herança, tratamento de exceções etc. Podemos então dizer que em breve não precisaremos de programadores?
Vamos voltar um pouco no tempo. Já ouviu falar de Computer Aided Software Engineering (CASE)? Há décadas as ferramentas CASE prometem automatizar o desenvolvimento de software, inclusive gerando código fonte. Voltando aos dias atuais, mais precisamente na semana passada, atualizei meu Android Studio (ambiente de desenvolvimento integrado do Google para desenvolvimento de aplicativos para Android) para a versão JellyFish e percebi um recurso novo. Dentro do Android Studio posso iniciar um chat com a Gemini sobre meu código. Gemini é IA do Google para auxiliar os programadores enquanto programam, ou coding companion (algo como um "companheiro" de programação). Seria um tiro no pé?
Ada Lovelace é tida como a primeira pessoa a escrever um algoritmo, no longínquo ano de 1842, um século antes do primeiro computador ser inventado. Era um trabalho teórico, claro, mas era um algoritmo. Vale dizer que a programação dos primeiros computadores digitais na década de 1940 era feita basicamente por mulheres.
Se antes os computadores eram enormes, limitados e falhos, hoje somos cercados de dispositivos computacionais e lidamos com software desde o momento em que acordamos com nosso despertador no celular até quando ligamos o motor de nosso carro, um popular mesmo, que tem software rodando desde o sistema de injeção de combustível até o sistema de frenagem (ABS, obrigatório no Brasil).
E o que faz um programador? Bem, ele ou ela programa computadores. São pessoas que dominam uma linguagem de programação, entendem bem o que é um computador e as tecnologias envolvidas e escrevem seus códigos. Mas se o ChatGTP sabe escrever código-fonte em qualquer linguagem de programação, então por que precisamos de programadores?
Robert Martin, em sua célebre obra Clean Code, diz que o programação é o ato de transformar os requisitos do cliente em uma linguagem que possa ser compreendida pela máquina. Neste sentido, a programação não mudou muito. Na verdade nem mesmo as linguagens de programação evoluíram muito da década de 1980 para cá, quando surgiram as linguagens orientadas a objetos. E o fato é que a indústria de software ainda falha enormemente com prazos, orçamento e qualidade. Existe uma longa jornada entre entender as necessidades do cliente e de fato entregar uma solução que as atenda. Chamar um programador de "engenheiro" de software não faz com que ele construa um sistema com a precisão que um engenheiro civil projeta um edifício. Na engenharia civil os cálculos necessários para a construção das estruturas não são ambíguos, não permitem interpretações. O mundo tangível da engenharia civil não permite erros (Cícero e Heitor tentaram fazer casas com palha e madeira e sabemos bem que fim as casas levaram).
Robert Martin, em sua célebre obra Clean Code, diz que o programação é o ato de transformar os requisitos do cliente em uma linguagem que possa ser compreendida pela máquina.
Até a década de 1960 havia apenas alguns milhares de programadores no mundo. Na década de 1970 esse número explodiu para centenas de milhares. Hoje (2024) são mais de 20 milhões. Eu mesmo, que aprendi a programar no final da década de 1990, fiquei em dúvida sobre futuro da profissão quando na metade dos anos 2000 conheci o GeneXus, ferramenta CASE que permite criar softwares sem precisar digitar uma linha de código sequer. Pensei: essas ferramentas vão evoluir a ponto de não ser necessário programar. Pois bem, eu estava muito enganado. A tecnologia segue evoluindo num ritmo vertiginoso, ao passo que os equipamentos ficam cada vez mais baratos e populares. Precisamos de MUITO software. E precisaremos de cada vez MAIS software. Se por um lado a tecnologia fica cada vez mais simples para o usuário, a complexidade por trás do desenvolvimento, manutenção, evolução e integração de tudo isso é gigantesca. Se antes um único programador, o herói, dava conta de todo o trabalho, hoje temos projetos de software com um número incontável de desenvolvedores, desde o analista de negócio que inicia o processo com o cliente ao testador de software, passando por arquitetos, designers, SQA, administradores de bancos de dados etc.
O desenvolvimento de software não é uma ciência exata só porque o curso de "ciência" da computação é classificado como tal. Temos muitos desafios relacionados ao comportamento humano, liderança, problemas de comunicação e etc. Sobre os problemas de comunicação, considere que linguagens de programação, sob muitos aspectos, são semelhantes a linguagens humanas. Na ficção científica é lindo ver pessoas usando softwares para traduzir em tempo real o que estão ouvindo em outro idioma. Pois bem, se temos tradutores são bons como o Google Tradutor e tecnologias de reconhecimento de voz tão precisos como Siri, Alexa e Google Assistant, por que precisamos de tradução simultânea feita por humanos? Sugiro fazer um rápido teste. E, não, eu não copiei isso de nenhum lugar, eu acabei de inventar. Abra o Google Tradutor e digite um recado tão simples quanto:
Douglas, hoje de manhã sua cunhada ligou e pediu para você deixar o dinheiro do aluguel sem falta
Recado simples e direto, certo? Traduza para inglês:
Recomendados pelo LinkedIn
Copie o texto gerado em inglês e faça a tradução para outro idioma qualquer, como coreano:
Copie o resultado gerado em coreano e faça mais uma tradução para, digamos, russo:
Agora copie a tradução gerada e traduza de russo para português:
O resultado, de volta ao português, ficou:
Douglas, minha cunhada me ligou esta manhã e me disse para abrir mão do aluguel como de costume
Perceberam o que aconteceu? O recado "sua cunhada" mudou para "minha cunhada". Já não estamos falando da mesma pessoa!. E o mais grave: "pagar o aluguel" ganhou o sentido oposto: "abrir mão do aluguel"! Mudou completamente o sentido! (disclaimer: no ChatGTP o teste não vai funcionar pois ao invés de traduzir ele vai simplesmente recuperar a frase original). Se com toda a tecnologia do Google não conseguimos traduzir um simples recado para três idiomas sem deturpar completamente o sentido, será mesmo que a inteligência artificial vai retirar os programadores de cena e traduzir as necessidades dos clientes em aplicativos? Não. A inteligência artificial pode sim, ser uma excelente companhia. Precisamos dela. E quanto mais delegarmos tarefas automatizáveis para os algoritmos, mais tempo temos para nos dedicarmos ao que realmente nos diferencia enquanto seres humanos: nossa humanidade.
E quanto mais delegarmos tarefas automatizáveis para os algoritmos, mais tempo temos para nos dedicarmos ao que realmente nos diferencia enquanto seres humanos: nossa humanidade.
Quem já estudou o básico de computadores sabe que no final temos algo tão simples, mas tão simples, quanto zeros e uns. O termo "inteligência", inclusive, é questionado por muitos. Os computadores são "burros" no sentido de que apenas diferenciam sim e não, perfurado e não perfurado, magnetizado e não magnetizado etc. Eles ganham de nós na escala em que obtêm os dados, processam e devolvem resultados. Ou seja, na força bruta. Se o que fazemos é tão simples que uma máquina "burra" consegue fazer, talvez devamos sim fazer outra coisa ou fazer de outra forma. Algo mais humano.
Que sejamos mais humanos.