Elton José logo
Elton José
Habilidades de Desenvolvedor

As Habilidades Que Todo Dev Precisa Cultivar na Era dos Agentes

As Habilidades Que Todo Dev Precisa Cultivar na Era dos Agentes
0 visualizações
10 minutos de leitura
#Habilidades de Desenvolvedor

As Habilidades Que Todo Dev Precisa Cultivar na Era dos Agentes

Toda vez que paro para olhar como minha semana de trabalho mudou nos últimos dois anos, chego numa conclusão desconfortável: escrevo muito menos código linha a linha do que antes, e ainda assim entrego mais. Isso não é sobre digitar mais rápido. É sobre onde gasto minha atenção. Hoje ela vai para decompor problemas, escrever specs que um agente execute sem ambiguidade, e revisar o que volta com o mesmo rigor que revisaria o trabalho de um estagiário brilhante, mas sem contexto nenhum do negócio.

Esse post fecha uma semana em que venho escrevendo sobre desenvolvimento agêntico aqui no blog. Já falei sobre como as entrevistas técnicas mudaram para avaliar exatamente esse tipo de raciocínio, e sobre o risco de perder compreensão profunda do código quando delegamos demais sem verificar. Este post junta as pontas: quais habilidades preciso treinar, hoje, no dia a dia, para não ficar dependente de uma ferramenta que executa bem mas não entende por que o sistema existe.

Quero ser claro antes de entrar no guia: isso não é sobre virar "gerente de IA" e parar de programar. Ainda escrevo código todos os dias, só que numa proporção diferente do meu tempo. O que muda é onde o julgamento humano é insubstituível — e é aí que vale a pena investir energia de aprendizado, porque é isso que separa quem só usa a ferramenta de quem multiplica sua capacidade de entrega com ela.


Decompor problemas complexos em specs verificáveis

A habilidade mais subestimada que eu vejo em desenvolvedores plenos é pegar um problema vago — "melhora a performance dessa tela", "integra esse novo provedor de pagamento" — e transformá-lo em pedaços pequenos, testáveis, com critério de aceite explícito. Antes dava para compensar a falta dessa habilidade com força bruta: você ia escrevendo e testando, e a especificação se revelava no processo. Com agentes executando o trabalho, essa compensação desaparece. Se a spec é vaga, o agente entrega algo plausível e errado, e você só descobre isso tarde.

Na prática, eu treino isso escrevendo a spec antes de abrir qualquer ferramenta de agente, mesmo para tarefas que pareceriam simples demais para merecer isso. Escrevo em texto corrido: qual é o comportamento esperado, quais casos de borda já sei que existem, o que definitivamente não pode acontecer, e como vou saber que terminou. Se não consigo escrever esse último ponto — o critério de "pronto" — é sinal de que ainda não entendi o problema, e nenhum agente vai entender por mim.

Um exercício que uso no meu time: antes de delegar qualquer tarefa a um agente, peço para a pessoa escrever a spec e depois ler em voz alta como se estivesse explicando para alguém que nunca viu o sistema. Isso expõe ambiguidade muito mais rápido do que revisão silenciosa. Quando a spec sobrevive a essa leitura, ela geralmente também sobrevive à execução por um agente sem gerar retrabalho.

Outra prática útil é quebrar tarefas grandes em unidades verificáveis isoladamente — não porque o agente precisa disso para funcionar, mas porque você precisa disso para confiar no resultado. Uma tarefa de "refatora esse módulo" é quase impossível de verificar com confiança; cinco tarefas menores, cada uma com resultado observável, dá para checar uma por uma e pegar erro antes que ele se acumule.

Verificação rigorosa de output, não escrita linha a linha

Se decompor bem é a entrada, verificar bem é a saída — e é aqui que mora o maior risco que comentei no post sobre dívida cognitiva e compreensão de código gerado por IA. O risco não é o agente escrever código ruim de vez em quando; todo código tem bug. O risco real é aceitar código que você não entendeu, porque parecia funcionar, e empilhar essa dívida até o dia em que algo quebra em produção e ninguém do time sabe explicar por quê.

