Executando verificação de segurança...
24

Usar o ChatGPT no desenvolvimento de software me ajuda mesmo?

Olá!
Se você está lendo isso, acredito que tenha a mesma dúvida que tive enquanto pensava em qual tema abordaria para o TCC do curso que estou finalizando enquanto escrevo esta publicação.

Introdução ao problema

Essa dúvida surge junto com toda a especulação e discussão que foi sendo construída desde a disponibilização da plataforma ChatGPT, em novembro de 2022.
E quanta discussão tivemos até aqui! Quem ai lembra dos posicionamentos polêmicos de influenciadores como Cauê Moura, Felipe Castanhari, Nando Moura, que geraram uma certa revolta na 'bolha dev' 😂😂😂 (rir para não chorar).

Enfim, deixando a discussão de lado e indo para a prática, muitos desenvolvedores tem adotado o ChatGPT nas suas rotinas de trabalho, sendo esse trabalho em empresas ou até mesmo em projetos para portifólios ou qualquer outra finalidade pessoal, e é inegável a ajuda que essa ferramenta é capaz de proporcionar à quem utiliza na confecção de software hoje em dia...
Mas pera ai... Inegável? Essa é uma palavra bem forte para adjetivar a ajuda prestada... Será que, mesmo com os erros e respostas incorretas que são geradas, a Inteligência Artificial da OpenAI é capaz de fornecer um auxílio significativo para a pessoa que desenvolve software?

Com este questionamento em mente, realizei todo o meu TCC, cujo tema foi "Pesquisa sobre o impacto do uso de Transformadores Pré-Treinados Generativos para auxiliar na rotina de Desenvolvimento de Software" (um nome chique e comprido para impressionar a banca 😎), elaborei um método para verificar se a ajuda que o ChatGPT fornece é significativa, de fato, e estarei compartilhando o resultado deste experimento com vocês, pois acredito que a partir dele conseguiremos expandir essa discussão à outras áreas de impacto que essa ferramenta abrange.

Antes de continuar lendo esta publicação, já lhe deixo o questionamento: você acha que o ChatGPT ajuda uma pessoa que desenvolve software? Por que?

Método: o desafio

Para abandonar de vez os 'eu acho que...', ideializei um método para tentar buscar uma resposta para essa dúvida, e neste trecho estarei descrevendo como este método foi idealizado para trazê-la.

Meu ponto de partida foi olhar para mim mesmo: hoje trabalho no desenvolvimento de software de uma empresa em minha cidade à 2 anos, e tenho utilizado o ChatGPT para resolver problemas, criar trechos de código em cenários que não tenho muita afinidade, e obtive boas e más experiências nessa jornada. Repostas que estavam complemente erradas, por definição, e respostas que estava certas e me pouparam um bom tempo de pesquisa.
Porém, utilizar somente a minha percepção para chegar em uma conclusão seria muito pouco, além de impreciso.

Sendo assim, cheguei a conclusão que precisaria envolver outras pessoas para conseguir uma conclusão mais concreta e precisa, e cheguei na conclusão de fazer um desafio de programação. Este desafio se deu da seguinte forma:

  • Busquei montar 2 grupos de estudantes da instituição onde curso Ciência da Computação;
  • Cada grupo seria composto por 5 estudantes. Por se tratar de um desafio de programação, busquei estudantes de meu curso mesmo, pois de outros não faria sentido;
  • Para cada grupo, eu dei um desafio contendo 3 perguntas relacionadas a uma base de dados que fiz baseado em valores de carros e suas marcas segundo a tabela FIPE. Peguei 4 marcas de carros de sua API pública e disponibilizei aos estudantes através de um arquivo JSON;
  • Essas perguntas deveriam ser respondidas utilizando programação na linguagem Python, e envolviam conceitos de valor máximo, valor mínimo, ordenação, leitura de arquivo, etc...
  • Um dos grupos teria de desenvolver uma resposta para as perguntas sem qualquer tipo de ajuda, seja pesquisando na internet ou perguntando aos colegas, devendo usar apenas os próprios conhecimentos;
  • O outro grupo teria ajuda apenas do ChatGPT para responder;
  • Essas perguntas deveriam ser respondidas dentro de um tempo de 40 minutos;

