91 pontos por GN⁺ 2026-01-12 | 1 comentários | Compartilhar no WhatsApp
  • Assistentes de programação com IA se consolidaram como ferramenta central do desenvolvimento prático ao longo de 2025, e, para usá-los com eficácia, um fluxo de trabalho estruturado e a intervenção responsável de humanos são indispensáveis
  • Em vez de pedir geração de código imediatamente, começar por definir especificações claras e um plano e, com base nisso, avançar com a implementação em etapas aumenta ao mesmo tempo a qualidade e a produtividade
  • Quanto mais o trabalho for dividido em unidades pequenas e receber contexto e restrições suficientes, mais os erros e problemas de consistência dos LLMs podem ser reduzidos
  • Em vez de depender de um único modelo, está se difundindo um fluxo de selecionar vários LLMs e ferramentas conforme o objetivo e usar IA como apoio ao longo de todo o ciclo de desenvolvimento
  • No fim, quando o ser humano mantém o controle por meio de testes, revisão e controle de versão, a IA funciona como um poderoso amplificador de produtividade

Visão geral

  • Ao longo de 2025, os assistentes de programação com IA passaram a ser usados em larga escala na escrita de código de produtos reais
  • Engenheiros da Anthropic adotaram ativamente o Claude Code e chegaram ao ponto em que cerca de 90% do código do Claude Code é escrito pelo próprio Claude Code
  • Usar LLMs em programação não é magia feita com um clique: aprender novos padrões e pensar criticamente é essencial
  • É possível usar IA de forma agressiva, mas a responsabilidade pelo software produzido continua sendo do próprio desenvolvedor
  • O ponto central é tratar o LLM não como um tomador de decisões autônomo, mas como um poderoso programador em par que precisa de direção clara, contexto e supervisão

Comece com um plano claro (especificação primeiro, código depois)

  • Em vez de lançar um pedido vago ao LLM, é preciso começar pela definição do problema e pelo plano da solução
  • No caso de um novo projeto, explique a ideia e peça ao LLM para fazer perguntas de forma iterativa, a fim de detalhar requisitos e casos de borda
  • No fim, organize tudo em um spec.md com requisitos, decisões de arquitetura, modelo de dados e estratégia de testes
  • Insira a especificação em um modelo capaz de raciocinar para gerar um plano de projeto que divida a implementação em tarefas lógicas e pequenas
  • Como diz Les Orchard, passar por uma etapa rápida e estruturada de planejamento no estilo "cascata em 15 minutos" faz com que a codificação posterior flua muito melhor
  • Com especificação e plano claros, tanto humanos quanto LLMs entendem exatamente o que estão construindo e por quê, evitando retrabalho e ciclos desperdiçados

Divida o trabalho em chunks pequenos e iterativos

  • Em vez de exigir uma saída gigantesca do LLM de uma vez, divida o projeto em etapas repetíveis ou tickets menores e processe-os em sequência
    • Ex.: usar prompts em unidades como “implemente o Step 1 do plano” e, após codificar e testar, seguir para o Step 2
  • Quando se joga escopo demais de uma vez, o modelo se confunde ou entrega resultados bagunçados, e o custo para consertar dispara
  • Ao pedir que ele gerasse partes grandes do app de uma só vez, houve colapso de consistência e acúmulo de código duplicado, com avaliações de que “parecia ter sido feito por 10 pessoas sem conversar entre si”
  • A cada iteração, aproveita-se o contexto já construído para adicionar coisas de forma gradual, o que também combina bem com a abordagem TDD (desenvolvimento orientado a testes)
  • Algumas ferramentas de agentes de programação dão suporte explícito a esse fluxo em chunks e podem gerar arquivos de plano de prompts para execução sequencial

