Executando verificação de segurança...
16

LLMs são realmente tudo isso? Relato sincero de um sênior que programa há 20 anos

Como dono de uma software house e um desenvolvedor ativo de software há mais de 20 anos, tenho testado cada vez mais o uso da IA no dia a dia para tentar otimizar meu trabalho e, tentar, produzir cada vez mais. E estou aqui para compartilhar algumas observações com vocês.

A princípio já quero tirar o elefante da sala. Posso resumir que, quanto mais experiência você tem (o meu caso), a IA mais atrapalha o seu fluxo de produtividade do que ajuda. Por enquanto, pouca utilidade em solicitar para a IA fazer algo que eu já sei como fazer. Não vou, por exemplo, pedir para a IA criar uma entidade, montar um controlador, ou criar um middleware, se o tempo gasto para contextualizar ela e ter uma implementação boa o bastante seguindo o padrão do projeto, geralmente, é igual ou superior ao tempo que eu já gastaria para implementar a solução.

Ainda sim não acho um desperdício explorar rascunhos com ela ou prototipagem para trabalhar em cima. Vejo que meu comportamento não mudou muito nesse sentido. Nunca fui de “copiar/colar” do Stack Overflow e ainda não faço com IAs. Mas ver um código cru, rascunhado ou prototipado, ajuda a trabalhar em cima daquilo um pouco mais rápido, uma vez que inicia um caminho para o que eu realmente queria fazer.

Outros fatores em que as LLM são bastante úteis é na atuação como um "auto completar" mais inteligente, o que me poupa de escrever linhas que eu já escreveria e também como uma ferramenta no processo de rubberducking (debater sobre uma feature para que eu possa implementá-la ou, no máximo, gerar um código rascunhado do ponto de vista da LLM). Acredito que, em produtividade, em relação as métricas que sempre monitoro, tenha tido algo em torno de 10% a 15%. Nada comparado a uma “SkyNet, devastadora de devs”.

Inclusive, algo que estava degradando minha produtividade é a quantidade massiva de auto completar. Além de tirar a imersão que eu tenho no processo de programar, simplesmente me deixava mais lento em implementar o código. Dei uma limitada. Também é por isso que prefiro o Copilot ao invés do Cursor, uma vez que ele é menos invasivo. Afinal, para mim, tem pouca utilidade para o tipo de trabalho que costumo exercer (sugestões acima de cinco linhas são um completo lixo). Entendo entretanto que ela funcione bem com tudo que é trivial como CRUD, interfaces genéricas, etc.

Mesmo com esses desafios, tenho me esforçado no processo de adoção da IA em projetos pessoais, onde a cobrança pela qualidade é menor e venho experimentado algumas soluções que geraram algumas reflexões que eu quero compartilhar por aqui. Principalmente com aqueles que estão com medo do que esta por vir.