Depois de realizado este desafio, de maneira presencial, enviei aos estudantes um formulário contendo algumas questões relacionadas a implementação das respostas, para coletar alguns dados de caráter mais pessoal.

Um ponto a ser levado em consideração é que não foi estabelecido um nível mínimo de conhecimento para a adesão de estudantes ao desafio, pois se ele não houvesse conhecimento para responder as questões, suas interações e tentativas de resolução ainda seriam um dado indicador importante para a pesquisa.

Análise dos resultados

Feito o desafio e enviado os formulários para coletar as impressões do estudantes, parti para a análise dos dados gerados.

Analisei os seguintes pontos do que foi obtido:

  • Acerto das questões;
  • Tempo de execução do código desenvolvido nas questões certas;
  • Análise do formulário pós-desafio;
  • Análise das conversas com o ChatGPT do grupo que utilizou;

Grupo 1 - Sem consulta

Com estes objetivos em mente, podemos começar pela relação de dados gerado pelo Grupo 1, que não teve acesso a consultas em qualquer meio:

A tabela abaixo apresenta os acertos e erros alcançados por cada estudante. A marcação de N/D indica que não foi elaborado nenhum código capaz de exprimir qualquer resposta para a pergunta.

Tabela com resultados do Grupo 1

Aqui, já podemos notar que houve uma dificuldade entre os estudantes em realizar o desafio. Nenhum deles conseguiu o completar, e também não houveram respostas certas.

Por nenhuma das respostas ter sido a desejada para a pergunta, não foi feita a análise do tempo de execução em nenhuma dos trechos desenvolvidos.

Agora, falando sobre o formulário pós-desafio, essas foram as impressões dos estudantes:

  1. Na primeira pergunta, foi solicitado que fosse imposto um nível de dificuldade, de 1 a 5, de acordo com sua opinião. O nível 1 indicaria que o estudante achou o desafio muito fácil, e o nível 5 indicaria que achou muito difícil. Das respostas coletadas, todos os estudantes atribuíram o nível 4 de dificuldade;
  2. Na segunda, foi questionado se seu desempenho melhoraria caso tivesse alguma ferramenta de busca disponível para auxiliar na implementação, e todos preencheram que sim;
  3. Na questão seguinte, a terceira, havia um espaço para que descrevessem quais foram as faltas percebidas durante a implementação, e todos relataram a falta de um motor de busca para tirar dúvidas de como implementar uma determinada funcionalidade aplicável na resolução do problema;
  4. E por final, havia outro espaço para escreverem se conseguiram perceber melhorias que pudessem fazer com que o código performasse melhor e quais seriam essas melhorias. Por não terem conseguido desenvolver plenamente todas as questões, metade das repostas para essa pergunta foram negativas, ou seja, não conseguiram idealizar pontos de melhoria, e os que conseguiram eram mais voltados a implementação da resolução, e não a melhoria da performance.

Grupo 2 - Com consulta

Passando para os resultados do Grupo 2, que teve acesso a auxílio via ChatGPT, podemos observar os seguintes resultados na tabela de acertos:

Tabela com resultados do Grupo 2

Aqui já podemos observar uma melhora significativa. Ainda nenhum dos estudantes completou o desafio, mas todos fizeram um código para responder a Pergunta 1, e agora houveram acertos nas questões.

O Estudante 1 respondeu parte da Pergunta 2, e esta parte estava correta, e por isso resolvi considerar esse acerto parcial na análise.

Como agora houveram respostas corretas, houve a medição do tempo de execução dos códigos desenvolvidos, que serão apresentados abaixo.
O tempo mostrado é o tempo médio, em milissegundos, da execução do código desenvolvido realizada 1000X.

  • Tabela com os tempos de execução da Pergunta 1:
    Tabela com os tempos de execução da Pergunta 1

  • Tabela com os tempos de execução da Pergunta 2:
    quadro-4.png

Já é possível observar de cara que o Estudante 1 teve o menor tempo entre todos os resultados, e nos próximos tópicos da publicação explicarei o porquê.

