A IA é uma excelente ferramente tanto para produtividade como para aprendizado.
Eu sinceramente acho mais inteligente usar o ChatGPT por exemplo para pedir uma explicação sobre um determinado tópico ou função, ou para depurar um erro silencioso que foi causado porque na correria usou = no lugar de === (exemplo em JS). Também é ótimo para lembrar de uma sintaxe rapidamente.
O uso da IA se torna um problema quando o desenvolvedor não procura entender o que está acontecendo, apenas copiando e colando código e fingindo que está aprendendo tudo.
Eu, que sou iniciante, vou contar uma experiência em que a IA foi boa e ruim para o meu aprendizado ao mesmo tempo. Quando eu estava aprendendo lógica da programação, "aprendi" a desenvolver um jogo da velha simples. Construi o html e css tudo sem auxilio, e como já tinha corretamente aprendido a atualização de variávies, manipulação de objetos, entre outras coisas, não tive dificuldades em nada nesse código, ou quase nada. O problema é que eu simplesmente não conseguir programar a lógica de verificar a vitória do jogador. Eu criei um array de arrays aonde estavam as possíveis combinações de vitória, mas não sabia como comparar o array de movimentos do jogador com esses arrays. Então usei o ChatGPT para me dar a solução e explicação do que estava sendo feito. Achei que entendi.
Meses mais tarde, ao tentar refazer essa função sem olhar a anterior, o problema apareceu. Eu não tinha entendido nada. Então eu percebi que estava seguindo o caminho errado. Vamos para o chatGPT de novo, mas dessa vez com outra ideia. Comecei a usar o seguinte prompt: "Quero me tornar especislista no método de arrays filter, e a partir dai perguntava tudo que era possível e me vinha na cabeça sobre isso. A cada resposta surgiam novas perguntas e eu só parava quando eu não conseguia pensar em mais nada para perguntar. Então eu partia para o próximo método. No início, nos primeiros métodos, estava tão claro que eu não tinha entendido muita coisa que eu precisava ficar meia hora fazendo perguntas e lendo respostas. No decorrer desse estudo, com 10 minutos e algumas perguntas chaves eu já conseguia entender o método por inteiro. E isso não somente para métodos, mas para entender operadores, estrutura de dados, classes, tipos de dados, declarações de funções e suas diferenças, funções síncronas e assíncronas e como é o fluxo de execução, event loop, etc.
Resultado: mesmo estudando tudo detalhadamente, ainda surgem algumas dúvidas no caminho. Mas agora eu entendo muito mais como as coisas funcionam, e quando um erro surge é fácil de entender o porque e o que pode ser feito diferente. O uso bem feito da IA foi muito benéfico para mim nesse caso.
E sobre rescrever a função de verificação de vitória no jogo da velha? Após realmente entender os métodos de arrays, escrevi em menos de 5 minutos encadeando três métodos diferentes:
const matriz = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6],
];
const player = [5, 1, 4, 8];
const checkVictory = (matriz, playerMoves) => {
return matriz.some((arr) => {
return arr.every((element) => {
return playerMoves.includes(element);
});
});
};
E sim, dá pra tornar esse código mais compacto e escrever em uma única linha, evitando o uso repetitivo de return, mas aqui a ideia é ficar legível e mostrar como fez diferença entre copiar e ler (mas não entender) um código gerado pela IA e realmente aprender como um código se comporta (sendo ensinado pela IA).
A IA é uma espada de dois gumes. Você pode usar essa ferramenta para aprender muito com ela e se tornar mais produtivo, como você pode usar ela para se enganar e acreditar que você realmente está programando seus códigos. Para iniciantes como eu, fica a dica: agarrem a primeira opção.