5 pontos por GN⁺ 2025-10-01 | 2 comentários | Compartilhar no WhatsApp
  • Foi realizado um experimento de 2 semanas para criar um app usando apenas um fluxo de desenvolvimento assistido por IA, mas o resultado ficou aquém do esperado
  • Usando uma stack baseada em Claude Code e Remix, o processo de definição de issues → implementação pela IA → revisão de código → deploy foi repetido continuamente
  • Porém, a frustração aumentou gradualmente por causa de falta de contexto, duplicação de código sem possibilidade de reutilização, quebras no fluxo, alucinação (hallucination) e do problema da lei de Pareto
  • No fim, após 2 semanas, o desenvolvimento centrado em IA foi abandonado e houve retorno ao método tradicional, com satisfação ao reorganizar o código e melhorar a qualidade
  • Atualmente, a IA é usada apenas de forma limitada para busca, rubber ducking, snippets de código, testes e revisão de linguagem, sem planos de ampliar esse uso até que haja uma mudança tecnológica fundamental

Visão geral do experimento

  • Foi conduzido um experimento de 2 semanas aplicando diretamente um fluxo de desenvolvimento com LLM (large language model), que vem recebendo muita atenção recentemente
  • Com base na experiência complexa de UI das contas do Facebook Ads, foi iniciado o desenvolvimento do protótipo adbrew, uma ferramenta simplificada de gerenciamento de anúncios que usa apenas a Facebook Ads API
  • O experimento foi realizado com o objetivo de validar o potencial da IA e com a expectativa de resolver um problema real

Abordagem

  • Acompanhamento de várias contas sobre IA e estudo de workflows, além da escolha da stack com Remix/React Router v7
  • Após assinar o Claude Code, foi investido tempo na configuração inicial do ambiente, incluindo prompts, ferramentas de DX e definição de issues
  • Rotina diária
    • Definir a issue
    • Pedir a implementação à IA
    • Ajustar requisitos com a IA
    • Revisar em detalhe o código gerado
    • Fazer commit/deploy do código
    • Repetir o processo
    • Melhorar periodicamente os guias e arquivos de checagem automática
  • Houve um esforço contínuo para alinhar o fluxo de desenvolvimento ao modo de trabalho da IA

Problemas frequentes

  1. Sempre faltava contexto
    • Mesmo fornecendo muito contexto, a IA não pedia o feedback necessário
    • A IA seguia em frente com suposições próprias, o que resultava com frequência em implementações incorretas
  2. Código sem reutilização nem manutenção viável
    • Houve deficiência na criação de abstrações e código reutilizável
    • Componentes existentes eram recriados repetidamente, aumentando o cansaço na revisão
    • O efeito de incorporar diretrizes foi mínimo
  3. Quebra no fluxo de trabalho
    • Era necessário monitorar constantemente o trabalho da IA
    • Ficava difícil garantir blocos de foco eficientes por issue, causando queda de produtividade
  4. Fenômeno de alucinação (Hallucination)
    • A combinação de uma Facebook API complexa, documentação insuficiente e um SDK com erros de digitação ampliou a confusão causada pela confiança equivocada da IA
    • Informações erradas sobre vários frameworks e bibliotecas eram geradas repetidamente
  5. Agravamento do efeito Pareto
    • A IA conseguia avançar rapidamente em 80% do trabalho total, mas os 20% restantes para finalizar e corrigir consumiam 80% do esforço
    • Surgiram muitos defeitos e bugs importantes em tratamento de exceções, interações entre funcionalidades e outros pontos

Resultado e retrospectiva

  • Após 2 semanas, o código foi ficando cada vez mais bagunçado e fora de controle
  • A perda de prazer no desenvolvimento e os problemas de qualidade levaram ao retorno ao workflow anterior
  • Ao reorganizar manualmente o código novamente, foram encontrados pontos que a revisão da IA havia deixado passar, resultando em uma base de código melhor

Forma atual de usar IA

  • Mecanismo de busca poderoso: eficiente para explorar informações complexas e obter respostas ajustadas ao contexto, com possibilidade de voltar rapidamente ao método tradicional em caso de falha
  • Rubber ducking (brainstorming de ideias): especialmente eficaz para sugerir alternativas, ampliar o campo de exploração e reforçar a busca por palavras-chave relacionadas
  • Assistente de snippets de código: reduz a fadiga no desenvolvimento ao automatizar a geração de funções utilitárias repetitivas
  • Apoio em código de teste: uso da IA para descobrir novos cenários de teste
  • Tarefas relacionadas à linguagem: útil na edição de textos como mensagens de commit, issues e PRs
    • Recentemente, em vez de a IA escrever, passou a ocorrer o inverso: o desenvolvedor escreve e a IA revisa