Passando para o resultado da pesquisa pós-desafio, estas foram as impressões coletadas:

  1. A primeira pergunta foi mantida, onde o estudante deveria atribuir uma dificuldade ao desafio, e todos o consideraram nível 3, um nível mais fácil em relação ao que foi preenchido pelo grupo anterior.
  2. A segunda pergunta foi alterada, onde eles deveriam dizer se a falta de consultas externas teria prejudicado o seu desempenho, e todos responderam positivamente, não ter consultas os prejudicaria.
  3. Também sofrendo alteração, a terceira pergunta pedia para ser atribuído um nível de ajuda que IA agregou nas respostas, sendo que o nível 1 seria pouca ajuda e o nível 5 seria muita ajuda. Os níveis atribuídos pelos estudantes variaram entre 4 e 5, ou seja, as consultas ajudaram significativamente.
  4. Na última pergunta, que também foi mantida, alguns estudantes relataram que melhorariam a performance do código desenvolvido tentando usar funções nativas da linguagem para a realização das comparações necessárias, enquanto outros não realizariam mudanças pois a performance estava adequada.

Como neste grupo houve acesso à ferramenta da OpenAI para auxiliar no desenvolvimento das questões, realizei a análise das conversas que os estudantes tiveram com a IA, e na busca de alguns padrões, achei pontos muito interessantes:

  • Aqueles estudantes que realizavam solicitações mais específicas e detalhadas conseguiram um resultado funcional e melhor com menos interações. Um dos estudantes solicitou um trecho de código, em Python, que realizasse a verificação do menor valor dentre um conjunto de dados, e a medida que os erros iam ocorrendo na execução, ele simplesmente colava a pilha de erros gerada pela linguagem na conversa, e assim ele conseguiu um código que retornava a reposta correta em apenas 4 interações;
  • O Estudante 1 pediu para que a IA realizasse uma otimização no código que ele havia escrito, e essa exigência foi atendida! Dentre os códigos desenvolvidos, o dele foi o que apresentou o menor tempo de execução, provando que seu código foi otimizado;
  • Também, houve outro Estudante que teve sua conversa toda em inglês com a máquina, mas seu resultado não foi melhor por causa disso. Isso nos indica que a maneira e o que se pede é muito mais importante do que a linguagem utilizada, sendo assim, a ferramenta se torna mais acessível.

Com todos estes dados coletados e revisados, é possível chegar em algumas...

Conclusões

Sim, meu caro leitor, podemos afirmar que o uso do ChatGPT por pessoas que trabalham no desenvolvimento de software é capaz de fornecer um auxílio significativo à quem o usa como ferramenta em projetos de programação! 🥳🥳🥳

Foi notável a diferença de desempenho no grupo sem auxílio versus o com auxílio, dado a tabela que aponta os erros e acertos de cada estudante. O uso da ferramenta disponibilizada pela OpenAI também fez com que o Grupo 2 achasse o desafio mais fácil do que o Grupo 1, e no Grupo 2 conseguimos obter acertos para as perguntas.

Então sinta-se a vontade para usar e abusar de mais essa ferramenta, mas sempre levando em consideração que ela pode estar errada e que quanto mais informações forem fornecidas, melhor será a reposta para seu problema.

Outra conclusão que obtive analisando os dados gerados no desafio é que a pessoa que desenvolve software precisa ter a mão uma maneira de pesquisar a respeito do que se programa, seja para verificar usos de métodos, verificar resoluções de erros, estudar implementações, etc.
Quando questionados sobre seu desempenho sem a disponibilidade de auxílio, os dois grupos concordaram que seria pior.

Estamos diante de algo que tem o potencial de mudar completamente a maneira que um desenvolvedor busca por informações e realiza suas demandas na confecção de software.
Apesar das respostas incorretas e erros gerados em alguns resultados, o que se sobressai é a capacidade da IA assumir o papel de um instrutor personalizado, que dará um direcionamento à quem o usa, que mesmo que seja errado. Com essas respostas incorretas, podemos descobrir que existe um caminho melhor para resolver o empasse que nos impede de prosseguir, e com o uso do ChatGPT, podemos chegar nessa conclusão mais rápido.

Considerações finais

Gostaria de agradecer por ceder seu tempo e atenção até aqui, e espero que esta postagem tenha sido útil para você, nem que seja um pouquinho.

Estou realizando os passos para realizar a publicação de meu TCC na biblioteca da instituição, e quando conseguir, vou tentar colocar um link de acesso aqui, para que você consiga ver ele em sua totalidade, pois tem detalhes que não descrevi, por não ter necessidade.

