Me pediram para falar com a minha turma de Engenharia da Computação sobre como é o meu trabalho hoje e sobre o que a IA mudou nele. Eu estou me formando agora, com umas três décadas de atraso em relação ao resto da sala, então foi uma conversa com os meus colegas e não para eles. Este texto é o que sobrou daquela conversa.
Antes de qualquer coisa: eu uso IA para programar todos os dias. Isto aqui não é um texto contra IA.
Sistemas sempre existiram
Antes de falar de IA eu preciso falar de sistema, que é uma palavra que a gente repete o dia inteiro sem nunca parar para definir. Um sistema é um conjunto de partes que se relacionam para produzir um comportamento que nenhuma delas produz sozinha. Ele tem entradas, tem regras que transformam essas entradas em alguma coisa, e quase sempre tem uma volta, porque o resultado de hoje vira a condição de entrada de amanhã. E ele tem um propósito, que nem sempre é o que está escrito no papel: o propósito de verdade é aquele que o comportamento do sistema entrega.
Repare que não tem computador nenhum nessa descrição. Essa ideia não é minha. Eu ouvi isso pela primeira vez do meu primeiro professor de análise de sistemas, na escola técnica, e demorei uns bons anos para entender o tamanho do que ele tinha dito — já escrevi sobre ele aqui. Ele dizia que análise de sistemas não é sobre computadores, é sobre sistemas, e que eles sempre existiram e sempre vão existir, com ou sem a gente por perto. Primeiro você analisa, entende e descreve o sistema. Depois, eventualmente, você é chamado para melhorá-lo. Algumas dessas melhorias podem consistir em automatizar etapas, e só nesse momento, como uma das opções de automação, a computação pode entrar como ferramenta. Pular direto para o computador tem nome: automatizar a burocracia. Vá num cartório e conte quantos computadores tem lá dentro.
O mercadinho do bairro é um sistema desses, e é o exemplo que eu usei com a turma. O cliente leva o que precisa, o dono anota na caderneta, existe uma regra sobre quem pode comprar fiado e até quanto, a dívida vai acumulando e no fim do mês tem o acerto. As partes são o dono, o cliente, a caderneta e a regra do fiado; o comportamento que emerge dessas partes juntas é uma linha de crédito, com análise de risco e tudo, só que sem banco, sem contrato e sem nenhum computador.
Esse sistema funciona muito bem enquanto o dono conhece todo mundo pelo nome. Com trinta clientes, ótimo. Com três mil, ele não sabe mais quem está devendo, e aí alguém propõe um relatório de saldos, um aviso de vencimento, uma lista de inadimplentes, um bloqueio no caixa na hora da compra. Nenhuma dessas melhorias nasceu de uma tecnologia. Todas nasceram de entender como o fiado funciona.
![Placas de aviso escritas à mão:
"AVISO: Dia 10 de Dezembro sai a lista dos caloteiros 2021 aqui na grade"
"Calote 2021: 2363,50
Esses foram Premiados... [lista de nomes]."](https://i0.wp.com/osantana.me/wp-content/uploads/2026/10/aviso-lista-de-caloteiros.jpg?resize=1024%2C683&ssl=1)
Três crachás

Quando eu comecei a trabalhar, o mercado contratava Digitador, Programador e Analista de Sistemas. Três profissões, três salários. O analista entendia o problema e escrevia a especificação, o programador escrevia o código a partir dela e o digitador passava aquilo para o computador.
Nos anos 90 o mercado juntou as funções no cargo de “Analista Programador”. Dois trabalhos, um salário, e a profissão de analista sumiu do crachá sem sumir do trabalho. A pergunta que eu faço para a minha turma é outra: depois dessa fusão, qual das duas metades a gente passou a treinar de verdade? A de escrever código. É isso que a faculdade cobra, é isso que o teste técnico mede, é isso que o GitHub mostra.
E agora apareceu uma ferramenta que faz exatamente o papel do programador antigo: recebe uma especificação e devolve código. Rápido, barato e sem reclamar do prazo.
Então a pergunta vira: quem escreve a especificação?
O mercadinho vai pra internet
Peguei esse mesmo mercadinho e propus para a turma que ele passasse a vender pela internet. A escala muda, o dono não conhece mais o cliente nem sabe onde ele mora, e o fiado vira crediário com cartão, parcelamento e Pix. Como a gente modelaria esse sistema?
A primeira resposta é sempre a mesma, e é a resposta que eu também daria: cliente, produto, carrinho, pedido. Depois alguém lembra de pagamento, entrega e estoque. Parece simples.
Aí a gente começa a perguntar.
Catálogo. A camiseta azul tamanho P e a azul tamanho G são o mesmo produto? Se dois vendedores oferecem a mesma camiseta, é o mesmo produto? O site vende produtos, afinal? Não vende. Ele exibe anúncios de itens (SKUs) de produtos de marcas, e cada uma dessas palavras significa uma coisa diferente para o estoquista, para o vendedor e para o marketing. Eu já contei naquele outro texto que caí nessa armadilha todas as vezes que modelei um e-commerce. Foram três. Caí nas três.
Carrinho. Carrinho é um pedido? Se o preço mudar amanhã, qual preço vale? O carrinho é intenção e o pedido é compromisso, então o preço do pedido é uma fotografia do momento da compra e não uma referência ao preço atual da oferta. E se o produto acabar enquanto ele está no carrinho?
Frete. Quem paga? A loja, o vendedor, a transportadora? Frete grátis não existe, alguém sempre paga. E tem a promoção clássica: frete grátis acima de cem reais. Guarde essa regra. Ela volta.
Estoque. Tem uma unidade e dois compradores no checkout ao mesmo tempo. No balcão do mercadinho, quem pegou primeiro levou. Na internet, os dois estão com a mão no produto. Quando reservar o estoque: no carrinho, no checkout, no pagamento? A reserva expira? E quem perdeu, como descobre? Vender sem estoque tem nome, overselling, e às vezes é bug e às vezes é decisão de negócio.
Pagamento. Autorização não é captura. A autorização reserva o limite no cartão, a captura efetiva a cobrança. Autorizo no checkout e capturo no envio? E se a autorização expirar antes de o produto sair? Se o cliente dividir em dois cartões e o segundo negar, alguém precisa cancelar a autorização do primeiro. O pedido tem um pagamento ou vários?
Entrega. Cinco itens, três vendedores, dois centros de distribuição. Um pacote foi entregue e o outro está em trânsito. Qual é o status do pedido? Aquela máquina de estados bonitinha, novo, pago, enviado, entregue, não serve mais: “enviado” é um estado do pacote, e o status do pedido passa a ser derivado dos pacotes.
Pós-venda. Comprei cinco itens em dois pacotes e quero trocar um. Troca é devolução mais um envio novo? Quem paga a logística reversa? Dá para estornar parcialmente um valor que já foi capturado? E, finalmente, a regra do frete grátis volta para cobrar: se a devolução derruba o pedido para noventa reais, o frete que foi dado de graça continua de graça? O Código de Defesa do Consumidor ainda garante sete dias de arrependimento depois do recebimento, então esse fluxo inteiro roda ao contrário também.
Quando eu olho para o desenho que sobra no quadro depois dessa conversa, ele não lembra em nada as quatro caixinhas do começo. E vale reparar em uma coisa: foram quinze minutos de modelagem e ninguém encostou num computador.

A IA trabalha com o problema descrito
Quantas dessas perguntas estariam no seu prompt?
Um agente escreve o código de um carrinho de compras em segundos, e escreve bem. Ele não vai perguntar sobre o frete grátis que quebra na troca, porque você não contou que existe frete grátis, nem que existe troca. O prompt descreve as peças. O problema mora nas conexões entre elas.
Isso não é uma característica da IA, é uma característica de sistemas. Tirar uma peça de um sistema costuma mudar pouco; mudar o jeito como as peças se conectam muda tudo. O John Gall escreveu um livro inteiro sobre isso, o Systemantics, e a frase dele que eu mais repito é a de que todo sistema complexo que funciona evoluiu de um sistema simples que funcionava. O código gerado pelo agente não cai no vazio: ele cai dentro de um sistema que já existe, com pessoas, regras, dinheiro e estoque. E quando esse sistema revidar, quem precisa entender o porquê é você.
Não vou repetir aqui o que já escrevi sobre o gargalo ter se deslocado de escrever para compreender e validar, nem sobre a dívida de compreensão que esse volume de código cria. Isso está no texto sobre agilidade em tempos de IA.
Como é o meu dia
Eu desenhei para a turma o ciclo que eu percorro em qualquer trabalho: entender o problema, refinar as histórias de usuário, propor alternativas de solução, detalhar as tarefas, produzir a solução, revisar e testar, entregar e monitorar. Aí volta para o começo.

O que a IA mudou nesse ciclo foi um pedaço no meio. De detalhar as tarefas até a entrega eu trabalho em par com um modelo, e trabalho bem. As duas pontas continuam comigo: entender o problema do cliente, refinar, propor alternativas, decidir o que monitorar depois que foi para produção. As pontas são exatamente o que a gente fez no exercício do mercadinho.
Antes de passar a bola para o agente eu preciso ter três coisas escritas: a intenção (o que eu quero), as restrições (o que não pode acontecer) e o critério de sucesso (como eu vou saber que deu certo). O frete grátis acima de cem reais é uma restrição. Se eu não consigo escrever isso, eu ainda não entendi o problema, e nenhum modelo vai entender por mim.
Também continua valendo a parte chata: a IA escreveu, mas quem entregou fui eu. Quando der errado em produção às três da manhã, “foi a IA que escreveu” não é resposta.
E quem está aprendendo agora?
Essa é a parte que me preocupa, e é por isso que o convite para falar com a minha turma me interessou.
Programação é uma atividade de prática deliberada. Eu repito isso neste blog há vinte anos, bem antes de existir agente nenhum: você não aprende a programar sem programar, do mesmo jeito que não aprende caratê lendo um livro de caratê. O problema é que agora existe uma ferramenta que entrega o resultado sem exigir a construção. Livro, aula, fórum e Stack Overflow davam insumo e você ainda montava; o agente monta.
E isso é medido. Um estudo da Anthropic (o paper está aqui) colocou desenvolvedores para resolver uma tarefa com uma biblioteca Python que eles não conheciam. Quem usou IA pontuou 17% menos no quiz de compreensão depois, sem ter terminado a tarefa significativamente mais rápido. A maior diferença entre os grupos apareceu nas perguntas de depuração, que é justamente a habilidade de reconhecer que o código está errado e descobrir por quê. Ou seja: a habilidade que mais cai é a mesma que você precisa ter para supervisionar o que a máquina produz.
O mesmo estudo mostra o outro lado. Os grupos que perguntaram conceitos antes de codificar, ou que pediram explicação do código gerado, aprenderam. É a mesma ferramenta, e o que decide o resultado é o processo em volta dela. A regra que eu uso com quem entra no time é essa: peça para a IA explicar, perguntar e revisar, mas não peça para ela fazer o que você ainda não sabe fazer. É a calculadora na aula de cálculo. Ninguém aprende derivada no Wolfram Alpha, aprende na mão, e depois usa a ferramenta pelo resto da vida. A ferramenta nunca foi o problema. A ordem é.
Três perguntas
Eu fechei a conversa com três perguntas que servem para qualquer momento da carreira, e que eu faço para mim mesmo com uma frequência razoável:
- Nesse problema, eu estou construindo ou assistindo?
- Se a ferramenta sumisse amanhã, eu ainda saberia fazer isso?
- Eu consigo explicar por que funciona, ou só que funciona?
Quem programa hoje? Em boa parte, a IA. Quem programará? Quem entender o sistema, fizer as perguntas que ninguém fez e responder pelo resultado.
Deixei de fora um monte de coisa que caberia aqui: spec-driven development e o risco de ele virar Waterfall disfarçado, o que acontece com o code review quando a máquina escreve e a máquina revisa, e o que vira a definição de pronto nesse cenário. Parte disso está no texto sobre agilidade, o resto fica para depois. Para quem quiser puxar o fio da análise de sistemas, os três livros que eu indicaria são o Pensando em Sistemas da Donella Meadows, o Systemantics do John Gall e o Domain-Driven Design do Eric Evans.






