Uma estratégia que tem se provado mais promissora, mas bem limitada, ainda é uma equação de fatores que descrevo como dev autônomo = ((c + (t^a)) - s) * (cc-a).

  • c é o uso do contexto completo da codebase. Por enquanto, para codebases menores já é possível. Mas quando falamos de softwares mais robustos e elaborados ainda está longe de acontecer. A janela de contexto disponível para a maioria das IA/s do mercado ainda é uma limitação que resulta em alucinações constantes. A falta de contexto provoca uma alucinação maior e é possível observar: fugas de padrões, estratégias que resultam em algoritmos nitidamente má otimizados, inserção excessiva de bibliotecas para funcionalidades que poderiam ser resolvidas in-app;
  • (t^a) são micro-tarefas executas por agentes especializados. "Micro" é a palavra importante aqui para evitar que a IA se envolva em muitos contextos. Cada agente iria extrair o contexto específico para as suas demandas, seguir regras impostas para a atividade que deve exercer e, possivelmente, ter passado por um “fine-tuning” especifico para a tarefa que irá desempenhar. O grande desafio aqui, inclusive, é quebrar o projeto em micro-tarefas. Quando estou programando e implemento uma solução, ela pode se refletir em diferentes camadas e ir de uma ponta a outra para concluir a feature. Por enquanto, quanto maior a tarefa, maiores a chances da LLM sair dos trilhos. Caso encontrássemos a fórmula para criar o agente perfeito, por exemplo, poderíamos ter um agente especializado para:
    • criar features;
    • criar hotfixes;
    • criar testes unitários;
    • descrever commits/pull requests;
    • avaliar qualidade do código;
    • etc.
  • s, é a alucinação submissa. Os modelos atuais, até por uma questão de design de produto, são otimizados para serem cooperativos e concordarem sempre com o usuário. Isso vai acontecer mesmo quando essa concordância entra em conflito com a lógica ou realidade. Essa forma de elaborar as respostas é um problema principalmente para quem não tem experiência. Se você não souber como verificar ou entender o que a IA produziu, será incapaz de encontrar o problema. É o caso de:
    • A IA diz que fez alguma coisa ou diz que uma coisa não é exatamente o que é;
    • Se você verifica, confirma que ela está errada e questiona ela, ela responde que você está certo e que irá fazer corretamente a seguir;
    • Do contrário, ela segue a vida para o próximo tópico e um erro oculto vai parar na ponta final da aplicação e pode causar danos imensuráveis até então;
    • Alguma outra alucinação submissa entra no contexto e o loop reinicia.
  • (cc-a), por fim, expressa a confiança no trabalho que esteja sendo desempenhado pela IA sem assistência. Principalmente em relação a segurança, já tem desenvolvedor menos experiente criando uma dependência com IA e, a partir das respostas dela, deixando passar vulnerabilidades criadas por falta de contexto como: SQL/NoSQL injection; ausência de sanitização de dados; bypass ocultos em validadores; exposição de informações sensíveis; ausência de camadas de segurança como implementação de helmet/cors para API/s; ausência de estratégias de controle de acesso. Você tem que saber de todos os detalhes para que tudo seja resolvido (se for resolvido).

Acontece que para atingir essa equação hoje ainda precisamos de:

  • Mudanças tecnológicas, para que os modelos fiquem mais otimizados, gastem menos recursos computacionais e possam aumentar consideravelmente a janela de contexto. É possível ver que, principalmente após o DeekSeek, o mercado começou a dar "seus pulos" para otimização de modelos. Ainda é incerto dizer se é realmente necessário usar cada vez mais hardware para processamento das informações ou algoritmos mais eficientes podem diminuir o uso excessivo de hardware. A falta de transparência no mercado também contribuí para uma incerteza do que realmente está (ou não) sendo implementado;
  • Mudanças na contextualização da informações, como mencionei antes o contexto é importante e janelas de contexto curtas produzem resultados sem qualidade necessária. Elencar o contexto contexto da codebase, mais o contexto completo do chat ainda é um desafio que produz resultados incontroláveis. Por sorte, é outro desafio que o mercado já está tentando solucionar. As janelas de contexto estão cada vez maiores e algumas estratégias para lidar com contextos em diferentes fontes (arquivos do código-fonte, por exemplo) já estão sendo implementadas;
  • Mudanças na aplicação da LLM e das IA em geral, com a adesão massiva do ChatGPT simplesmente adotamos que a melhor forma de interagir com as LLMs seja com o envio de contexto + prompt. É possível que essa não seja a melhor forma. Porém, sendo essa a melhor forma, criar micro-agentes especializados em micro-tarefas é um caminho que começou a ser explorado. Ainda é um interesse de mercado manter as LLM altamente generalistas (passar a imagem de que um único produto pode resolver tudo). Na prática, o que é fácil para um humano, ainda não é fácil para todas as LLMs disponível no mercado. Não atoa a AGI é tão aclamada;
  • Mudanças no design de produto das LLM, para que os modelos decidam quando devem ter "incertezas" sobre alguma coisa e aguardar um feedback do usuário. Por um lado vejo que não é um interesse do mercado agora, todas as empresas querem que o seu modelo pareça o mais útil de todos e por outro lado "alucinação" é a essência básica dos transformers de uma LLM, sem ela o modelo perderia parte da capacidade de responder e resolver as demandas. Os estudos sobre isso ainda não estão avançados e, pelo menos por enquanto, ninguém sabe como fazer isso pois ainda mal se sabe como LLM funcionam internamente depois de treinados. Não é como se existisse uma base de conhecimento consultável dentro dos modelos.

