Esse desenvolvedor é o ChatGPT e tenho uma relação de amor e ódio com ele.
Existem muitos artigos sobre IA hoje em dia, então tentarei manter este curto.
Usar o ChatGPT para codificar é como ter um desenvolvedor júnior sob seu comando. Eles podem obter o código 80% lá, mas você precisará revisar praticamente todas as linhas.
Tenho que admitir que há muitas maneiras de usar o ChatGPT para ajudar a escrever código. Provavelmente é melhor em alguns deles e pior em outros.
Por exemplo, já ouvi muitas pessoas usando-o como um mecanismo de pesquisa. Eu pessoalmente acho isso um pouco questionável. Não é tão difícil encontrar documentação ou mesmo respostas por meio de uma pesquisa. Eu uso Kagi que ajuda a reduzir o cotão.
Pelo contrário, usando o ChatGPT, como você deve saber se a resposta é verdadeira?
Do outro lado do espectro, muitas pessoas o usam como um preenchimento automático glorificado. Algo como o Github Copilot . Eu posso ver isso sendo útil.
O cenário que escolhi é:
Convertendo meu código de chakra-ui para tailwindcss .
Por que?
Olhando ao redor do campo, parecia que solicitar bem é a diferença entre obter resultados bons ou medíocres. Não sou o melhor nisso, mas fiz algumas pesquisas e tentei o meu melhor.
Certifiquei-me de usar vários prompts para colocá-lo em um bom estado. Apenas colando meu código sempre que parecer que ele deve converter apenas meu código.
Honestamente, esta parte poderia ser melhorada. Entre a interface do usuário e a interação, é uma tarefa difícil de usar:
Pode levar algum tempo para atingir o estado desejado
Entre eu pensando no que escrever, depois esperando que responda e termine de escrever, fica muito chato fazer esse trabalho.
é inconsistente
Não ajuda que você não possa sempre reutilizar os mesmos prompts. O ChatGPT tem alguma aleatoriedade, então tive que ajustar o prompt todas as vezes. Copiar e colar um prompt que funcionou anteriormente não ajudou.
É muito fácil sair do estado desejado
O acima é bom se for uma coisa única. Mas descobri que é muito fácil para a IA esquecer tudo após a primeira conversão de código. O sucesso mais repetido que tive foi 3 vezes, acredito. Além disso, ele retornou coisas completamente não relacionadas, como explicar o que meu código faz.
O token é um fator bastante limitante
Há apenas tanto código que pode produzir devido ao seu limite de token. Você pode verificar o tokenizador aqui para ver como ele calcula os tokens . Não é muito amigável para o código. Abaixo está um exemplo de uma de suas saídas. Cada cor diferente representa um token.
Por causa disso, tenho que dividir a conversão em várias etapas. Caso contrário, a geração irá parar no meio. Dizer para continuar não funciona na maioria das vezes. Combinado com os pontos acima, isso rapidamente se torna uma tarefa árdua.
Em suma, a sensação que tenho é que não quero escrever em inglês. Se eu já tiver que escrever algo, prefiro escrever diretamente um código que funcione.
Eu posso ver a engenharia imediata como uma habilidade chave para se ter no futuro. Semelhante a como saber pesquisar é uma habilidade fundamental no mundo de hoje.
Apesar de todo o trabalho necessário, o ChatGPT produziu um código bastante impressionante. Aqui está uma comparação entre o original e o resultado:
Como você pode ver, ele fez o trabalho decentemente bem.
O bom
A estrutura é trazida muito bem
Além dos detalhes, a estrutura do HTML é bastante semelhante ao original. Os espaçamentos estão desativados, mas o layout geral permanece.
O conteúdo do texto não muda
O conteúdo em si foi bem tratado. Mesmo que eu tivesse que verificar novamente todos eles, nada disso foi alterado. A única exceção são aqueles derivados de JS.
O mal
Tinha aulas aleatórias
Há muitas classes que não fazem nada. Algumas foram alteradas e outras eram classes de vento de cauda inválidas.
Existem muitas pequenas diferenças
A interface do usuário parecia que uma biblioteca acabou de ser atualizada e alguém se esqueceu de migrar o código. Nesse caso, é porque o ChatGPT alterou aleatoriamente os valores das classes. Por exemplo, um padding
de 3 a 4 ou alterar a font-weight
de negrito para normal. Os detalhes estavam todos errados.
Não funciona metade do tempo
As capturas de tela acima foram aquelas que posso comparar diretamente. Na realidade, os resultados estavam incompletos ou errados o suficiente para que eu tivesse que fazer muitas alterações para fazê-lo funcionar. E por causa disso, não posso comparar lado a lado. Simplesmente não há nada com o qual eu possa comparar, pois o código não é executado.
O que é ótimo sobre isso é que eu tenho algo para trabalhar. Felizmente, o trabalho em si é muito direto. É fácil detectar erros. O mapeamento entre as classes de chakra-ui e tailwind é quase um-para-um. Só é tedioso porque a sintaxe é diferente.
Mas essa abordagem é mais parecida com a revisão de PRs. Eu tive que escanear todo o código para ter certeza de que tudo foi feito corretamente.
Parece bom à primeira vista. Mas há muitas armadilhas quando você trabalha com isso e presta atenção. Traz uma falsa sensação de segurança que me deixou um pouco frustrado quando descobri todas as falhas.
Uma grande parte dele é o código que é interpolado de outras bases de código. Não parece terrível, mas não é o que eu queria.
Existem até algumas mudanças alarmantes, como mudar o cabeçalho de h2 para h1. Só posso assumir que fez isso por causa do conteúdo.
Parecia que um desenvolvedor júnior juntou algo e não testou seu código . E agora tenho que revisar e consertar sem poder dizer a eles para consertarem sozinhos.
E isso é horrível. Eu já tenho minha correção de revisar PRs no trabalho. Agora eu tenho que fazer isso também para meus próprios projetos? Não, obrigado!
Embora eu não ache que esteja nem perto disso ainda, acho que a IA será útil em algum momento para o desenvolvimento no futuro. Se a resposta é LLMs, quem sabe?
Os limites de token estão aumentando constantemente
Já demorei bastante para terminar este artigo. Durante esse período, há muitos anúncios de aumento do limite de token. Embora eu não tenha certeza se é público, pago ou o que quer que seja, é ótimo ver isso.
Solicitar UX deve ficar mais fácil com o tempo
Com plug-ins ChatGPT e melhor integração, problemas como lembrar o estado e a consistência devem ser aprimorados. Esperançosamente, isso diminuirá o esforço necessário para obter uma saída útil do ChatGPT.
Nesse ínterim, concluí a outra metade da migração manualmente. Foi mais rápido? Bem, quem sabe. Parecia o mesmo. Mas escrevê-lo manualmente parecia muito melhor.