Deixa os agentes de IA cuidarem do refactoring que ninguém quer fazer
Ticket de migração fica no backlog para sempre porque é tedioso, não porque é difícil. É exatamente o trabalho que um agente deveria fazer.
Todo time de engenharia tem aquele ticket no backlog que ninguém encosta. A migração. A troca de framework. A tradução arquivo por arquivo que toca cem arquivos e entrega zero feature para o usuário. Fica lá juntando poeira porque o trabalho é tedioso, não porque é difícil.
Eu estou de licença paternidade no momento, e é um ângulo interessante para notar onde está a fricção de verdade do trabalho de software. Olhando os meus próprios agentes de longe, o padrão ficou claro: se você só usa IA para escrever feature nova, está perdendo o maior superpoder dela. Ela é a equipe de manutenção para o trabalho que ninguém quer carregar.
Três exemplos do meu próprio trabalho com iOS deixam isso claro.
ReactiveSwift para Combine
Remover um framework reativo antigo costuma ser um pesadelo de semanas. Está embutido em toda camada do app, da camada de rede até a UI. Tradução manual suga a energia do time muito antes de a PR estar pronta para review.
Para o agente é um mapeamento metódico com regras claras. SignalProducer vira AnyPublisher. Property vira @Published. flatMap(.latest) vira switchToLatest(). Os padrões são estáveis, as transformações são mecânicas, o agente atravessa centenas de arquivos sem perder o foco. O papel humano sai de digitar a migração e vai para revisá-la.
Sourcery para Swift Macros
A gente tinha um setup legado de geração de mocks em cima do Sourcery. Funcionou por anos, mas exigia ferramenta externa, template Stencil e YAML de config. A migração para Swift Macros nativo vivia no backlog porque o custo de mexer em todo arquivo gerado nunca compensava o cleanup para nenhuma pessoa em particular.
Um agente atravessou isso como pura execução. O resultado é uma biblioteca Swift-nativa, sem arquivo extra de config, sem template language para carregar na cabeça, e com compilação mais rápida de brinde.
UIKit para SwiftUI
O maior sumidouro de tempo em qualquer codebase iOS legado. Centenas de telas construídas com AutoLayout, delegate e UI imperativa. Reescrever na mão é lento, propenso a erro, e o moral cai muito antes do projeto terminar.
Traduzir um UIViewController e suas constraints numa struct declarativa de SwiftUI é tarefa perfeita para o agente. Ele lê o layout, mapeia o state, gera o equivalente moderno. O papel do dev sai do braçal e vai para QA. A saída é revisada, não escrita.
A mudança de estratégia
Quando eu voltar da licença, é a primeira coisa que vou levar para engineering guild. A gente gasta tempo demais em migração sem graça e atualização de boilerplate que ninguém quer no prato. O agente não precisa querer. O agente não tem curva de moral.
Trate IA como equipe de manutenção para dívida técnica, não só como pair programmer para código novo. O trabalho chato não some porque ninguém se voluntariou. As ferramentas agora são outras. O que limita é a disposição para atribuir o trabalho e revisar a saída.