Pular para o conteúdo
Um homem programando em par com um robô representando a inteligência artificial
Inteligência Artificial

Programando em par com a Inteligência Artificial

#AI#artificial#IA#inteligência#inteligência artificial#pair programming

Por Avelino Ferreira Gomes Filho

Publicado em Atualizado em 9 min de leituraK21

O trabalho em par é uma técnica muito interessante para passagem ou criação de conhecimento. Como o nome diz, são duas pessoas trabalhando juntas para resolver um problema. O objetivo pode variar:

Programação em par. Um homem com as mãos sobre o teclado e ao lado dele uma mulher apenas olhando para o computador.
  1. Transferir conhecimento: no seu time há pessoas muito experientes (seniores) e pessoas com pouca experiência (juniores). É possível juntar duplas de forma que a sênior trabalhe com a júnior. A pessoa júnior pilota e a sênior copilota.
  2. Resolver um problema: Independente do nível de experiência, são duas pessoas trabalhando juntas para resolver um problema específico.
  3. Iniciar um novo produto: Quando um novo produto está sendo criado, é uma boa forma de garantir que as bases do produto sejam definidas, compreendidas e seguidas.

Essa lista não é exaustiva. 

Uma história, uma necessidade

Antes de mais nada, gostaria de mencionar que atualmente estou como Gerente de Desenvolvimento de Software do TRE-RJ e isso é relevante para a história que vem a seguir. 

Como gerente eu tenho a vantagem e a prerrogativa de sempre ser elencado como parte interessada (stakeholder) em todos os produtos / serviços que meus times constroem. Como parte interessada, uma das coisas que posso fazer são sugestões de melhoria para nossos softwares. É nesse ponto que acaba todo poderio da minha prerrogativa de chefe. Eu posso até fazer as sugestões, mas depende dos product owners aceitarem e do time ter disponibilidade para desenvolver. Acredite, já recebi muitos nãos e isso faz parte do jogo. 

Um dos serviços que nós temos é o Portal do Cidadão. É um local onde os eleitores do estado do Rio de Janeiro podem consultar serviços sobre suas informações eleitorais. Um dia eu tive uma ideia. E se um eleitor que tivesse algum débito eleitoral (multa por não votar, por exemplo), recebesse um alerta de que ele possui essa dívida. E se o eleitor ou a eleitora que ainda não cadastrou sua biometria, recebesse esse aviso e fosse direcionado para o Cartório Eleitoral da sua preferência. São ideias legais. A Teonice, product owner desse serviço, concordou com a ideia. Mas… não havia times disponíveis para construí-las. A prioridade é eleição (estamos nos primeiros meses de 2024).

Ideia anotada, colocada no product backlog para ver se um dia, nós faríamos. Deu uma pontinha de frustração, mas fazer o que? Temos números sobre a nossa capacidade e colocar mais coisas em paralelo só aumentará o nosso tempo de entrega de todos os produtos. A não ser que eu mesmo colocasse a ideia em construção. Só que havia um problema. Esse portal foi desenvolvido em Angular com Spring Boot e eu me tornei Scrum Master, Product Owner e finalmente gestor bem antes dessa arquitetura ser adotada. Entendia muito, muito pouco de Spring Boot, era nulo em Angular e parar alguém do time para me ajudar seria voltar para o problema original.

Copycat, o imitador

Uma mulher negra, com óculos, cabelo preso como rabo de cavalo, olhando para a tela de um computador enquanto digita.

Após baixar o código-fonte, a primeira coisa que fiz foi abrir o Eclipse e o Visual Studio e fazer o método mais tradicional de aprender a programar. Olhar para o código que alguém já fez, copiar e fazer as alterações necessárias para atender às minhas necessidades. O famoso método copycat (imitador). Dito e feito. Nas primeiras linhas foi excelente. Copiando, colando, alterando e consultando o Stack Overflow quando alguma coisa não dava certo. Porém com o tempo, comecei a precisar de coisas que não estavam presentes naquele produto e a solução foi continuar baixando códigos de outros produtos e tentando copiá-los e modificá-los.

Infelizmente, as minhas atribuições de gestão não me dão muito tempo para ficar buscando um código que atendesse exatamente aquilo que eu procurava. Eu era chamado para reuniões, analisar gráficos e demandas de times, clientes e gestores acima de mim. Enfim, atender as atribuições de um gestor. Confesso que bateu uma frustração, já se passará mais de duas semanas e eu teria que deixar as coisas ½ feitas e 0% entregues. 

ChatGPT como copiloto