A habilidade que tento treinar aqui é simples de descrever e difícil de praticar: ler todo output antes de aceitar, como revisão de pull request de um colega que você respeita mas não conhece o histórico. Isso significa entender por que a solução foi construída daquele jeito, não só se os testes passam. Passar nos testes é necessário, mas não é suficiente — já vi agente gerar teste que valida o próprio bug porque foi escrito depois da implementação, replicando a lógica errada.

Um hábito que funciona bem para mim: para qualquer trecho gerado por um agente que eu vou aceitar, preciso conseguir explicar em uma frase o que ele faz e por quê, sem reler o código. Se não consigo, releio até conseguir, ou reescrevo eu mesmo a parte que não ficou clara. É mais lento do que simplesmente aprovar, mas é exatamente o tempo que evita a dívida cognitiva se acumular silenciosamente.

Também vale treinar verificação em camadas: a funcional (faz o que devia fazer), a de segurança (não abre brecha nova), e a de manutenibilidade (alguém vai entender isso em seis meses). Um output pode passar na primeira e falhar nas outras duas, e cada uma exige um tipo de leitura diferente. Tento nunca aceitar uma mudança relevante sem passar pelas três, mesmo quando isso parece burocrático no dia corrido.



Orquestrar um portfólio de agentes e ferramentas

Uma mudança real na engenharia de 2026 é que o trabalho de um engenheiro sênior hoje envolve coordenar vários agentes rodando tarefas paralelas, componentes reutilizáveis de times diferentes, e serviços externos que você não escreveu e não vai escrever. Isso é orquestração, não escrita de código, e é uma habilidade distinta que raramente foi ensinada explicitamente para quem veio da geração anterior de desenvolvimento individual.

Orquestrar bem significa saber quando dividir uma tarefa entre agentes em paralelo e quando isso é desperdício porque as partes são fortemente acopladas. Significa também definir claramente as interfaces entre os pedaços — o que cada agente recebe, o que deve devolver, o que fica fora do escopo — porque interface mal definida gera o mesmo bug de integração que sempre existiu entre módulos escritos por pessoas diferentes, só que mais rápido.

Eu pratico isso tratando cada agente como um colaborador júnior com especialidade estreita: dou instrução precisa, delimito o que não é responsabilidade dele, e defino o formato exato que espero de volta. Quando um agente cuida da camada de dados e outro da apresentação, documento o contrato entre eles antes de disparar qualquer um dos dois — como faria numa reunião de arquitetura com humanos.

Um exercício simples para treinar isso no dia a dia é manter um registro de "quem faz o quê" por tarefa relevante: qual agente, qual ferramenta, qual serviço externo, e qual verificação sobra para você em cada ponto de junção. Parece burocracia, mas depois de algumas semanas você começa a enxergar padrões — que tarefa vale paralelizar, que tarefa sempre acaba precisando de retrabalho porque a interface não estava clara o suficiente.

Julgamento de arquitetura e guardrails claros

Decisão de arquitetura é onde o julgamento humano fica mais evidente, porque exige pesar trade-offs de negócio, custo e risco que nenhum agente tem contexto suficiente para avaliar sozinho. Um agente pode sugerir três formas válidas de estruturar um serviço; só você sabe que a equipe vai crescer de três para dez pessoas no próximo semestre, ou que aquele componente já causou três incidentes em produção. Isso é julgamento acumulado, e não se delega.

Guardrail é a outra metade dessa habilidade: definir os limites dentro dos quais um agente opera sem supervisão constante. Isso inclui coisas concretas — que serviços ele pode chamar, que dados pode tocar, que mudança exige revisão humana antes do deploy — e coisas menos óbvias, como o estilo de solução aceitável para aquele sistema. Um sistema de pagamento e um dashboard interno toleram riscos bem diferentes, e o guardrail precisa refletir isso.

