Google usa IAs para acelerar migrações complexas de código
80% do código gerado foi aprovado sem alterações. Mais: 5 anos de React Native na Shopify, glossário sobre GPUs e táticas para crescer na carreira do dev conhecido como "máquina de codar" da Meta.

Modernizar código legado é um desafio complexo em bases de software antigas. O Google resolveu atacar esse problema com uma abordagem que combina grandes modelos de linguagem (LLMs) com ferramentas tradicionais de análise de código. A solução foi descrita em um paper que detalha os processos e resultados de várias migrações já realizadas.
O sistema desenvolvido tem três pilares principais. Primeiro, ferramentas tradicionais como Kythe e Code Search identificam todas as ocorrências de código que precisam ser alteradas, usando análise de referências e buscas por símbolos. Em seguida, um modelo customizado baseado no Gemini gera as mudanças necessárias, seguindo instruções específicas para cada tipo de migração. Por fim, uma etapa de validação verifica se o código alterado compila e passa nos testes.
Uma das migrações mais complexas foi no Google Ads, que precisava atualizar IDs de 32 bits para 64 bits. Os IDs estavam espalhados em milhares de arquivos, muitas vezes sem um tipo específico que facilitasse sua identificação, e mudanças em uma parte do código exigiam atualizações em várias outras. Fazer isso manualmente exigiria centenas de desenvolvedores.
A abordagem do Google mostra como IAs podem ser aplicadas de forma estruturada em problemas. Em vez de tentar usar modelos de linguagem para fazer tudo, a empresa criou um fluxo onde a IA é só uma parte da solução. Isso permite aproveitar os pontos fortes dos LLMs, como entender o contexto do código e gerar alterações consistentes, mas com a segurança de ferramentas e métodos tradicionais.
Mesmo com todo o processo automatizado, revisões humanas continuam essenciais. A equipe descobriu que é preciso dosar a velocidade de geração das mudanças para não sobrecarregar os revisores humanos. Ainda assim, os resultados são expressivos: em média, 80% do código gerado pela IA é aprovado sem alterações, e as migrações são concluídas em metade do tempo que levariam se feitas manualmente.
Pontos interessantes:
Como funciona a detecção: o sistema usa uma técnica chamada breadth-first search para encontrar referências indiretas a código que precisa ser alterado. A busca é feita em três níveis, identificando não só o uso direto de uma função ou variável, mas também onde seus resultados são utilizados.
Prompts especializados: engenheiros criaram conjuntos de instruções específicas para cada tipo de migração. No caso de uma das migrações (atualização do JUnit), por exemplo, o prompt lista regras como remover imports antigos, adicionar anotações corretas e não estender classes desnecessárias.
Validação inteligente: quando encontra erros após uma alteração, o sistema consulta um modelo treinado com histórico de correções anteriores. A IA analisa logs de erro e sugere ajustes que já funcionaram em situações similares.
Lições aprendidas: o paper destaca que dividir o problema em etapas menores é mais eficiente que tentar criar um sistema totalmente autônomo. A equipe também descobriu que nem sempre vale a pena treinar modelos específicos para cada tarefa.
Futuro das migrações: o Google planeja expandir o uso da ferramenta para mais times e criar agentes que possam resolver problemas em sistemas em produção. A empresa aposta na automatização das migrações para reduzir a dívida técnica em grandes bases de código.
O paper completo pode ser acessado no arxiv.org. O Slashdot e o The Register ajudam quem prefere versões mais resumidas.
"Coding machine" da Meta revela segredos para crescer na carreira
Um ex-engenheiro da Meta, Michael Novati, conhecido como "coding machine" ("máquina de codar"), compartilhou sua trajetória incomum de crescimento: em seis anos, saltou de estagiário a engenheiro principal. Em entrevista ao The Pragmatic Engineer, revelou práticas que o ajudaram, como manter uma lista de realizações para mostrar seu impacto e não ter medo de agir. Logo em seus primeiros dias como estagiário, ao notar problemas no organograma da empresa, reescreveu a ferramenta sem pedir permissão — decisão bem recebida pelos colegas. Para devs que buscam crescer, Novati ressalta que mais importante que "passar na entrevista" é encontrar um trabalho alinhado a seus objetivos. Um conselho prático: ele sugere manter um "bloco de notas" com bugs corrigidos e contribuições relevantes e revisá-lo periodicamente com gestores. Mais aqui.
Bun ganha suporte para aplicações frontend em servidor HTTP
Bun (runtime JavaScript) agora permite rodar aplicações frontend e backend em um único servidor HTTP, novidade que chegou na versão 1.1.44. O recurso experimental traz suporte para importar arquivos HTML no Bun.serve()
, permitindo construir aplicações web completas de forma mais simples e sem configurações complexas. Desenvolvedores podem, por exemplo, criar uma aplicação React com backend integrado usando poucas linhas de código. A atualização inclui ainda melhorias na compatibilidade com pacotes Node.js como Axios. Para testar o recurso de frontend, basta usar a flag --experimental-html
ao rodar o Bun. Mais no blog do Bun.
Shopify comprova eficiência do React Native
A Shopify divulgou balanço positivo da migração de seus apps para React Native após 5 anos. A empresa superou seu maior receio: a performance. Os apps alcançaram métricas competitivas, com carregamento de telas em menos de 500ms. O TypeScript e o hot reloading foram destaques, facilitando o trabalho de desenvolvedores web no mobile. Um ponto relevante é que devs nativos continuam essenciais, especialmente para otimizações e recursos que usam hardware específico. A empresa quer ampliar o trabalho com a tecnologia em 2025 e retomar o React Native Working Group, que reúne líderes técnicos de grandes empresas para discutir o futuro da ferramenta. Mais no Shopify Engineering Blog.
Site reúne documentação unificada sobre GPUs
GPU Glossary, novo site da empresa Modal, busca resolver a fragmentação tradicional da documentação de GPUs ao reunir conceitos de diferentes níveis em um único local. O projeto consolida informações de fontes diversas, como documentação da Nvidia, livros técnicos e comunidades. Organizado em três seções principais (hardware, software do dispositivo e software do host), o glossário permite explorar conexões entre conceitos. Se você está se perguntando por que deveria entender mais sobre GPUs, saiba que elas são fundamentais para treinar IAs e para o processamento de dados por LLMs. O conteúdo está em modal.com/gpu-glossary.
Dev otimiza Node.js e alcança ganho de 30x em desafio de processamento
Um desenvolvedor conseguiu reduzir de 5 minutos para 11 segundos o tempo de processamento de um arquivo de 12 GB com 1 bilhão de registros de temperatura em Node.js. O experimento faz parte do desafio "The One Billion Row Challenge". Jacky Efendi alcançou o resultado após três melhorias graduais no código: trabalhar com bytes em vez de strings, criar uma função específica para conversão de números e paralelizar o processamento em múltiplos núcleos. O caso destaca a importância do profiling para identificar gargalos e a vantagem de trabalhar com bytes e números inteiros em vez de strings. Mais no blog do cara.
Obrigado por acompanhar a BeTalent Academy. Se tiver gostado, compartilhe e deixe um comentário. Até a próxima semana, com mais uma edição!