Espero que, com tudo que foi descrito aqui, consigamos ter uma base mais sólida para discutir sobre o uso dessas ferramentas com IA de conversação na educação, no mercado de trabalho, no marketing, no desenvolvimento de projetos pessoais, etc. Este é meu principal objetivo com a divulgação da pesquisa que promovi: dar a comunidade de desenvolvedores mais subsídio para o aprimoramento de todos.

Um abraço, e fique bem!

Carregando publicação patrocinada...
7

Olá!

Primeiramente, parabéns pela conclusão do seu curso e pelo TCC! É evidente que você não apenas escolheu um tema muito relevante, mas também abordou de uma maneira inteligente e prática. A forma como você propôs um experimento simples e replicável para investigar a eficácia do ChatGPT no desenvolvimento de software demonstra uma abordagem bem pensada.

O experimento, embora simples, é eficaz em fornecer insights iniciais. A comparação entre grupos com e sem acesso ao ChatGPT oferece uma base para uma discussão mais ampla sobre a interação entre IA e desenvolvimento de software. Por outro lado, a principal limitação do seu estudo parece ser o tamanho da amostra. Com um número tão pequeno de participantes, as variações nos resultados podem ser significativas e não necessariamente representativas.

Isso não desvaloriza seu TCC, mas sugere que há espaço para uma investigação mais aprofundada. Seria interessante ver um estudo semelhante com um número muito maior de participantes (centenas, milhares) e que considere variáveis como a proficiência em programação e a experiência prévia com o ChatGPT. Além disso, é imporante mitigar qualquer viés do tipo, será que os participantes que tiveram sucesso com o ChatGPT, não teriam obtido os mesmos resultados sem ele? Ou o pior, alguém que acertaria sem ajuda, ser obrigado a usar a ajuda acabou atrapalhando. - Do ponto de vista prático, acredito que qualquer conclusão do tipo: "estudo prova que usar o ChatGPT ajuda a programar" é estupidez, embora de fato pode ajudar.

O que realmente tem valor aqui é como as melhoras soluções ao desafio com consulta, usaram o ChatGPT. Que tipo de perguntas os estudantes fizeram? Como eles incorporaram as respostas da IA em seu processo de desenvolvimento? Essas são informações práticas, mas valiosas para quem deseja usar o ChatGPT de maneira eficiente no desenvolvimento de software, mesmo sem o embasamento de investigação acadêmica rigorosa.

Parabéns novamente pelo trabalho realizado e pela contribuição ao campo! Continue explorando e estudando! 🌟💻🔍

4

Olá!

Muito obrigado pela crítica tão bem redigida, tenho certeza que o mundo seria um lugar muito melhor, principalmente na Web, se todos tivessem esse cuidado ao realizar um comentário sobre o trabalho alheio. 🌻

Você levantou pontos muito interessantes a respeito da pesquisa realizada, e aproveitarei este espaço para descorrer um pouco sobre eles.

A quantidade de membros para cada grupo de fato é pequena, e para ter conclusões ainda mais concretas, seria necessário a quantidade centenas ou milhares que você comentou. Infelizmente, dentro do espaço que havia para realizar o desafio do começo ao fim, conseguir um número maior de participantes é algo que ficaria inviável para o projeto.
Tendo em mente essa deficiencia, tentei deixar o experimento o mais replicável possível, de maneira geral, para que outras pessoas conseguissem adaptá-lo e replicá-lo dentro de seus próprios contextos.

Por isso, fica aqui meu convite a você, leitor que acompanha essa resposta: basei-se nesta experiêtação para realizar mais pesquisas em campo, ou até mesmo use meu TCC como base para o seu!

Voltando a resposta, parte das informações pertinentes a aplicação do desafio e sua análise preferi deixar somente no TCC, pois o objetivo da publicação era apontar as informações mais relevantes e assim fomentar uma discussão sobre o tema.
Assim que conseguir publicar ele, será uma honra compartilhar ele aqui, para aqueles que quiserem mais informações sobre estes detalhes.

Concordamos que o sensacionalismo do 'estudo prova que usar o ChatGPT ajuda a programar' é estúpido, e o ponto que quero atacar é justamente esse. Já temos achismos, sensacionalismos, e gente espalhando desinformação o suficiente, e por isso acredito que chegou a hora de construirmos algo concreto e baseado em fatos, sendo essa minha singela maneira de agregar um pouco mais de certezas às discussões sobre o uso da IA.