Foi aí que bateu a ideia, e se eu utilizasse o ChatGPT para programar comigo. Resolvendo dúvidas básicas e me ajudando a construir as funcionalidades. Fui lá e fiz a pergunta: Como eu retorno um sortedset para o angular? O Sortedset é uma lista de elementos ordenada por um critério. A resposta dele foi bem satisfatória, mas não era exatamente o que eu queria.

sorted_set = {3, 1, 4, 1, 5, 9, 2}
sorted_array = sorted(sorted_set)
Um homem fazendo programação em par com a inteligência artificial.

Ele deu um exemplo genérico. Foi então que eu peguei todo o código da classe em angular e colei no ChatGPT. Nem me preocupei em dar uma arrumada nele. No final eu acrescentei a pergunta: Como eu faço para que o método “tenhoDividas()” retorne o sortedset?. Nem repeti a palavra Angular. Dessa vez a resposta dele foi completa e exatamente o que eu precisava. 

A partir desse ponto fui “conversando” com o ChatGPT para apresentar mensagens, alterar Cascading Style Sheet (CSS), passar parâmetros, receber objetos complexos e tudo mais. Resumo da ópera, em menos de 1 semana já havia criado as funcionalidades, os testes automatizados e colocado na fila dos testadores. Esses aprovaram e tudo entrou em produção.

Eis que surge outra ideia

Foi então que surgiu outra ideia: E se comunicássemos os eleitores do RJ que eles foram convocados como mesários pelos seus respectivos cartórios eleitorais. O desafio aqui é um pouco maior, porque teríamos que comunicar 2 sistemas que até então eram independentes. Por questões de segurança, eu sabia que a comunicação entre sistemas dava um trabalho, pois os dados não podem ser interceptados durante a conversação e isso para a Justiça Eleitoral é sine qua non. Não há a possibilidade de exceções.

Dei a sugestão para a Teonice novamente que achou a ideia bem interessante, anotou no backlog, mas… continuávamos sem time para atualizar o Portal do Cidadão. (Bendita hora que essa super PO começou a trabalhar conosco).

Blackbox.ai

Depois de algumas semanas que não consegui encostar no código, finalmente chegou um dia em que eu tive a oportunidade de abrir o código-fonte e voltei a programar em par com o ChatGPT. No início foi legal, mas essa atividade era bem mais complexa que a outra, pois envolvia criptografia, autenticação de aplicação-usuário, verificação de autenticidade e etc. 

Pegar o código, digitar no ChatGPT, esperar a resposta ficou um tanto tedioso. Foi aí que eu pedi uma ajuda para o próprio ChatGPT: Me liste as 5 principais ferramentas gratuitas de IA para programação que podem ser integradas à IDE. Essa é a sigla para Integrated Development Environment ou, em português, Ambiente de Desenvolvimento Integrado. Caso nunca tenha ouvido falar sobre isso, resumidamente, é o software que utilizamos para construir outros softwares. Ele listou 5, porém o segundo não era gratuito. 

Então lembrei que o ChatGPT tem uma restrição de tempo. A última atualização do ChatGPT 3.5 foi em 2022, e a do ChatGPT 4 foi em 2023. As coisas mudam. Ferramentas que eram gratuitas deixam de ser, outras mudaram o foco e outras deixaram de existir. 

Então fui ao Gemini e repeti a pergunta. Ele confirmou algumas das sugestões do ChatGPT e indicou outras. Uma delas era o blackbox.ai. Confesso que o nome chamou atenção então resolvi dar uma conferida. 

Instalei no meu Visual Studio e ele realmente se integra à IDE. Ele pode ser utilizado no modo conversa, tipo o ChatGPT, porém ele tem um modo interessante de sugestão de código. Literalmente você começa a digitar um IF (Se) e o cara já analisou tudo o que vinha antes e já te entrega um IF quase pronto. Basta digitar um tab. Não é feitiçaria, é tecnologia.

Desde então tenho feito pair programming com o Blackbox, pois ele dá muito mais pitacos do que o ChatGPT. E a construção da funcionalidade durou pouco mais de uma semana. Levando em consideração que sofri muitas preempções da atribuição de gestor. 

Pontos positivos e negativos de trabalhar em par com a Inteligência Artificial.

Vou fazer minhas as palavras do Rodrigo de Toledo sobre vantagens e desvantagens de trabalhar em par com Inteligência Artificial. Ele também utilizou a programação em par para resolver um problema e publicou nesse post linkedin.com — Rodrigodetoledo ia programacao pairprogramming activity 7184141384818282496 que vou copiar descaradamente, mas dando créditos.