Conclusão e perspectivas

  • O uso de IA continuará para apoio em tarefas cotidianas, mas no momento a visão é negativa quanto a expandi-lo para delegar todo o processo de desenvolvimento
  • Há um esforço para priorizar o uso de LLMs locais e manter o controle dos dados
  • Continuará a atenção às possíveis mudanças tecnológicas futuras, mas por enquanto a política é manter o uso da IA de forma limitada

2 comentários

 
shakespeares 2025-10-06

Essa é uma desvantagem que sinto bastante ao realizar tarefas complexas.
Perda de prazer + código bagunçado..
Muitas vezes realmente parece não ser adequado para uso além de refatoração de código + ideias.

 
GN⁺ 2025-10-01
Opiniões do Hacker News
  • Recentemente passei mais de uma hora tentando pedir ao ChatGPT um comando rsync bem simples, mas ele continuava fornecendo parâmetros que não funcionavam com a versão do rsync no meu Mac; cerca de metade das falhas afundava em troubleshooting sem sentido, e no resto ele dizia que “percebeu” o próprio erro, mas respondia com a versão errada de novo; mandei validar os parâmetros de acordo com a versão que eu tinha, mas claramente ele não conseguiu fazer isso; na prática, era algo que eu sozinho teria resolvido em 5 minutos, mas fiquei vendo essa tecnologia fascinante desperdiçar meu tempo sem conseguir parar; não sou desenvolvedor profissional, mas fiquei curioso se esse tipo de experiência também é comum entre desenvolvedores; imagino que, se você estiver codando com versões de software que batem com o principal conjunto de treinamento do LLM, talvez não passe por isso, e queria saber se existe algum jeito de evitar isso via prompt; por enquanto, acho difícil dizer que LLM realmente economiza tempo em tarefas de programação; pelo contrário, por causa dessa natureza peculiar, acho que ele faz a gente desperdiçar ainda mais tempo

    • Mesmo quando peço ao LLM para validar os parâmetros de acordo com a minha versão, ele não faz direito; queria ouvir a opinião de especialistas em AI sobre isso; eu também passo muito por esse tipo de situação; no fim das contas, o LLM não entende de verdade o que estou dizendo; matematicamente, dá até para explicar por que isso acontece; mas, ao mesmo tempo, parece que tecnologias como transformers ou truques separados foram colocados para tarefas que não sejam tão constrangedoras quanto contar letras do alfabeto; queria saber se estou deixando passar alguma coisa

    • Entre desenvolvedores, esse tipo de experiência também é muito comum; alguém pode dizer “isso nunca aconteceu comigo”, mas são exceções raríssimas, e a maioria reclama de algo parecido; você também perguntou se dá para evitar esse tipo de problema com prompt, mas se o conteúdo não está nos dados de treinamento, isso não serve para nada; em muitas linguagens os LLMs são realmente péssimos; no caso de ferramentas CLI, mesmo se você disser ao LLM que é macOS ou versão BSD, na maioria das vezes ele continua dando flags GNU; especialmente no macOS, houve uma mudança recente no rsync, então quase não há informação online; veja este link post sobre a substituição do rsync, e a própria ideia de que LLM vai economizar tempo em programação já é o cenário mais otimista; em vez disso, há muitos casos em que as pessoas confiam cegamente no código do LLM, fazem commit e acabam introduzindo bugs ou vulnerabilidades de segurança; referências: blog ai-coding-slowdown e artigo no arXiv

    • Sobre se dá para evitar esse tipo de problema com prompt, não sei bem, mas no Claude Code ele pode executar comandos diretamente; ou seja, em vez de deixar o LLM imaginar qualquer coisa, basta adicionar a saída real de algo como ! man rsync ou ! rsync --help ao contexto

    • Fico me perguntando por que usar um LLM justamente para procurar o manual de uma ferramenta específica

    • Sobre ter passado mais de uma hora tentando obter um comando simples de rsync no ChatGPT: eu tentaria várias vezes adicionando informações suficientes sobre o ambiente e as mensagens de erro e, se ainda assim não funcionasse, tentaria outros modelos, como Claude ou Gemini; se, após um número definido de tentativas, ainda não resolver, então é difícil conseguir ajuda útil de um LLM, então vale muito mais a pena parar e buscar informação do jeito tradicional, como em manuais ou fóruns; em geral, tentar por 10 a 20 minutos e depois seguir em frente é um critério realista; há problemas que o LLM não consegue resolver por mais tempo que você insista, ele só fica rodando em círculos

  • Eu também tenho muitas experiências assim; AI ajuda de verdade quando peço para ela fazer algo que eu já sei fazer; se eu consigo descrever o problema com precisão suficiente para o LLM entender, ele entrega um resultado aceitável, e eu consigo verificar na hora se o código gerado é o que eu queria; se eu delego algo que não conheço totalmente, acaba ficando ainda mais complicado

    • Acho que este texto (tirando o título) traz uma visão bem equilibrada; “deixe tudo com o LLM!” é cheio de problemas, e “delegar só código repetitivo para economizar tempo ou parte dos testes até funciona bem”, mas com um título comum como “às vezes a AI funciona e às vezes não”, isso nunca vai dar cliques

    • AI parece mais um estagiário do que um contratado terceirizado

  • Me identifiquei muito com a frase “as informações de contexto não são suficientes”; por mais contexto que a gente forneça, na maioria das vezes a AI não pede feedback e sai chutando por conta própria até falhar; isso me lembra aquela cena de programa de TV em que alguém faz um pedido a um gênio e conversa como se fosse advogado, conferindo cuidadosamente todas as condições; conversar com LLM dá uma sensação parecida

    • A AI é como aquele colega super inteligente que nunca revela o que realmente está pensando; parece que consegue fazer qualquer coisa, mas não funciona bem em equipe, e uma conversa do tipo “não entendi o que você quer aqui, pode explicar um pouco mais?” simplesmente nunca sai da AI

    • (Acho que sei qual é a cena de TV mencionada.) Naquela cena, no fim das contas tudo se resolveu bem, mas acho que o LLM não sente nenhuma necessidade de cumprir a própria “promessa”; na verdade, o gênio está mais perto de uma AI clássica de ficção científica, toda presa a regulamentos e regras; LLM é completamente diferente

  • Gosto pouco de vibe coding, de ficar me comunicando com AI em vez de codar de fato; em compensação, a principal mudança que fiz foi estruturar melhor o processo de desenvolvimento desde mais cedo; primeiro escrevo um arquivo de especificação, depois peço ao LLM para dividir em checklist passo a passo os pontos dos requisitos que precisam ser explicados com clareza, com base no codebase e em informações online; só depois de terminar cada etapa passo para a sessão seguinte, refinando até chegar a algo mais completo; se eu cansar da conversa com a AI, eu mesmo ou alguém da equipe pode implementar conforme a especificação, então dá para usar isso com flexibilidade

  • Recentemente adotei AI coding em um projeto; não sei exatamente o que vibe coding significa, mas o método que escolhi foi uma interação iterativa e tranquila; usei o Gemini AI studio e fiquei muito satisfeito com o resultado, a ponto de documentar todo o processo e publicar como projeto open source; isso deu um boost perceptível na minha produtividade; a parte ruim foi a AI falar de um jeito educado demais; na minha visão, a AI traz o maior ROI quando o resultado desejado está claro e é preciso comparar opções ao longo do processo; usei em todos os entregáveis do projeto (código principal, casos de teste, scripts de build, documentação, app de exemplo, utilitários); a transcrição completa das conversas de desenvolvimento está aqui, e o código-fonte do projeto está aqui

  • Eu uso AI de forma parecida; esperar dela algum tipo de abstração revolucionária é exigir demais; ela funciona bem em caminhos extremamente comuns, já percorridos por milhares de desenvolvedores; nesse sentido, ela se parece muito com um mecanismo de busca extremamente poderoso

    • Acho que o ChatGPT é basicamente o mecanismo de busca que o Google deveria ter criado; na minha visão, o Google adiou isso porque não queria mexer no negócio que já tinha
  • O jeito que prefiro é pedir ao LLM uma primeira solução ou um exemplo de código de forma simples e, depois disso, seguir trabalhando eu mesmo sem ficar refinando prompt o tempo todo; no final, se necessário, peço ao LLM para revisar meu código; a maior vantagem é pular o loop de refinamento de prompt; esse loop é realmente entediante, toma um tempo enorme e, no longo prazo, pode até reduzir a eficiência do trabalho

  • É muito frustrante que a AI simplesmente siga em frente sem pedir feedback nem fazer perguntas claras

  • Compartilho a opinião da equipe de que “por enquanto vamos usar AI só até esse ponto; se a tecnologia mudar de forma fundamental no futuro, reavaliamos”; fico curioso se LLM vai conseguir ir além disso; mesmo agora, acho que é extremamente útil se for usado do jeito certo

    • Não entendo essa dúvida sobre se LLM consegue fazer mais coisas; eu tenho várias ideias novas por dia para melhorar ferramentas baseadas em LLM, e a maioria é simples trabalho de engenharia, então eu mesmo poderia implementar tudo se quisesse; mesmo que Deus impedisse o treinamento dos próprios modelos LLM, tenho certeza de que ainda daria para extrair um ganho de produtividade de várias dezenas de vezes ao longo de décadas; com processos adequados de desenvolvimento de software e QA, só com melhorias de agentic wrapper ou de pipeline já dá para crescer muito
  • Usar AI para melhorar facebook ads é como os breakers da série Dark Tower