Por fim, agradeço de coração por todos os elogios e melhorias apontadas! 🫶🫶🫶

5

Complementando, acho que seria interessante colocar um terceiro grupo que pudesse usar somente as ajudas tradicionais: Google, Stack Overflow, documentação, e qualquer outro conteúdo da internet que já existia antes do ChatGPT. A única restrição seria não usar nenhuma ferramenta de IA (assim já elimina ChatGPT, CoPilot, Bard, etc). Acredito que assim teríamos um comparativo melhor.

Afinal, há muitos anos os desenvolvedores usam a internet como ferramenta de ajuda. Por isso achei meio "injusto" o fato de um grupo não poder consultar nada, é meio irreal se considerarmos o que acontece na prática. Sejamos francos, a maioria das coisas ninguém mais memoriza, muita coisa é consultada na internet o tempo todo.

Assim, vc teria um estudo mais realista, pois conseguiria comparar com a situação pré-ChatGPT (pessoas consultando a internet). E aí sim daria para medir algo mais próximo do impacto real deste.

4

De fato, acredito que, no final, mostrou-se mais uma pesquisa sobre o impacto da consulta à internet do que sobre o GPT, tendo em vista que o segundo grupo não teve acesso à consulta alguma. De qualquer maneira, é incrível ver como a ausência de um google torna o trabalho mais difícil. Inclusive, remonta à questão de como os programadores estão se tornando cada vez mais dependente de suas ferramentas. Antigamente, os desenvolvedores mais antigos tinham que memorizar a grande maioria dos detalhes para conseguir fazer o seu trabalho. já Os desenvolvedores de hoje precisam de, no mínimo, um google. Então os do futuro precisarão de um GPT pra conseguir trabalhar?

3

Acho que a questão vai além da dependência. Pra mim o que influencia muito mais é como usamos as ferramentas.

Por exemplo, praticamente todo mundo usava e ainda usa a internet pra programar (geralmente o Google, que cai em algum link do Stack Overflow, por exemplo). O que muda é como a pessoa usa as informações encontradas. Alguns só copiam e colam o código sem pensar, e se "funcionar" tá valendo. Outros aproveitam para estudar o código, o que ele faz, entender como e porque ele funciona, e se realmente é a melhor solução para o problema.

Adivinha qual desses costuma ser um profissional melhor? Qual desses constrói sistemas mais robustos e confiáveis? Qual desses evolui mais na carreira? Claro que tem casos e casos, mas de forma geral, os copiadores de código não costumam se dar tão bem quanto os que procuram aprender com o que pesquisaram.

Com o ChatGPT é a mesma coisa. Se a pessoa acredita cegamente em tudo que ele diz, se não tenta entender o que ele sugeriu e sai fazendo de qualquer jeito, sem questionar, cairá no mesmo problema. Pode usar, mas tem que conferir o que ele faz. Tem que aproveitar e aprender algo com aquilo, tem que usá-lo ao seu favor.

É assim com toda ferramenta, precisa saber quando usar e quando não usar, e principalmente como usar, com senso crítico e nunca aceitando cegamente tudo que ela te fornece. Com IA não deveria ser diferente.

2

Pessoal, que discussões interessantes estamos gerando aqui!

Acredito que seria muito interessante realizar o mesmo desafio só que comparando o uso do ChatGPT com o uso da Internet, inclusive sugeri isso na seção de Trabalhos Futuros da defesa do TCC.
Hoje é muito comum os desenvolvedores utilizarem a internet para tirar dúvidas, resolver erros e verificar implementações, e isso faz com que a área de desenvolvimento de software se torne mais acessível. Sem todas as facilidades que existem hoje, com certeza teríamos um déficit muito maior de profissionais para suprir a demanda de desenvolvedores.