Eu treino julgamento de arquitetura revisitando decisões antigas: pego um sistema que ajudei a desenhar há um ou dois anos e pergunto se, com o que sei hoje sobre orquestração de agentes, eu desenharia diferente. A resposta costuma ser sim, e o motivo geralmente não é técnico — é que hoje penso mais em como aquele desenho facilita ou dificulta verificação automatizada e delegação segura de partes do trabalho.

Para guardrails, o hábito mais útil que adotei foi documentar por escrito o que um agente NÃO pode fazer antes de liberar qualquer tarefa sensível — em vez de assumir que ele vai inferir isso do contexto. Essa lista curta já evitou, pelo menos duas vezes no meu time, que um agente tocasse em configuração de produção que não devia. Guardrail claro por escrito supera qualquer confiança implícita no "bom senso" da ferramenta.

Comunicar intenção com precisão

Toda habilidade anterior depende de uma coisa mais básica: comunicar intenção sem deixar espaço para interpretação errada, seja para um agente, seja para um colega humano revisando seu trabalho depois. É, no fundo, uma habilidade de escrita — e é por isso que ela virou tão avaliada em processos seletivos hoje. Quem entrevista para posições de liderança técnica já está reescrevendo os critérios em torno disso, como comentei no post sobre como as entrevistas técnicas mudaram na era dos agentes.

Comunicar intenção com precisão significa evitar ambiguidade estrutural: em vez de "ajusta o comportamento de erro dessa função", escrever exatamente qual erro, em qual condição, com qual mensagem, e qual comportamento anterior deve continuar intacto. Parece pedante, mas é exatamente esse nível de detalhe que separa uma tarefa que um agente executa corretamente de primeira de uma que volta errada e precisa de três rodadas de correção.

Uma prática que recomendo é revisar suas próprias mensagens de intenção — prompts, descrições de tarefa, comentários de pull request — perguntando se alguém sem contexto prévio entenderia exatamente o que fazer e o que não fazer. Se a resposta é "só entende se já souber o contexto", a comunicação ainda não está precisa o suficiente. Isso é treinável como qualquer habilidade de escrita: praticando e cortando ambiguidade repetidamente até virar hábito.



Conclusão

Nada disso substitui saber programar. Pelo contrário: essas habilidades só funcionam bem em quem já entende profundamente como sistemas são construídos, porque decomposição boa, verificação rigorosa e julgamento de arquitetura exigem experiência técnica real por trás. O que muda é a proporção de tempo entre escrever e orquestrar — uma evolução natural, não uma ameaça à profissão.

Se eu fosse resumir num conselho só para essa semana de posts, seria este: escolha uma tarefa real da sua semana e trate ela como um experimento deliberado. Escreva a spec antes de abrir qualquer ferramenta, defina o guardrail antes de delegar, e reserve para verificar o mesmo tempo que reservaria para escrever do zero. Repita isso algumas semanas e a habilidade vira automática, do mesmo jeito que code review virou automático para quem praticou o suficiente.

O mercado já sinaliza que essas são habilidades que valem carreira, não só produtividade. Vale menos tempo se perguntando se a IA vai substituir desenvolvedores e mais tempo investido em ficar bom exatamente nas partes que continuam sendo insubstituivelmente humanas.

Fontes:

Newsletter

Receba os artigos mais relevantes da semana, sem quebrar seu ritmo de leitura

Um resumo semanal com os melhores posts sobre IA, engenharia de software e tecnologia, enviado no melhor momento para continuar a conversa depois da leitura.

Foto de Elton José

Escrito por

eltonjose

Engenheiro de software e estrategista de produtos digitais, focado em IA pragmática e em transformar experiências de trabalho remoto em aprendizados aplicáveis. Compartilho frameworks e decisões reais que uso em consultorias e projetos.

  • Principais temasHabilidades de Desenvolvedor, Decomposição de Tarefas
  • Formato do conteúdoGuia prático + insights de carreira