Forneça contexto amplo e orientação

  • Como os LLMs só conseguem performar dentro do escopo do contexto fornecido, é preciso oferecer código, documentação e restrições relevantes em quantidade suficiente
  • No modo Projects, o Claude pode carregar um repositório inteiro do GitHub como contexto, e assistentes de IDE como Cursor e Copilot incluem automaticamente os arquivos abertos
  • O método de brain dump de passar antecipadamente ao modelo as informações que ele precisa saber é eficaz, incluindo objetivos de alto nível, exemplos de soluções desejáveis e até abordagens a evitar
  • Ferramentas como gitingest e repo2txt permitem despejar em um arquivo de texto as partes necessárias do codebase para fornecê-las ao LLM
  • Claude Skills é uma abordagem que vai além de depender de prompts repetitivos, reunindo instruções, scripts e especialização de domínio em módulos duráveis e reutilizáveis
    • Também existe uma coleção de Skills com curadoria da comunidade
    • A skill frontend-design pode até corrigir a estética de design excessivamente roxa que costuma aparecer em UIs geradas por LLM
  • Também é muito eficaz incluir comentários e regras diretamente no prompt para guiar a IA
    • Ex.: “Aqui está a implementação atual de X. Expanda isso para Y, mas sem quebrar Z”
  • Como os LLMs têm uma característica literal de seguir instruções ao pé da letra, quanto mais detalhadas e contextualizadas forem as instruções, menores tendem a ser as alucinações e sugestões sem sentido

Escolha o modelo certo (e use vários, se necessário)

  • Nem todos os LLMs de programação estão no mesmo nível, e é importante selecionar intencionalmente o modelo ou serviço de acordo com a natureza da tarefa
  • Em alguns casos, usar dois ou mais LLMs em paralelo para validar abordagens diferentes para o mesmo problema é eficaz
  • Cada modelo tem tendências e pontos fortes próprios, então é preciso saber trocar de modelo quando um emperra ou entrega um resultado mediano
  • A abordagem de “cadeiras musicais de modelos”, em que o mesmo prompt é levado e testado em outro serviço, ajuda a evitar pontos cegos de um modelo específico
  • Se possível, usar os modelos mais recentes da camada Pro oferece vantagem clara em qualidade
  • Quando a colaboração será longa, a “vibe” do programador em par de IA — o tom das respostas e a sensação da interação — combinar com você também é um critério importante de escolha

Use IA ao longo de todo o ciclo de vida

  • Em ambientes de linha de comando, agentes de IA como Claude Code, OpenAI Codex CLI e Google Gemini CLI surgiram permitindo ler arquivos, executar testes e fazer correções em múltiplas etapas dentro do diretório do projeto
  • Jules, do Google, e Copilot Agent, do GitHub, podem ser usados como agentes assíncronos de programação que clonam o repositório em uma VM na nuvem, trabalham nele e depois abrem um PR
  • Essas ferramentas não são perfeitas, e entender suas limitações antes de usá-las é essencial
    • Elas aceleram bastante tarefas mecânicas como geração de boilerplate, aplicação de mudanças repetitivas e execução automática de testes, mas a qualidade ainda depende fortemente da orientação humana
  • Ao usar agentes, fornecer um plano ou lista de tarefas logo no início ajuda muito no reconhecimento da ordem correta do trabalho
  • Ainda não estamos no estágio em que um agente de IA implementa sozinho uma funcionalidade inteira e entrega um resultado perfeito; o uso supervisionado continua sendo a abordagem realista
  • Estão em andamento experimentos com ferramentas de orquestração como Conductor para executar vários agentes em paralelo e tratar funcionalidades diferentes ao mesmo tempo

Manter o humano no loop — validar, testar e revisar com rigor

  • A IA gera código plausível sem hesitar, mas a responsabilidade pela qualidade e pelos resultados é inteiramente do desenvolvedor
  • Como diz Simon Willison, o LLM como pair programmer deve ser visto como algo excessivamente confiante e propenso a errar, escrevendo bugs ou código sem sentido com total convicção
  • Snippets de código gerados por IA devem ser tratados como código de um desenvolvedor júnior; é preciso ler, executar e testar o código conforme necessário
  • Inclua testes naturalmente no fluxo de trabalho e, desde a fase de planejamento, desenhe uma lista de testes e um plano de testes para cada etapa
  • Em ferramentas como Claude Code, instrua explicitamente a execução da suíte de testes após implementar a tarefa e, se houver falha, prossiga com a análise da causa e a correção
  • Os casos em que agentes de código funcionam melhor costumam ser os de equipes e indivíduos com uma cultura de testes sólida
  • Em ambientes sem testes, existe o risco de o agente assumir que está tudo certo mesmo tendo quebrado várias partes do sistema
  • Além dos testes automatizados, mantenha a revisão de código como etapa obrigatória, combinando revisão manual e revisão com IA
    • Use uma sessão de IA separada ou outro modelo para pedir que critique ou revise o código escrito pela primeira IA
    • Ex.: depois que Claude escrever o código, pedir ao Gemini que revise erros ou possibilidades de melhoria daquela função
  • Use o Chrome DevTools MCP como ferramenta central do loop de depuração e qualidade, fechando a lacuna entre análise estática e execução real no navegador
    • Dê ao agente de IA acesso para observar diretamente a estrutura do DOM, traces de performance, logs do console e requisições de rede
    • Isso permite executar testes automatizados de UI com LLM sem precisar transferir contexto manualmente
    • Também viabiliza um fluxo de diagnosticar e corrigir bugs com precisão com base em dados reais de runtime
  • Um desenvolvedor relatou que o resultado de depender demais de geração por IA em um projeto urgente foi uma bagunça inconsistente
    • Lógica duplicada, nomes de método diferentes entre si e uma arquitetura não integrada foram se acumulando
    • Ele refletiu que só continuou gerando mais e mais, sem dar um passo atrás para inspecionar a estrutura geral montada pela IA
    • No fim, concluiu com um grande refactoring e a decisão de nunca mais deixar tudo sem supervisão
  • Independentemente do volume de uso de IA, o desenvolvedor deve continuar sendo um engenheiro responsável até o fim
  • Na prática, faça merge ou deploy só depois de entender o código e, se a IA produzir uma implementação complexa, peça comentários explicativos ou uma reescrita mais simples

