Programador hoje em dia só se garante com IA?
Recentemente, parei para refletir sobre uma questão que vejo surgindo cada vez mais: será que hoje em dia o programador só se garante com IA?
Nos últimos meses, testemunhamos um avanço impressionante das inteligências artificiais voltadas para o desenvolvimento de software. Ferramentas como Copilot, ChatGPT (e até o Cursor Pro, que é pior ainda) e outras estão facilitando a vida de muitos devs, acelerando a escrita de código (ou até mesmo fazendo ela), corrigindo bugs e até ajudando a entender conceitos mais complexos. Eu mesmo já me peguei recorrendo à IA para resolver problemas que levariam mais tempo se eu tentasse resolver sozinho, mas que me trariam muito aprendizado. Mas isso me fez pensar: será que estamos nos tornando dependentes demais dessas ferramentas?
Olhando para trás, lembro de quando aprender a programar exigia passar horas lendo StackOverflow, entendendo cada detalhe e quebrando a cabeça para encontrar soluções. Hoje, parece que muitos programadores (especialmente os mais novos) já começam dependendo de IA para escrever até os trechos mais básicos de código. Isso é preocupante? Estamos criando uma geração de devs que sabe pedir respostas, mas não entende o porquê delas?
Por outro lado, eu vejo que os que não utilizarem a IA vão ficar pra trás no mercado e serem substituidos aos poucos por aqueles que usam a IA muito bem.
O que vocês acham? A IA está tornando os programadores mais produtivos ou está criando uma bolha de devs que só se garantem com a ajuda dela?
Lembro que há 20 anos a discussão era se os programadores estavam ficando dependentes da internet. IA é uma ferramenta, da mesma forma que o Stack Overflow é.
Há programadores bons que usam IA, da mesma forma que há programadores ruins que não usam.
Qual você é? Ou quer ser?
A IA é apenas mais uma facilidade como tantas outras que vieram antes.
O pessoal fazia contas no papel e olhando tabelas. Veio a régua de cálculo para facilitar a vida em operações complexas.
Então surgiu a calculadora. Sim, piorou pois algumas pessoas não aprendiam nem a tabuada. Quanto é 7 x 8? Vou pegar a calculadora. Antigamente a dica era perguntar: "Como?". Enquanto a pessoa refazia a pergunta, a gente ia fazendo o cálculo mentalmente e dava a resposta. Para coisas complexas, a calculadora é de grande ajuda. Não é necessário fazer cálculos e utilizar tabelas.
Hoje eu vejo nitidamente dois tipos. Por exemplo, compro algumas coisas e o total é 27,30. Na hora do pagamento, entrego 52,30. O caixa me olha com cara de espanto, faz as contas e dá um sorriso. Outros, se eu entrego 50,00, eles perguntam: "O sr. não tem 2,30?". Vejo claramente a diferença entre os dois.
Acho que com a IA vai ser a mesma coisa. Alguns foicarão espantados com algumas coisas e outros, conviverão com a IA sem maiores problemas. Usando o copilot no vscode, por exemplo, é muito interessante como ele consegue completar o código evitando que se digite mais ou tenha que usar copia e cola.
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.
Onde eu vejo que a IA mais ajuda, é nas partes chatas do desenvolvimento, um bom exemplo, no frontend, é quando você vai passar a paleta de cores que o designer fez bonitinho no figma para variáveis no código (por favor, não digitem código de cor manualmente em todo seletor no css ☠), se for um grande numero de cores com bastante variações, é muito, muito entediante fazer.
No meu caso, quando o designer faz um frame bonitinho com o código das cores, eu exporto ele como um png, mando para o gpt e peço para ele ler e me retornar em variáveis sass por exemplo. É mais rápido comparar na hora e ver se ele não errou (geralmente não erra) e mudar alguns nomes.
Outro exemplo pode ser construir tipos, se você quer tipar algo que vem de uma fonte externa (uma API por exemplo), se for um JSON extenso, mandar uma amostra para a IA e pedir para ela gerar a interface pra ti é uma mão na roda, pois fazer isso na mão é demorado e chato. (também se aplica se tu quiser fazer uma tabela SQL com os dados por exemplo).
Enquanto vejo muita gente preocupado com a evolução da IA, alguns conspiracionistas dizendo que a IA poderá criar coisas sozinhas, para mim simplesmente a IA chegou para ser O COMPLEMENTO, ela cuida da parte chata enquanto você tem mais tempo para focar na parte legal do desenvolvimento, isso não só na programação 🤝.
Claro que a IA também pode auxiliar no aprendizado, exemplo, você pode pedir uma lista de comparações entre ferramentas para ter um panorama geral (ex: Redis Pub/Sub vs RabbitMQ vs NATS), ai os detalhes você consegue pesquisar com mais facilidade, pois já viu o panorama geral e sabe por onde começar a buscar.
se a IA acabar, eu volto pro stack overflow bem calmo.
É só mais outra ferramenta, entre tantas. Tem programador que ainda usa o Notepad++ ou Vim "peladão", então vai continuar o mesmo modus operandi, com ou sem IA.
Pode usar de diversas formas, mas eu percebi que pedindo constantemente pra explicar é uma boa fonte de aprendizado. Tem momentos que a explicação é quase um artigo, e leva segundos pra "pensar" e gerar a resposta.
Se os lagos próximos aos datacenters secarem, eu tenho parcela de culpa...
Pra certos "scripts" a ia é foda, mas api novas, ou programas atualizados, o bicho pega, mas mesmo assim é uma otima ferramenta! No geral, a ia é a melhor ferramenta no dev, não acredito que tem gente que não usa por achar que isso vai atralhar! Quem faz melhor uso chega mais longe e mais rapido! Muita coisa ta evoluindo. Duvido que uma pessoa que não ha use possa ter um desempenho melhor do que quem usa, falo de algo novo! a curva de aprendizado tende a ser muito melhor quando estudamos apenas o que da certo do que viver errando e achando que esta certo..
Antigamente tinhamos que buscar referências fora do Brasil, buscar em fóruns esperando alguem dar uma resposta que não seja te humilhando... então a IA como uma ferramente eu vejo muito potencial, não ligo para o termo dependente, afinal de contas isso é uma ferramenta para ser usada, não é porque alguém sabe fazer bloco de tijolos manualmente seja melhor do cara que compra os blocos feitos, ambos tem a mesma finalidade e se você puder investir em algo que economize tempo, estará no caminho certo.
IA é uma ferramenta quando bem utilizada tende a trazer bons resultados, no entando é necessário conhecer bem os conceitos onde está aplicando para que a IA não faça besteira e o programador manter o controle.
Até pouquinho tempo atrás, a moda eram os Low/No Code da vida, a galera do marketing desses produtos diziam que não era necessário saber programar e blábláblá... o resultado é que pessoas como eu ganharam bastante dinheiro refazendo projetos que começaram com Low/No Code mas chegaram em um ponto impraticável. O mesmo vai acontecer com esses projetos tocados com IA por pessoas que não sabem o que estão fazendo.
Como antigamente tinha o dev "Orientado a Stack Overflow" hoje tem os "Orientados a IA" vide o rapaz que fez o SAAS sem saber programar depois ficou desesperado que o site começou a "fazer coisas sem sentido".
IA é uma ferramenta, você ainda precisa sempre buscar ser um bom programador para não virar refém do que a IA cospe pra você, sempre há necessidade de ser crítico com o que ele envia, vou mais longe eu estudo alemão e a professora vê de longe quando alguém usa IA pra fazer um texto pois usa palavras que não são comuns. Ou seja IA é uma ferramenta se você quer que ela resolva o problema pra você e você não entende o que ela está fazendo tem grandes chances de passar algo que vai te dar dor de cabeça!
Eu lembro de quando aprender a programar era ler muitos livros e manuais, conversar com os outros poucos programadores que existiam. Eu peguei até o tempo que até os livros eram difíceis de encontrar. Você comprava um software e vinha uma caixa enorme, se quisesse piratear pagava alguns disketes e achava alguém entrosado com alguém que tinha um original.
Pela minha experiência no Stack Overflow e outros lugares a nova geração não sabe pedir respostas, estou generalizando, claro, elas só sabem espernear e acham que o mundo gira à sua volta, então ela não precisa se mexer, ou outros é que tem que se adaptar a elas.
A IA não está fazendo nada demais, mas as pessoas estão usando de forma equivocada e tem gente que está ficando para trás por não usar o que ela pode realmente ajudar, não são coisas excludentes. Se bobear tem gente que consegue estar nas duas situações.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).