O mercado de IA está avançando cada vez mais rápido, em um crescimento exponencial. Ainda não sabemos os limites, nem se as mudanças serão totalmente aplicáveis, quando serão aplicáveis e quais os custos envolvidos para aplicá-las.

Mesmo assim, acho que essa não é uma batalha sobre inteligência, mas sobre custos. E a grande verdade é que não sabemos até o momento o custo real desses modelos. As principais empresas hoje no mercado, principalmente a OpenAI, mantem tanto o código-fonte quanto os seus estudos fechados. A verdade é que ninguém garante que o o3-mini tenha um custo realmente barato ou se, dada a concorrência, a OpenAI decidiu absorver os custos. Esses custos se desdobram em muitos fatores, com em custos computacionais (energia, nuvem, hardwares especializados); custos de desenvolvimento (especialistas em IA, cientistas de dados) e custos de manutenção (atualização constante dos modelos, construção de agentes de IA). Tudo isso influencia o preço final que será repassado ao usuário que hoje certamente é suprimido.

O que posso dizer é que, atualmente, para você montar a equação ainda não é possível, tal como fazer um software de valor do zero (vamos tirar como produto dessa equação softwares triviais e API/s baseadas em CRUD). Mesmo que tente fazer agentes especializados para micro-tarefas, o custo ainda é maior do que contratar um desenvolvedor mid-level que já vai ter todas as atividades "integradas no seu cérebro".

Minha opinião é clara. Os custos com IA ainda são explosivos, mas, por razões óbvias, a galera está queimando dinheiro para criar uma dependência em massa e, em algum momento, vão repassar os custos. Será que esse custo ainda será mais econômico do que manter um ou mais desenvolvedores? Essa é a verdadeira questão que vai definir o rumo da carreira na área.

Tudo isso me leva a uma reflexão final para os que temem a IA. Quanto mais dependente você for hoje da IA, menos capacidade de resolver problemas você terá. Se você faz o trivial, sabe o trivial e se limita a isso preenchendo as lacunas que faltam com a terceirização completa do seu trabalho para as atuais LLM, nesse caso, é bom mesmo que você tenha medo.

Se você ainda está se desenvolvendo como profissional, recomendo que começa a adotar limites no uso. Tente resolver um problema antes de recorrer a IA. Evite copiar/colar sem entender o contexto do que está sendo feito. Tenha cuidado para não acreditar 100% do que está sendo entregue. Sempre valide o que está sendo entregue. Saber resolver problemas e propor soluções adequadas é o grande cerne da nossa profissão.

O mercado certamente vai aparar todos aqueles que entraram na profissão porque fizeram um cursinho aqui e outro lá. E o espaço vai ficar para aqueles que se destacam, tem experiência, formação completa e uma capacidade insuperável (por enquanto) de resolver problemas... até, quem sabe, a equação esteja completa.

Carregando publicação patrocinada...
7

Eu sempre tive uma visão crítica sobre a IA e expressei aqui algumas vezes. Me lembro de algumas pessoas totalmente deslumbrandas enxergando coisas completamente absurdas, e sempre valendo a máxima:

qualquer tecnologia suficientemente avançada é indistinguível da magia

