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.
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:
- 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;
- 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;
- 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;
- 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:
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 2:
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:
- 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.
- 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.
- 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.
- 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!
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! 🌟💻🔍
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.
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.
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 👏🏼👏🏼👏🏼