Pontos positivos

  • Conhecimento da linguagem: A Inteligência Artificial parece ter um domínio total da linguagem de programação.
  • Explicações detalhadas: Em caso de erros de compilação ou bugs, a IA fornece explicações detalhadas antes de corrigir o problema, promovendo o aprendizado.
  • Comunicação visual: Pasmem, eu fiz upload de uma imagem para ilustrar o bug. A IA conseguiu entender o problema e corrigiu o código para gerar o resultado esperado.
  • Aprendizado mútuo: O processo me proporcionou a oportunidade de ensinar a IA sobre nuances da linguagem e do projeto, enquanto aprendia com suas sugestões e insights.

Nesse mesmo post, ele comenta sobre as conclusões do Rodrigo Braga Afonso ao utilizar o Copilot integrado à IDE e coloca em destaque: O desenvolvedor aprende boas práticas de programação; Comentários e documentações automatizados; Acúmulo de aprendizados entre projetos; Otimização e refatoração de código; Redução de troca de contexto.

Pontos negativos

  • Erros inesperados: A IA cometeu alguns erros que um programador humano experiente não cometeria, como chamar um método inexistente de um objeto.
  • Refinamento necessário: Em projetos maiores, pode ser necessário trabalhar módulo a módulo para evitar sobrecarga e garantir a qualidade do código.
  • negativo/positivo: Em um determinado momento a IA cometeu o mesmo erro 2x, eu falei para não errar mais, e ela jurou que não cometeria mais o mesmo erro (até onde fui, não se repetiu mesmo).

Pontos de Atenção

Conclusão

Acredito que esse será o caminho que seguiremos não só em desenvolvimento de software, como também em outras áreas profissionais. A inteligência artificial não é uma substituta do humano, porém é uma grande auxiliar nas nossas vidas. Se eu puder colocar um ponto importante sobre aspectos negativos e positivos, eu diria que a programação em par seja com o Blackbox ou ChatGPT só funcionam bem porque eu sou desenvolvedor de software (por amor, afinidade e formação) e já possuía conhecimento prévio sobre o tema. Assim eu pude selecionar quais eram as boas sugestões da IA e quando ela errava. Pude até, como o Rodrigo Toledo comentou, corrigi-la. 

Bora caminhar juntos nessa jornada? Dá uma olhada no nosso treinamento de Product AI e saiba como a Inteligência Artificial pode ser utilizada para te ajudar a criar produtos incríveis.

Product AI

Quer mais conteúdo sobre Inteligência Artificial e agilidade? Dá uma olhada nesses artigos aqui

Gestão de Times e empresas

Gestão de Produtos

Gestão de Fluxo

Técnicas com Inteligência Artificial

Nos vemos em breve!!!!

Perguntas frequentes

Como funciona o trabalho em par no desenvolvimento de software?

O trabalho em par é uma técnica onde duas pessoas trabalham juntas para resolver um problema. Essa prática serve para transferir conhecimento entre profissionais seniores e juniores, encarar desafios específicos de programação de forma colaborativa ou definir e compreender as bases de um novo produto que está sendo iniciado.

Como utilizar ferramentas de inteligência artificial na programação de software?

A inteligência artificial pode atuar como copiloto ao responder dúvidas de código, sugerir trechos de programação e identificar erros. Desenvolvedores podem colar classes de código na IA para ajustar parâmetros, formatar estilos ou criar testes automatizados, agilizando entregas de funcionalidades sem necessitar interromper outros membros da equipe.

Quais são as vantagens e desvantagens de programar em par com inteligência artificial?

As vantagens incluem domínio da linguagem, explicações detalhadas sobre erros, otimização de código e aprendizado contínuo. Como desvantagens, a IA pode cometer erros inesperados, como chamar métodos inexistentes, ou repetir falhas. Por isso, exige refinamento constante por parte do desenvolvedor para garantir a qualidade final do projeto.

Por que é necessário conhecimento prévio em programação para utilizar IA?

O conhecimento prévio em programação é fundamental para avaliar as sugestões da IA e filtrar boas soluções de respostas incorretas. Como a ferramenta pode cometer erros ou criar métodos inexistentes, um desenvolvedor experiente consegue identificar falhas, corrigir o comportamento do sistema e formular perguntas mais precisas para obter melhores resultados.

Pronto pra dar o próximo passo?

Conheça os cursos da K21 e leve essas ideias pra prática com quem vive agilidade todo dia.

Ver cursos K21

Continue lendo