O nível de deslumbramento da pessoa com a IA é inversamente proporcional ao quanto ela entende como a IA funciona. Isso vale pra mim e vale para você. E engana-se quem acha que entende as limitações dela. Bem, algumas raras pessoas não vão se enganar, eu já me enganei algumas vezes.

Eu tenho feito experimentos, estou me treinando para usar o melhor possível a IA e obtenho alguns resultados cada vez melhores, mais pela minha evolução do que da IA. Ao mesmo tempo, mesmo sabendo na teoria como ela funciona e entendendo que ela como é construída hoje jamais trará resultados consistentes, tenho visto na prática que ela serve para menos do que eu imaginava que serviria.

Eu tenho falado que ela serve para trabalhos mecânicos e repetitivos, que não exigem raciocício e geração de conhecimento real. Como dizem: "A IA é um futuro sem futuro", porque ela só sabe reproduzir estatisticamente o que já foi feito antes. E se você está se beneficiando de algo que já foi feito antes então é só uma questão de gestão para descobrirem que você está fazendo um trabalhao desnecessário.

Quero ressaltar que sequer ela consegue reproduzir coisas deterministicamente. Eu mando ela gerar uma imagem com uma frase específica, e ela não consegue, porque ela precisa usar a estatística e aí ela não reproduz. Eu mando corrigir coisas sem mudar nada, ela faz um bom trabalho, mas não é perfeito, eu tenho que revisar. Absolutamente tudo tem que revisar. E é claro que as pessoas não estão fazendo isso. Eu tenho preguiça de fazer. E se você revisar, achar erros e consertar, em alguns casos perde mais tempo que se tivesse feito por conta própria.

Agora imagine que você não é capaz de achar o que tem errado e consertar. Não estou mais falando que a produtividade pode ser anulada ou piorada, falo de você pegar informação falsa. Por isso que sempre falei que a IA não serve para aprendizado, e estou indo contra até mesmo algumas pessoas experientes que eu não entendo (alguns entendo) porque ficam espalhando essa fake news. É muito arriscado aprender com fontes ruins, e a IA tem que ser tratada sempre como uma fonte ruim. Ela pode ser boa quando você tem capacidade de analisar e definir o que é útil ou não do que ela te entregou.

Curiosamente a IA ajudará mais o medíocre ou abaixo disso do que quem tem capacidade real, conforme a postagem principal diz, mas ao mesmo tempo ela criará mais problemas para essas pessoas que absorvirão o que ela cospe sem muitos questionamentos e vai atrofiando o cérebro cada vez mais, indo muito abaixo da mediocridade. Haverá o paradoxo de quem mais usa a IA será quem mais será desnecessário na sociedade.

Claro que a IA pode ajudar, mas não é fácil separar quando ela está de fato ajudando ou atrapalhando. Eu desconfio detodo mundo que diz que ela está ajudando muito, ou a pessoa está mentindo para parecer superior ou ela não entende o problema que está passando.

Vai melhorar? Claro que sim, mas provavelmente só com outro modelo completamente diferente e com muitos complementos, como os agentes que falam tanto para alcançar certos objetivos de forma mais específica. Só não será exponencial como alguns dizem, pelo contrário, será logarítimico. Nem vou entrar na questão do custo e consumo de energia disso.

Vou deixar um exemplo aqui, quem consegue apontar os dois problemas que a IA causou nessa coisa besta, simples, mecânica?

https://chatgpt.com/share/67a5ede5-1158-8004-9b05-2fb0ab966114

Sim, eu posso melhorar o prompt e talvez resolver um dos problemas (nem semrpe funciona e costuma ser mais difícil do que parece em alguns casos), mas o outro é mais difícil, especialmente se eu não souber o certo, por isso muitas pessoas vão olhar o corrigido e não saberão dizer nem o problema principal.