Fazer commits frequentes e usar controle de versão como rede de segurança

  • Quanto mais você trabalha com uma IA que gera grandes volumes de código rapidamente, mais precisa de hábitos de versionamento detalhados
  • Sempre que concluir uma pequena tarefa ou uma correção automática der certo, faça um commit git com mensagem clara para garantir um checkpoint ao qual voltar imediatamente se a próxima mudança causar problema
  • Trate commits como save points de jogo, para poder retornar ao último estado estável sempre que uma sessão com LLM sair dos trilhos
  • O controle de versão também tem papel importante na colaboração com IA; quando a janela de contexto não consegue lembrar de todas as mudanças, o histórico do git vira um log confiável do trabalho
  • Ao passar os commits recentes, é possível fazer um briefing rápido das mudanças para a IA ou para você mesmo
  • Se incluir git diff ou o log de commits no prompt, o LLM entende com precisão o novo código e o estado anterior
  • LLMs são bons em interpretar diffs e usar ferramentas como git bisect, podendo rastrear com persistência o ponto em que um bug foi introduzido ao longo do histórico de commits
  • Commits pequenos e mensagens claras documentam naturalmente o processo de desenvolvimento, o que ajuda muito em code review
  • Mesmo quando um agente de IA faz várias mudanças de uma vez, se elas estiverem separadas por commit, fica mais fácil identificar exatamente o ponto que causou o problema
  • Use branches ou worktrees para isolar experimentos com IA do código principal
    • Inspirado por Jesse Vincent, crie um git worktree novo para cada novo recurso ou subprojeto
    • Rode várias sessões de coding com IA em paralelo no mesmo repositório, sem interferência entre elas, e faça merge dos resultados seletivamente
    • Isso faz com que cada tarefa de IA fique em sua própria branch sandbox; experimentos fracassados podem ser descartados sem afetar a main
  • Mantenha a regra de nunca fazer commit de código que você não entende ou não consegue explicar

