Experiência de refatoração de um arquivo JS grande por meio da colaboração entre IA, código e humanos
(stdy.blog)(Quando acordei e reli, vi que o texto anterior tinha erros de formatação e também estava longo demais, então estou repostando uma versão resumida)
Percebi que iniciantes no ChatGPT costumam cometer 3 erros ao tentar resolver “problemas complexos” com o ChatGPT
- Esperam que o ChatGPT dê “a resposta certa” de uma vez
- Esperam que o ChatGPT dê a resposta certa “de uma vez”
- Como essa expectativa não é atendida facilmente, ficam decepcionados e passam a usar o ChatGPT só para problemas simples, ou apenas de forma passiva, ou param totalmente de usar
Como resultado, acabam perdendo várias oportunidades de ganho de produtividade com IA
Essa também era a minha situação até alguns meses atrás
- A velocidade de carregamento inicial do app estava lenta, então analisei o tamanho do bundle e encontrei um arquivo JS enorme. Descobri que dava para apagar a maior parte desse arquivo de 18.500 linhas
- No começo, fui apagando manualmente olhando o código, mas era entediante demais e eu cometia erros com frequência
- Comecei a trabalhar com o ChatGPT. No processo, percebi que eu também, como um iniciante, estava trabalhando esperando que ele me desse “a resposta certa de uma vez”
- Depois de perceber isso, usei uma “estratégia de colaboração entre três partes” e experimentei um avanço enorme rapidamente
Progresso do trabalho
Refatora isso para mim
- Entreguei uma função, expliquei a forma desejada e pedi para refatorar → falha. Nem compilava
- Em vez de entender a estrutura do código e alterá-la, ele estava apagando linha por linha
Escreve um código que faça a refatoração
- Pedi para não fazer diretamente, mas gerar um código em JS que refatorasse → falha. Isso também estava apagando linha por linha
- Pensando bem, o ChatGPT provavelmente não teve treinamento suficiente com esse tipo de refatoração em grande escala
Escreve um código de refatoração usando AST
- Eu queria apagar blocos, não linha por linha. Ou seja, era preciso entender a sintaxe do código, então pensei que usar AST seria uma boa ideia
- Dei ao ChatGPT o papel de um engenheiro com experiência em desenvolvimento de ESLint e pedi que escrevesse isso usando AST; ele gerou um excelente boilerplate baseado em babel. Um grande avanço
- Como eu não tinha experiência com babel, fui aprendendo junto com o ChatGPT e adicionando a lógica aos poucos, mas no fim esbarrei em dificuldades. Era difícil lidar com lógica complexa
Eu tentei fazer assim com AST. Esta parte não está funcionando bem; como você abordaria isso?
- Percebi que eu de novo estava tentando obter a resposta certa de uma vez e mudei a estratégia. Quando pensei que não precisava fazer o
traverseapenas uma vez, as coisas começaram a fluir - Fui avançando rápido no formato de executar algo simples primeiro, ver o resultado e ir acumulando lógica
- Nas partes que não funcionavam bem, eu perguntava ao ChatGPT como implementar aquele objetivo específico
- No final, as partes difíceis de transformar em regra eu finalizei com os olhos e as mãos. Nessa altura, a quantidade de código já tinha diminuído muito, então isso era viável
Resultado
- Um código de 18.500 linhas virou 1.335 linhas, e o tamanho do bundle do chunk principal caiu cerca de 7,8%
- Com a redução do tamanho e da lógica do arquivo JS necessário para o carregamento inicial, a velocidade de carregamento inicial melhorou um pouco
- Ganhei experiência e confiança por ter refatorado código legado longo e complexo com AST
- Ganhei confiança de que a maioria dos problemas complexos pode ser resolvida de forma eficaz por meio da colaboração entre três partes: IA + código + humano
Modelo mental para resolver problemas complexos de forma eficaz junto com IA
- Entenda em que a IA é boa, em que o código é bom e em que os humanos são bons.
- Analise o problema que você quer resolver e separe as áreas em que IA/código/humano se saem melhor.
- Ajude a IA a criar bem o primeiro código, execute esse código em partes pequenas enquanto melhora junto com a IA e, no meio do processo e no final, faça você mesmo aquilo que for mais fácil para um humano.
2 comentários
Gostei da leitura.
O post duplicado foi removido.