Isso foi publicado em um veículo dos mais renomados do mundo e passou batido pelo estagiário. Mas sabe oque é pior? Coloca isso em um corretor fuleiro sem IA. Ele aponta o erro.

Acabei de ver: https://www.runpulse.com/blog/why-llms-suck-at-ocr.

Me choca, dá vontade de chorar, de verdade, vendo que a esmagadora maioria das pessoas, incluindo os programadores, achando que a IA é maravilhosa. Nem estou falando dos bobões que pede para a IA fazer um texto para ela e posta em algum lugar achando que está sendo "o cara" quando na verdade ele está sendo ridículo.

Quem estuda o assunto afirma categoricamente que a IA vai idiotizar a humanidade. Faça sua escolha. Eu estou me esforçando para manter a escolha que eu fiz e ainda a usando porque sem ela eu ficaria para trás. Será um desafio enorme que a maioria desconhece ou menospreza.

Por mais que se fale que as pessoas estão caminhando para um precipício, a massa vai empurrando todos para ele, é o efeito manada facilmente observável na própria internet (como os comportamentos seguem certas modas e como acabam rápido em alguns casos). Não tem o que fazer, assim é o ser humano. Nessas horas eu queria não ser um.

Não adianta para a maioria, estes textos explicam porque a pessoa vai ignorar e achar que não é com ela:

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).

4

Eu comparo o uso do copilot ao uso do forno de microondas, usando a mesma visão do chef Gordon Ramsay. É bastante útil, mas se tu depender dele pra tudo, soh vai fazer porcaria. E saber usar o forno de microondas não vai fazer de ti um chef.

2

Opinião rápida

Sinceramente, as IAs, em geral, não são mais que uma ferramenta onde conseguimos uma wiki rápida, respostas rápidas e resolução de problemas rápida, mas não necessariamente correta. Isso gera erros, enganações e atrasos — não sempre, mas em alguns casos.

Na parte de programação, a IA lida muito bem com o básico. Eu normalmente falo para quem está começando não ficar tão atrelado às IAs no início, pois isso pode prendê-los no básico, sem entender o que estão fazendo, apenas aceitando qualquer resposta que receberem e, assim, achando chato criar código, desistindo da área rapidamente.

Mas uma utilização muito boa que achei para a IA foi seu pequeno raciocínio lógico, entendimento e manipulação de textos. Alguns modelos podem ser usados com uma eficiência muito interessante para entendimento e consulta de grandes volumes de informação e também para um raciocínio rápido em certas tarefas que poderiam ser um pouco tediosas de fazermos manualmente.

Quanto à ideia de que as IAs vão tomar o nosso lugar, isso parece algo que pode acontecer, mas o custo seria muito grande. Acho que valeria muito mais a pena, para todo mundo, que continuassem sendo apenas uma ferramenta.

1

Sou dev experiente e twm me ajudado muito ultimamente, principalmente pq precisei mudar de stack geral, agora começando a trabalhar com outra linguagem e LLM. Com pouco tempo me adaptei a nova lingua, copilot ajuda a gerar várias coisas mais rapidamente, gpt ajuda a tirar muitas dúvidas, cenários etc, mesmo com alucinações. Outros colegas estão criando agents de geração de código no padrão da empresa, também penso em criar para minha stack.

1

Por enquanto, pouca utilidade em solicitar para a IA fazer algo que eu já sei como fazer

Na minha experiência o grande valor da IA é justamente pedir para ela fazer EXATAMENTE o que já sei como fazer.

Coisas que leveria 2 horas para fazer a IA faz em 2 minutos. E eu reviso em 15. É um ganho de tempo gigantesco.

0