Customizar o comportamento da IA com regras e exemplos

  • Em vez de aceitar o estilo ou a abordagem padrão da IA, dar diretrizes claras já tem grande impacto na qualidade e na consistência da saída
  • Mantenha periodicamente o arquivo CLAUDE.md para explicitar as regras de processo e preferências que o Claude deve seguir e, ao usar Gemini CLI, adote o mesmo padrão com GEMINI.md
    • Ex.: escrever código de acordo com o estilo do projeto, seguir regras de lint, proibir o uso de certas funções, preferir estilo funcional a OOP etc.
    • A ideia é fornecer esse arquivo ao Claude no início da sessão para alinhar todo o trabalho às convenções
    • Segundo Jesse Vincent, essa abordagem reduz a frequência com que a IA desvia para direções indesejadas ou introduz padrões estranhos
  • Mesmo sem um arquivo de regras separado, é possível definir o tom e o comportamento geral com custom instructions ou system prompts
    • Tanto GitHub Copilot quanto Cursor oferecem recursos para configurar globalmente o comportamento da IA por projeto
    • Especifique o estilo de código em um parágrafo curto: “usar indentação de 4 espaços, evitar arrow functions em React, usar nomes de variáveis descritivos, o código deve passar no ESLint”
    • Ben Congdon comentou que ficou surpreso com o fato de o recurso de custom instructions do Copilot ser tão pouco usado; segundo ele, apenas fornecer alguns exemplos e preferências com antecedência já permite gerar código alinhado aos idiomatismos da equipe
  • Fornecer exemplos inline é uma técnica especialmente poderosa
    • Se quiser uma função implementada de certa forma, primeiro mostre uma função parecida que já existe no codebase e oriente: “X foi implementado assim, então use a mesma abordagem para Y”
    • Se quiser alinhar o estilo de comentários, escreva você mesmo uma linha e depois peça para seguir aquele padrão
    • No fim, trata-se de priming do modelo com o padrão a ser seguido, e os LLMs são muito bons nesse tipo de imitação
  • A comunidade compartilha diversos conjuntos de regras para refinar o comportamento de LLMs
    • Como as regras "Big Daddy" ou a adição, no prompt, de uma cláusula do tipo “proibido alucinar ou enganar”
    • São mecanismos para reduzir o comportamento de a IA inventar código inexistente ou agir com confiança excessiva
    • Ex.: adicionar no começo do prompt “se houver incerteza ou faltar contexto do codebase, não invente uma resposta; peça esclarecimentos” para reduzir alucinações
    • Outra regra útil é: “ao corrigir bugs, sempre explique brevemente o motivo em um comentário”; assim, a IA deixa junto comentários como // Fixed: changed X to Y to prevent Z according to spec

Adotar testes e automação como amplificadores de força

  • Quanto mais CI/CD, linters e bots de code review forem usados ativamente, melhor a IA funciona em um ambiente que filtra erros automaticamente
  • Quanto maior a proporção de código gerado por IA em um repositório, mais essencial se torna um ambiente robusto de integração contínua
    • Executar testes automaticamente a cada commit ou PR, exigir verificações de estilo de código como ESLint e Prettier e, se possível, incluir até deploy de staging por branch
    • É possível configurar para que a própria IA dispare isso e avalie os resultados
    • Ex.: quando Jules ou GitHub Copilot Agent abre um PR, o CI executa os testes e reporta falhas → os logs de erro são enviados à IA para conectar com algo como “o teste de integração falhou em XYZ, vamos depurar juntos”
    • O processo de correção de bugs se transforma em um loop colaborativo com feedback rápido, ao qual a IA responde especialmente bem
  • As verificações automatizadas de qualidade de código também funcionam como leme para a IA
    • Incluir a saída do linter diretamente no prompt e, se a IA escrever um código que falhe no lint, copiar a mensagem de erro e pedir “resolva estes problemas”
    • É como ter um professor rigoroso observando a IA por cima do ombro
    • Quando a IA percebe uma saída de ferramenta, como falha em teste ou aviso de linter, ela tenta corrigir com persistência
  • Os próprios agentes de codificação com IA estão incorporando cada vez mais hooks de automação
    • Alguns agentes não reconhecem o trabalho como “concluído” até que todos os testes passem
  • Bots de code review, sejam IA ou humanos, também podem ser usados como filtro adicional
    • Usar os comentários da revisão diretamente como prompt de melhoria
    • Ex.: se o CodeRabbit ou outro revisor deixar “esta função está fazendo X, mas isso não é o ideal”, pedir à IA “você pode refatorar isso incorporando esse feedback?”
  • Ao combinar IA e automação, forma-se um ciclo virtuoso
    • A IA escreve código → as ferramentas de automação detectam problemas → a IA corrige → repete, enquanto o desenvolvedor supervisiona apenas a direção de alto nível
    • É como o trabalho de um desenvolvedor júnior extremamente rápido sendo validado de imediato por um engenheiro de QA incansável
    • Porém, esse ambiente precisa ser construído pelo próprio desenvolvedor e, em projetos sem testes ou automação, há o risco de bugs sutis e queda de qualidade causados pela IA só aparecerem muito depois
  • Uma das metas rumo a 2026 é fortalecer os quality gates ao redor das contribuições de código feitas por IA
    • Mais testes, mais monitoramento e, se necessário, até uma estrutura em que IA revise IA
    • Já foram observados casos reais em que um modelo detecta problemas que outro deixou passar