Não vejo o uso da internet ou de qualquer outra ferramente com maus olhos, pois acredito que muito mais vale o desenvolvedor saber como funcionam e como devem ser implementadas as Regras de Negócio do software desenvolvido do que como funciona e como se implementa as linguagens de programação utilizada. Afinal, a linguagem é um meio para que consigamos implementar um software para atender uma demanda no mundo real, não para entendermos como ela gerencia memória, como suas instruções são executadas e implementadads pelo processador, e todas essas questões mais técnicas de cada uma.
Sendo assim, acho que o que torna uma pessoa que desenvolve boa é compreender e implementar plenamente as Regras de Negócio necessárias, assim como melhorias e outras demandas exigidas pelos clientes. E esta pessoas se torna melhor com o conhecimento que ela conquista dentro da linguagem, pois assim ela tem mais subsídio para melhorar o software como um todo.

3

Seria interessante também um acompanhamento dos alunos que não tiveram consulta ao chatGPT, mas podiam consultar no google; antes da atual tecnologia, o "rei" das pesquisas supria muito diversos problemas, então, acho razoável pensar que, alguns alunos até conseguissem resolver o problema, se pesquisado da maneira correta, mesmo no google. Veja; o chatGPT eleimina a necessidade de uma interpretação mais profunda (sem falar no menor tempo), coisa que uma pesquisa no google não eleimina. Deste modo, o que realmente estaria em jogo nessa nova era da informação? A capacidade de buscar por respostas? A comodidade do "aqui e agora"? A insuficiência em interpretar textos? A impaciência? Todos esses me soam como pontos válidos a se considerar.

3

Muito maneiro sua pesquisa, só achei o comparativo um pouco fora da realidade. Voce buscou estudantes, pessoas que ainda estão aprendendo, e deu a um grupo uma ferramenta muito poderosa, e ao outro não deu nada, o resultado ja era esperado.
Se pelo menos o Grupo 1 tivesse acesso à internet, mas não a ferramentas de IA, seria um comparativo mais concreto com a realidade de hoje.
Se até médico hoje em dia da uma pesquisada no Google "só pra ter certeza", quem dirá nós que trabalhamos/estudamos com tecnologia e todo dia tem uma coisa nova.
Seria interessante voce refazer esse teste, com estudantes diferentes, mas com um grupo podendo ter acesso à internet, seria interessante também, elaborar questões sobre assuntos que os estudantes ja tenham conhecimento, e questões onde eles não tem muito conhecimento.
Enfim, é um trabalho de TCC muito bom, da pra fazer um estudo bem aprofundado sobre o impacto não só das ferramentas de IA, mas também de como a internet é uma parte fundamental no nosso cotidiano.

2

Parabéns pela pesquisa, foi uma ideia bem legal, mas tenho um questionamento e sugestão ao mesmo tempo.

Não acha que colocar um grupo sem pesquisa nenhuma foi rígido demais e tira um pouco o objetivo da pesquisa? Afinal, ninguém programa só com seus conhecimentos. Usamos ao menos as documentações e muita pesquisa no google. Penso que deixar um grupo impossibilitado nem de pesquisar, ele perderia até com quem tem algum livro ou caderno de anotações anteriores rsrs. Além de que, como sua pesquisa é verificar se o Chatgpt é útil para pessoas que trabalham no desenvolvimento de software, ao meu ver, deveria comparar com as ferramentas antigas(ou atuais, porém sem IA) que os desenvolvedores em produção costumam usar.

Minha sugestão: Ter um grupo que não utiliza o apoio de IA, mas que pode usar outros métodos. Que esses metodos sejam listados e se possível, analisados para comparação. Assim torna a pesquisa mais real e robusta, onde compara a nova ferramenta com as utilizadas antes dela.

Independente disso, foi uma boa pesquisa e agregou valor. Parabéns 👏🏼👏🏼👏🏼

1

Olá!

Muito obrigado pelos elogios!
Após coletar os dados, percebi que levei a sério demais a questão da ajuda que queria verificar, pois ter um grupo que não tivesse contato algum com meio externo versus um grupo com é uma prova irrefutável dessa ajuda que eu buscava comprovar.
No dia-a-dia de um desenvolvedor, é muito comum pesquisar e verificar implementações.
Porém, o grande bônus que ganhamos ai é ver o quão difícil é uma pessoa conseguir desenvolver um código somente com seus próprios conhecimentos.

O auxílio que vem se construindo para nossos profissionais tem cada vez caminhado mais para esse lado, de uma presença constante, e é muito interessante perceber isso e tentar mensurar seus impactos.