Eu queria entender essa obsessão dos programadores mais antigos com a galera que não seguiu o caminho tradicional. Sério! O texto parece até um “copia e cola”, tão igual a tantos outros — “o espaço vai ficar para aqueles que se destacam…” —, óbvio, né? Mas quem se destaca pode ser alguém que começou com um cursinho vagabundo, entendeu o processo e, de forma autodidata, devorou tudo que podia, enquanto alguns graduados tradicionais podem levar anos pra sair do nível júnior. (Fui censurado por causa desse comentário bobo, Deschamps? / Uma bolha pode crescer, crescer e ficar enorme, mas, como é de se esperar, toda bolha um dia estoura)

4

Talvez tenha ficado a impressão de que eu condeno quem não segue um "caminho tradicional", mas não é essa a intenção. Em nenhum momento falei sobre isso, aliás. Acredito que a "formação completa" tenha tocado algum gatilho, mas isso significa a amplitide do conhecimento. O meu ponto é sobre a acomodação de quem para no primeiro passo e acha que, só porque fez um curso rápido ou usa IA para tudo, achando que isso basta para ser um bom profissional. Quem se limita ao trivial acaba, inevitavelmente, tendo dificuldades em lidar com problemas mais complexos.

Como alguém que aplica processos de contratação, observo que a falta de base sólida em teoria da computação, estrutura de dados ou matemática aplicada pode prejudicar o desempenho em projetos desafiadores, em resolver coisas além do trivial. É mais fácil ter contato com tais atividades em uma universidade, de fato. Claro que muitos profissionais aprendem tudo isso sozinhos, de forma autodidata, mas esse caminho não é para todos. Não são poucos os que se perdem por não saberem por onde começar ou por simplesmente não buscarem o aprofundamento necessário.

Acho importante ser autodidata, sou um autodidata. Mas também possuo formação na área. Uma coisa não excluí a outra. Deveria ser complementar e, de fato, é complementar.

Reconheço também que há pessoas com formação acadêmica que acabam estagnadas. Assim como existem autodidatas brilhantes que superam devs graduados. Cada um tem seu caminho. Mas, na prática, muitos recrutadores ainda enxergam no diploma — ou em currículos mais extensos — uma garantia mínima de contato com fundamentos que, por vezes, o autodidata pode não ter tido. Quanto mais atributos e ferramentas tiver a sua disposição, acredito que seja melhor.

Uma formação mais completa contrubui para aqueles que querem se destacar. Qualquer argumento contrário é um pouco empobrecido.

No final, o que conta mesmo é a capacidade de resolver problemas e de buscar conhecimento constantemente, não importa o caminho que você seguiu pra chegar aqui.

Sei que ainda que muitos devs mediocres que fizeram universidade, por exemplo, estão ocupando cargos melhores que deveriam estar em mãos de devs realmente melhores. O mercado ainda valoriza essas coisas. Discuta com ele.

0

No meu caso, estou justamente fazendo uma graduação com todo aquele feijão com arroz tão valorizado, mas que, para mim, não vi nada de extraordinário. É um conteúdo que pode ser aprendido a qualquer tempo e por meios até mais eficientes. Quanto às contratações, o mercado valoriza mesmo é o dinheiro, e também comete erros – empresas quebram, essas coisas.

5

O problema da parte teórica que as faculdades ensinam (ou deveriam ensinar), é que muitos dos benefícios são indiretos e só se percebem no longo prazo.

Várias coisas eu só fui perceber a importância muitos anos depois. Coisas que na época eu não achava tão úteis.

E discordo que todo esse conteúdo pode ser facilmente aprendido em outros lugares. Algumas coisas sim, mas tem muita coisa que esses cursos famosinhos da internet costumam ignorar, ainda estou pra ver um que realmente foca nos fundamentos da mesma forma que a faculdade fazia. Muitos só ensinam receitas de bolo do framework da moda.

Então se vc não viu importância, talvez seja porque é um desses casos que mencionei, que só se percebe no longo prazo. Ou então (sempre existe a possibilidade, e sem mais informações, assumo que será um chute grosseiro, com grande chance de falar besteira) a faculdade que não é tão boa assim...