Aprendizado e adaptação contínuos (a IA amplifica habilidades)

  • Ao tratar toda sessão de programação com IA como uma oportunidade de aprendizado, forma-se um ciclo virtuoso em que, quanto mais o conhecimento cresce, maior também é a ajuda da IA
  • Ao usar LLMs no desenvolvimento, a exposição a novas linguagens, frameworks e técnicas que normalmente não seriam tentados acontece de forma natural
  • Quando há uma base sólida de engenharia de software, a IA amplifica a produtividade em várias vezes; quando essa base é fraca, a confusão também é amplificada
  • Uma observação comum entre desenvolvedores experientes é que os LLMs tendem a reforçar as melhores práticas existentes
    • Especificações claras, testes bem estruturados e code review constante geram ainda mais efeito conforme a IA entra no processo
  • Enquanto a IA cuida do boilerplate, o desenvolvedor pode se concentrar em abstrações de alto nível como design, interfaces e arquitetura, mas isso exige que essa capacidade já exista
  • Como aponta Simon Willison, quase tudo o que forma um engenheiro sênior — design de sistemas, gestão de complexidade, julgamento entre automação e trabalho manual — agora leva aos melhores resultados quando combinado com IA
  • O uso de IA de fato estimula a melhoria da capacidade de engenharia
    • A pessoa se torna mais rigorosa na fase de planejamento e pensa de forma mais consciente sobre arquitetura
    • Ao assumir o papel de gerenciar uma IA que programa muito rápido, mas é um tanto ingênua, o discernimento também se fortalece
  • Sobre a preocupação de que a IA possa reduzir habilidades, quando usada corretamente o resultado tende a ser o oposto
    • Aprender novos idiomatismos e formas de resolver problemas por meio da revisão do código gerado pela IA
    • Aprofundar o entendimento da linguagem e do domínio do problema ao depurar erros da IA
    • Pedir que ela explique o código ou o motivo das mudanças, fazendo perguntas constantes como em uma entrevista com um candidato e extraindo insights
    • Quando houver dúvida sobre uma biblioteca ou abordagem, usar a IA como assistente de pesquisa para comparar opções e trade-offs
  • No panorama geral, ferramentas de IA amplificam a especialização
    • À medida que 2026 se aproxima, em vez do medo de perder o emprego, cresce a expectativa de passar menos tempo em tarefas repetitivas e monótonas e mais tempo em problemas criativos e complexos
    • Por outro lado, sem uma base sólida, também existe o risco de a IA levar a um efeito Dunning-Kruger turbinado por esteroides
  • Como conselho, é preciso um equilíbrio deliberado: continuar refinando as habilidades técnicas, acelerar aprendizado e produtividade com IA e periodicamente programar sem IA para manter os fundamentos afiados
  • No fim, a combinação entre desenvolvedor e IA é muito mais poderosa do que qualquer um dos dois isoladamente, e nessa combinação o lado humano precisa cumprir plenamente seu papel

Conclusão

  • A IA foi adotada ativamente em todo o fluxo de trabalho de desenvolvimento, mas mantendo uma abordagem cuidadosa e liderada por especialistas
  • A direção desejada não é um desenvolvimento em que a IA automatiza tudo, e sim “engenharia de software aumentada por IA”
  • Os melhores resultados surgem quando se aplica à colaboração com IA a mesma disciplina clássica da engenharia de software
  • Todas as práticas conquistadas com esforço — como projetar antes de programar, escrever testes, usar controle de versão e manter padrões de código — continuam válidas e, quando a IA escreve metade do código, tornam-se ainda mais importantes
  • As ferramentas continuarão evoluindo, e o fluxo de trabalho também deve evoluir junto
    • “Estagiários de desenvolvimento com IA” totalmente autônomos assumirão mais tarefas simples, enquanto humanos focam em problemas de alto nível
    • Novas formas de depuração e novos paradigmas de exploração de código podem surgir
  • Em qualquer mudança, a postura é permanecer sempre dentro do loop
    • Guiar a IA, validar os resultados, aprender durante o processo e expandir a produtividade com responsabilidade
  • A conclusão final é clara: assistentes de programação com IA são amplificadores poderosos, mas o diretor do palco continua sendo o engenheiro humano até o fim

1 comentários

 
gracefullight 2026-01-12

Quanto mais tudo é abstraído, mais a engenharia parece se tornar importante.