☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta Vibe Coding. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Vibe Coding. Mostrar todas as mensagens

quinta-feira, 29 de maio de 2025

Vibe Coding sem Mistérios: da Ideia Nebulosa ao Aplicativo em Produção

 

Bellacosa Mainframe e a vibe coding sem misterios

☕ Um Café no Bellacosa Mainframe

Vibe Coding sem Mistérios: da Ideia Nebulosa ao Aplicativo em Produção

O guia do Programador COBOL Padawan para comandar inteligências artificiais, construir software com disciplina e não transformar a nave em sucata espacial

Imagine a seguinte cena.

Você está sentado diante do terminal, com uma caneca de café ao lado, o cursor piscando na tela e uma ideia aparentemente genial atravessando sua mente:

“Vou pedir para a inteligência artificial criar um aplicativo completo.”

Você respira fundo, digita:

“Faça um aplicativo de controle financeiro.”

A IA responde com entusiasmo. Em poucos segundos aparecem telas modernas, botões elegantes, gráficos coloridos e uma estrutura de código que parece saída diretamente dos laboratórios de engenharia da Frota Estelar.

Você executa o projeto.

A tela inicial abre.

O botão “Salvar” não funciona.

O saldo aceita letras.

A senha aparece no código-fonte.

A aplicação perde todos os dados quando a página é atualizada.

O relatório mensal calcula fevereiro com 31 dias.

E, em algum lugar da galáxia, um velho programador COBOL fecha os olhos, segura a caneca de café e murmura:

“Foi por isso que inventamos análise de sistemas.”

Bem-vindo ao universo do Vibe Coding.

Não, Vibe Coding não é pedir “faça um aplicativo” e torcer para que tudo funcione. Também não é uma forma mágica de eliminar análise, testes, segurança, arquitetura ou responsabilidade.

Vibe Coding é uma nova maneira de construir software utilizando inteligência artificial como copiloto, desenvolvedor assistente, gerador de protótipos, revisor e acelerador de tarefas.

A palavra importante aqui é assistente.

A IA pode gerar o código. Pode desenhar a interface. Pode sugerir um banco de dados. Pode escrever testes. Pode até explicar por que determinada abordagem foi utilizada.

Mas alguém ainda precisa comandar a missão.

E esse alguém é você.


O que é Vibe Coding, afinal?

Vibe Coding é o desenvolvimento de software orientado por linguagem natural, contexto, exemplos visuais e ciclos rápidos de interação com inteligência artificial.

Em vez de escrever manualmente todas as linhas de código, o desenvolvedor descreve o que deseja construir.

A IA então transforma essa descrição em:

  • componentes de interface;

  • regras de negócio;

  • APIs;

  • tabelas;

  • arquivos de configuração;

  • testes;

  • documentação;

  • scripts de publicação.

À primeira vista, parece que a programação desapareceu.

Mas ela não desapareceu.

Ela mudou de lugar.

Antes, boa parte do esforço estava em escrever instruções para a máquina utilizando uma linguagem formal.

Agora, parte do esforço passa a estar em descrever corretamente:

  • qual é o problema;

  • quem tem esse problema;

  • qual comportamento é esperado;

  • quais são os limites;

  • quais dados serão usados;

  • o que não deve ser criado;

  • como saberemos se o resultado está correto.

O programador deixa de ser apenas o tripulante que aperta os botões do console e passa a atuar também como:

  • analista;

  • arquiteto;

  • testador;

  • supervisor;

  • dono do produto;

  • comandante da ponte.

O Vibe Coding não elimina o raciocínio técnico. Ele pune, de maneira quase imediata, quem tenta evitá-lo.


Capítulo 1 — Não comece pela aplicação. Comece pelo problema.

Um dos maiores erros de quem entra no Vibe Coding é começar com a solução.

A pessoa diz:

“Quero criar uma rede social.”

Ou:

“Quero criar um aplicativo com inteligência artificial.”

Ou ainda:

“Quero construir o próximo Airbnb.”

Essas frases podem soar empolgantes, mas não descrevem um problema real. Elas descrevem categorias de produtos ou ambições gigantescas.

Uma boa missão começa com três elementos:

  1. uma pessoa específica;

  2. um problema concreto;

  3. um resultado desejado.

Por exemplo:

Programadores COBOL iniciantes têm dificuldade para interpretar códigos de ABEND porque as informações estão espalhadas em manuais extensos e ambientes diferentes.

Agora temos uma situação clara.

A partir dela, poderíamos criar um pequeno aplicativo chamado:

ABEND Navigator

O usuário digitaria um código, como:

S0C7

E receberia:

  • significado do erro;

  • causas mais comuns;

  • perguntas de diagnóstico;

  • exemplos de código;

  • sugestões de correção;

  • cuidados para evitar recorrência.

Perceba a diferença.

“Criar uma plataforma de mainframe com IA” é nebuloso.

“Consultar causas e soluções iniciais de ABENDs” é concreto, testável e viável.

A fórmula Bellacosa para definir o problema

Use esta estrutura:

[Público] precisa de uma maneira de [ação] porque atualmente enfrenta [dificuldade].

Exemplos:

Analistas iniciantes precisam de uma maneira de organizar comandos JCL porque os exemplos estão dispersos em apostilas e anotações.

Estudantes de COBOL precisam de uma maneira de acompanhar o que estudaram porque esquecem quais assuntos precisam de revisão.

Pequenos comerciantes precisam de uma maneira simples de registrar vendas diárias porque utilizam cadernos e planilhas desorganizadas.

Essa frase funciona como as coordenadas da nave.

Sem coordenadas, até uma Enterprise equipada com os melhores computadores pode terminar dentro de um campo de asteroides.


Capítulo 2 — Escolha uma única funcionalidade inicial

Quando a ideia surge, o entusiasmo costuma assumir o controle.

O criador começa a listar:

  • cadastro de usuário;

  • painel;

  • chat;

  • notificações;

  • relatórios;

  • pagamento;

  • inteligência artificial;

  • integração com WhatsApp;

  • exportação para PDF;

  • modo escuro;

  • aplicativo para celular;

  • ranking;

  • gamificação;

  • rede social;

  • marketplace.

Em poucos minutos, aquele pequeno projeto se transforma em um sistema maior que o computador central da Federação.

Esse fenômeno recebe um nome conhecido na engenharia de software:

Scope creep

É o crescimento descontrolado do escopo.

O projeto começa com uma funcionalidade simples e, pouco a pouco, acumula tantas exigências que ninguém mais sabe qual problema ele deveria resolver.

A primeira versão precisa responder apenas uma pergunta:

A funcionalidade principal ajuda o usuário a resolver o problema?

No caso do ABEND Navigator, a primeira funcionalidade seria:

Digitar um código de ABEND e receber uma orientação estruturada.

Só isso.

Sem login.

Sem favoritos.

Sem assinatura premium.

Sem chatbot holográfico inspirado no computador da Enterprise.

Esses elementos podem ser adicionados depois, caso usuários reais demonstrem necessidade.


MVP não significa produto ruim

MVP é a sigla para Minimum Viable Product, ou Produto Mínimo Viável.

Existe uma confusão comum:

“Se é mínimo, pode ser malfeito.”

Não pode.

O MVP pode ter poucas funcionalidades, mas precisa ser confiável dentro do que promete.

Um sistema simples ainda deve:

  • validar dados;

  • exibir mensagens claras;

  • preservar informações;

  • evitar falhas óbvias;

  • proteger informações sensíveis;

  • funcionar no dispositivo esperado;

  • possuir um fluxo compreensível.

O MVP reduz a quantidade de recursos.

Ele não reduz a responsabilidade.

Um programa COBOL que possui apenas três rotinas ainda precisa calcular corretamente. Ninguém aceita um pagamento errado porque o programa era “uma primeira versão”.


Capítulo 3 — Escolha uma ferramenta e permaneça tempo suficiente para aprender

O ecossistema de Vibe Coding oferece diversas ferramentas.

Existem plataformas voltadas para:

  • criação rápida de aplicações;

  • geração de interfaces;

  • edição de código com IA;

  • execução no navegador;

  • publicação automatizada;

  • criação de componentes;

  • desenvolvimento com agentes.

O iniciante olha para todas elas e pensa:

“Preciso testar cada uma antes de começar.”

É assim que nasce o turismo de ferramentas.

Na segunda-feira, ele abre uma plataforma.

Na terça-feira, assiste a um vídeo sobre outra.

Na quarta-feira, migra o projeto.

Na quinta-feira, descobre uma terceira que promete ser dez vezes melhor.

Na sexta-feira, possui cinco contas, quatro projetos incompletos e nenhuma aplicação publicada.

Escolher a ferramenta perfeita é menos importante do que escolher uma ferramenta adequada e aprender seu fluxo.

Perguntas para escolher a ferramenta

Antes de decidir, avalie:

  • ela gera código exportável?

  • consigo executar o projeto fora da plataforma?

  • existe um plano gratuito para testes?

  • a publicação é simples?

  • há suporte ao banco de dados necessário?

  • consigo utilizar controle de versão?

  • os custos são previsíveis?

  • consigo recuperar versões anteriores?

  • a ferramenta atende ao nível de complexidade do projeto?

A melhor ferramenta não é necessariamente a mais famosa.

É aquela que permite construir, testar, entender e manter sua aplicação.


Capítulo 4 — O primeiro prompt é uma especificação disfarçada

Um prompt ruim gera um projeto baseado em adivinhações.

Considere:

“Faça um aplicativo de estudos.”

A IA precisará decidir sozinha:

  • quem é o usuário;

  • quais assuntos serão estudados;

  • quais telas existirão;

  • se haverá login;

  • como os dados serão armazenados;

  • quais relatórios serão exibidos;

  • qual tecnologia será usada.

Ela preencherá essas lacunas com hipóteses.

Algumas serão razoáveis.

Outras serão completamente incompatíveis com o que você imaginava.

Agora veja este prompt:

Crie uma aplicação web responsiva para estudantes de COBOL organizarem sessões de estudo. A primeira versão deve permitir cadastrar assunto, categoria, duração planejada e data. O usuário deve visualizar as sessões do dia e marcar cada sessão como concluída. Não implemente login, pagamentos, compartilhamento, notificações ou gamificação. Antes de gerar código, apresente a arquitetura proposta, a estrutura das telas, os dados necessários e os critérios de aceitação.

Aqui temos:

  • público definido;

  • problema implícito;

  • funcionalidade principal;

  • limite de escopo;

  • comportamento esperado;

  • exigência de planejamento.

Quanto mais contexto fornecemos, menos a IA precisa inventar.

Os sete elementos de um bom prompt inicial

Um prompt sólido deve indicar:

  1. Público — quem utilizará o sistema;

  2. Problema — qual dificuldade será resolvida;

  3. Objetivo — o que o usuário conseguirá fazer;

  4. Escopo — o que entra na primeira versão;

  5. Limites — o que não deve ser criado;

  6. Critérios — como saber se funciona;

  7. Processo — o que a IA deve apresentar antes de codificar.

Essa estrutura se aproxima muito de uma especificação funcional tradicional.

A diferença é que agora ela é escrita em linguagem natural e utilizada diretamente na construção.


Capítulo 5 — Antes do código, peça o plano de voo

Uma das práticas mais importantes no Vibe Coding é pedir um plano antes da implementação.

A tentação é grande.

Você descreve o projeto e quer ver imediatamente a tela funcionando.

Mas dez minutos analisando o plano podem economizar horas de correção.

Antes de gerar código, solicite:

  • arquitetura;

  • fluxo do usuário;

  • telas;

  • componentes;

  • estrutura dos dados;

  • validações;

  • riscos;

  • estratégia de testes;

  • processo de publicação.

Depois, questione.

Pergunte:

Por que essa arquitetura foi escolhida?

Existe uma alternativa mais simples?

O sistema realmente precisa de banco de dados?

Quais requisitos foram inferidos?

Quais são os principais riscos?

Que parte pode gerar custo futuro?

Existe alguma dependência que pode prender o projeto à plataforma?

Essa etapa é semelhante a revisar um fluxograma antes de escrever um programa COBOL de cinco mil linhas.

É muito mais barato corrigir uma seta no diagrama do que descobrir em produção que a rotina de fechamento contábil está executando antes da validação.


O poder da pergunta: “O que você presumiu?”

Essa é uma das perguntas mais poderosas para trabalhar com IA:

Quais decisões você tomou com base em suposições que eu não informei?

A IA pode responder que presumiu:

  • um único usuário;

  • idioma português;

  • armazenamento local;

  • ausência de dados sensíveis;

  • uso em desktop;

  • ausência de autenticação;

  • disponibilidade permanente da internet.

Agora você pode validar ou corrigir cada hipótese.

Uma inteligência artificial não distingue automaticamente uma regra real de uma lacuna preenchida por probabilidade.

Cabe ao comandante confirmar as coordenadas.


Capítulo 6 — Uma mudança por vez

Após gerar o protótipo, começa a fase de ajustes.

É comum enviar um pedido assim:

“Troque o menu, coloque login, corrija o formulário, mude as cores, adicione um gráfico, crie o banco, ajuste o celular e publique.”

Isso parece eficiente.

Na prática, aumenta brutalmente a chance de regressões.

A IA pode corrigir o formulário e quebrar a navegação.

Pode adicionar o banco e remover dados simulados ainda usados por outras telas.

Pode alterar o layout e destruir a responsividade.

A abordagem correta é trabalhar em mudanças pequenas.

Exemplo:

No formulário de cadastro, impeça que o campo “Assunto” seja enviado vazio. Não altere outros componentes.

Depois:

Mostre uma mensagem de erro abaixo do campo. Preserve o layout atual.

Depois:

Crie um teste para validar esse comportamento.

Uma alteração por vez oferece:

  • maior controle;

  • teste mais simples;

  • reversão mais fácil;

  • menor risco;

  • melhor compreensão do projeto.

Programadores COBOL experientes conhecem esse princípio.

Quando um programa processa milhões de registros, você não altera vinte parágrafos sem necessidade porque encontrou uma condição incorreta em VALIDA-CLIENTE.

Na manutenção, precisão vale mais do que entusiasmo.


Capítulo 7 — Screenshots são telemetria visual

Uma das grandes vantagens das ferramentas modernas é a possibilidade de utilizar imagens durante a conversa.

Em vez de escrever:

“A tela está estranha.”

Você pode anexar uma captura e explicar:

No celular, o botão “Salvar” ultrapassa o limite do cartão. Ele deve ocupar toda a largura disponível abaixo dos campos. Não altere a versão desktop.

A imagem reduz ambiguidades.

Ela mostra:

  • a posição do erro;

  • o tamanho dos elementos;

  • o estado da aplicação;

  • a diferença entre o esperado e o atual.

Como enviar um bom pedido com screenshot

Inclua quatro elementos:

  1. Localização
    “No cartão superior direito...”

  2. Problema atual
    “O texto sobrepõe o botão...”

  3. Resultado esperado
    “O título deve quebrar em até duas linhas...”

  4. Limite da mudança
    “Não altere os demais cartões...”

A captura de tela é como um painel de diagnóstico.

Ela ajuda, mas ainda precisa de interpretação.

Um alerta no console da Enterprise não diz sozinho qual decisão o capitão deve tomar.


Capítulo 8 — Banco de dados apenas quando houver motivo

Muitos projetos de Vibe Coding começam com uma infraestrutura maior do que o próprio problema.

Antes de validar a funcionalidade, o criador já possui:

  • banco relacional;

  • autenticação;

  • funções serverless;

  • APIs;

  • triggers;

  • filas;

  • armazenamento;

  • regras de acesso;

  • painel administrativo.

Ele passa dias configurando tecnologia e quase nenhum tempo testando se alguém precisa da aplicação.

Para um protótipo, muitas vezes é suficiente utilizar:

  • dados simulados;

  • arquivo JSON;

  • armazenamento local;

  • planilha;

  • estrutura temporária em memória.

O banco de dados passa a ser necessário quando precisamos:

  • persistir dados entre dispositivos;

  • trabalhar com vários usuários;

  • controlar permissões;

  • relacionar entidades;

  • processar volumes maiores;

  • manter histórico;

  • garantir consistência.

Exemplo prático

Considere um diário de estudos.

Na primeira versão, o navegador pode armazenar:

Assunto
Categoria
Data
Nível de confiança
Observação

Se o usuário utiliza somente um computador, isso pode ser suficiente para validar a ideia.

Mais tarde, ao precisar acessar pelo celular e pelo desktop, um banco remoto passa a fazer sentido.

A regra é simples:

Adicione complexidade quando ela resolver um problema real, não quando parecer tecnologicamente elegante.


Capítulo 9 — A IA também pode modelar dados errado

A inteligência artificial pode criar uma tabela em segundos.

Isso não significa que a estrutura esteja correta.

Imagine uma tabela:

TAREFAS
ID
USUARIO
CLIENTE
TITULO
STATUS
PRAZO
OBSERVACAO

Para uma demonstração, pode funcionar.

Mas, se vários clientes possuem muitas tarefas, provavelmente teremos entidades separadas:

USUARIOS
CLIENTES
TAREFAS

Agora surgem perguntas importantes:

  • qual é a chave de cada tabela?

  • uma tarefa pode existir sem cliente?

  • o que acontece quando um cliente é excluído?

  • precisamos guardar histórico?

  • o status possui valores controlados?

  • uma tarefa pertence a um ou mais usuários?

  • informações antigas podem ser alteradas?

Essas decisões continuam existindo.

Vibe Coding não revogou normalização, integridade referencial ou consistência transacional.

No mundo mainframe, ninguém trataria a estrutura de um arquivo VSAM ou uma tabela Db2 como detalhe decorativo.

Dados são o coração do sistema.

A interface pode mudar.

A tecnologia pode mudar.

Mas um dado mal modelado costuma assombrar o projeto por muitos anos.


Capítulo 10 — Segurança: o campo minado escondido

Aplicações geradas rapidamente podem conter vulnerabilidades sérias.

Entre os problemas mais frequentes estão:

  • chaves de API expostas;

  • senhas armazenadas de forma inadequada;

  • ausência de validação no servidor;

  • acesso aos dados de outros usuários;

  • permissões excessivas;

  • informações pessoais em logs;

  • upload de arquivos sem controle;

  • dependências vulneráveis;

  • consultas inseguras.

A interface pode parecer maravilhosa enquanto o sistema possui uma porta aberta no casco da nave.

Nunca aceite uma declaração genérica como:

“A aplicação está segura.”

Peça explicações concretas:

Onde os segredos são armazenados?

Alguma chave é enviada para o navegador?

Como um usuário é impedido de acessar dados de outro?

A validação ocorre apenas na tela ou também no servidor?

Existe proteção contra envio duplicado?

Quais informações aparecem nos logs?

Como os dados são excluídos?

Quais bibliotecas foram instaladas?

Para sistemas que lidam com pagamentos, saúde, dados pessoais, documentos ou credenciais, a revisão humana especializada é indispensável.

A IA pode acelerar o trabalho.

Ela não pode assumir legalmente a responsabilidade pelo vazamento.


Capítulo 11 — Teste o usuário real, não o usuário imaginário

A IA costuma demonstrar o caminho perfeito:

  1. o usuário preenche tudo corretamente;

  2. clica uma vez;

  3. a conexão está estável;

  4. o banco responde;

  5. a operação termina.

Usuários reais fazem coisas muito mais interessantes.

Eles:

  • deixam campos vazios;

  • digitam texto em campos numéricos;

  • clicam duas vezes;

  • perdem a conexão;

  • voltam pelo navegador;

  • abrem várias abas;

  • colam textos enormes;

  • utilizam caracteres especiais;

  • fecham a tela no meio da operação.

Por isso, teste pelo menos os seguintes cenários.

Caminho feliz

Dados válidos, fluxo normal e resultado esperado.

Entrada inválida

Campos vazios, números negativos, datas impossíveis e formatos errados.

Repetição

Cliques duplos, envio repetido e atualização da página.

Interrupção

Falha de rede, erro do servidor ou fechamento inesperado.

Permissão

Tentativa de acessar recursos de outro usuário.

Persistência

Verificação de que os dados permanecem corretos após reiniciar.

Responsividade

Teste em computador, tablet e celular.

Volume

Teste com dez, cem e mil registros, quando fizer sentido.

O programa não está pronto porque funcionou uma vez.

Ele começa a merecer confiança quando continua funcionando diante de comportamentos imperfeitos.


Capítulo 12 — Controle de versão: o botão de voltar no tempo

Uma das práticas mais importantes no desenvolvimento é o controle de versão.

Ferramentas como Git permitem registrar o estado do projeto ao longo do tempo.

Antes de uma mudança importante, você cria um ponto de recuperação.

Se algo quebrar, pode comparar versões ou retornar.

Sem controle de versão, o fluxo costuma ser:

projeto-final
projeto-final-2
projeto-final-agora-vai
projeto-final-correto
projeto-final-correto-mesmo
projeto-final-correto-mesmo-ultimo

Esse sistema de nomes funciona apenas até o dia em que ninguém lembra qual versão realmente funcionava.

No Vibe Coding, o controle de versão é ainda mais importante porque agentes podem alterar vários arquivos rapidamente.

Uma boa instrução é:

Antes de modificar, informe quais arquivos serão alterados. Faça a mudança em uma etapa isolada e gere um resumo ao final.

E, idealmente:

Crie um commit antes da alteração.

Mesmo quem está começando deve aprender pelo menos:

git init
git status
git add .
git commit -m "Versão inicial funcional"

Isso já cria uma rede de segurança.

Na Frota Estelar, antes de testar uma dobra experimental, alguém certamente registra o estado dos sistemas. Pelo menos deveria.


Capítulo 13 — Publicar cedo, mas não de maneira irresponsável

Manter o projeto para sempre no computador impede o aprendizado real.

O usuário precisa testar.

A publicação revela problemas que não aparecem no ambiente local:

  • lentidão;

  • diferenças de navegador;

  • falhas de configuração;

  • permissões;

  • erros de rota;

  • comportamento em dispositivos móveis;

  • custos inesperados.

Entretanto, publicar cedo não significa lançar um sistema inseguro para milhares de pessoas.

Uma estratégia sensata é:

  1. testar localmente;

  2. compartilhar com uma pessoa;

  3. corrigir problemas graves;

  4. liberar para cinco usuários;

  5. observar o uso;

  6. coletar feedback;

  7. estabilizar;

  8. ampliar gradualmente.

Essa abordagem é chamada de liberação progressiva.

Ela reduz risco e melhora o aprendizado.

Tenha um plano de reversão

Antes de publicar, responda:

  • como volto para a versão anterior?

  • existe backup?

  • onde os erros serão registrados?

  • quem será avisado em caso de falha?

  • consigo desativar a funcionalidade?

  • os dados serão preservados durante a reversão?

Publicar sem rollback é como entrar em dobra sem saber como reduzir a velocidade.

Pode funcionar.

Mas você não quer descobrir o contrário perto de uma estrela.


Capítulo 14 — Feedback real vale mais que elogio educado

Depois que os primeiros usuários testarem, não pergunte apenas:

“Você gostou?”

Quase todos responderão “sim”.

Perguntas melhores são:

Em que momento você ficou confuso?

O que esperava que acontecesse ao clicar?

Qual etapa demorou mais?

Que tarefa você ainda precisou fazer fora da aplicação?

Qual parte parece desnecessária?

Você usaria isso novamente amanhã?

O objetivo não é receber aplausos.

É descobrir atrito.

Talvez você tenha criado um painel sofisticado com gráficos, enquanto os usuários realmente desejam um botão simples para duplicar o registro anterior.

O usuário real frequentemente destrói nossas teorias em menos de cinco minutos.

E isso é ótimo.

Cada hipótese destruída cedo economiza meses de trabalho na direção errada.


Capítulo 15 — O programador COBOL possui uma vantagem secreta

À primeira vista, Vibe Coding parece pertencer apenas ao universo de JavaScript, aplicações web e startups.

Mas programadores COBOL possuem uma vantagem enorme.

Eles estão acostumados a pensar em:

  • regras de negócio;

  • processamento confiável;

  • validação;

  • dados;

  • impacto de alterações;

  • transações;

  • recuperação;

  • produção;

  • manutenção de longo prazo.

Um programador COBOL sabe que o valor do sistema não está apenas na sintaxe.

Não é o MOVE, o PERFORM ou o EVALUATE que sustenta um banco.

É o entendimento do processo.

Da mesma forma, no Vibe Coding, saber pedir código é apenas uma parte.

O verdadeiro diferencial é saber:

  • o que deve ser construído;

  • o que não deve ser construído;

  • qual regra não pode falhar;

  • qual dado precisa ser protegido;

  • qual cenário precisa ser testado;

  • qual alteração pode afetar outra rotina.

O Padawan COBOL que aprende a utilizar IA sem abandonar seus fundamentos pode se tornar um profissional extremamente poderoso.

Ele combina:

  • experiência de negócio;

  • disciplina de sistemas críticos;

  • conhecimento de dados;

  • capacidade de modernização;

  • velocidade de ferramentas generativas.

É quase como instalar motores de dobra em uma nave construída para sobreviver décadas.


Capítulo 16 — Exemplo completo: COBOL Learning Log

Vamos construir mentalmente uma aplicação simples.

Problema

Estudantes de mainframe aprendem muitos assuntos, mas não acompanham o que já estudaram e o que precisa de revisão.

Público

Programadores COBOL iniciantes.

Objetivo

Registrar tópicos estudados e indicar o nível de confiança.

Funcionalidade principal

Cadastrar e consultar tópicos de estudo.

Dados mínimos

  • assunto;

  • categoria;

  • data;

  • nível de confiança;

  • observação.

Categorias

  • COBOL;

  • JCL;

  • Db2;

  • CICS;

  • VSAM;

  • z/OS.

Fora do escopo inicial

  • login;

  • pagamentos;

  • certificados;

  • chat;

  • integração com cursos;

  • ranking;

  • gamificação;

  • IA recomendando conteúdo.

Prompt inicial

Ajude-me a criar uma aplicação web responsiva chamada COBOL Learning Log, destinada a estudantes iniciantes de mainframe. O problema é que eles estudam vários tópicos, mas não possuem uma visão clara do que aprenderam e do que precisa de revisão.

A primeira versão deve permitir cadastrar um tópico contendo nome, categoria, data de estudo, nível de confiança de 1 a 5 e observação opcional. A tela inicial deve listar os registros e permitir filtro por categoria.

Não implemente login, pagamentos, certificados, compartilhamento, chat ou integração com IA.

Antes de gerar código, apresente a arquitetura mais simples, o fluxo do usuário, as telas, a estrutura dos dados, as validações, os testes e a estratégia de publicação.

Utilize armazenamento local inicialmente. Faça no máximo cinco perguntas caso alguma decisão seja indispensável.

Critérios de aceitação

  • assunto obrigatório;

  • categoria obrigatória;

  • nível entre 1 e 5;

  • data não pode estar no futuro;

  • dados permanecem após atualizar;

  • filtro funciona corretamente;

  • exclusão exige confirmação;

  • interface funciona no celular.

Perceba como o projeto deixou de ser uma ideia vaga.

Agora temos uma missão clara, critérios objetivos e fronteiras definidas.


Capítulo 17 — O ciclo Bellacosa de Vibe Coding

Um fluxo seguro pode seguir dez etapas.

1. Descrever

Explique o problema e o público.

2. Limitar

Escolha uma única funcionalidade principal.

3. Planejar

Peça arquitetura, telas e dados antes do código.

4. Questionar

Investigue suposições, riscos e custos.

5. Construir

Implemente uma parte pequena.

6. Executar

Teste no ambiente real.

7. Observar

Compare o resultado com os critérios.

8. Corrigir

Faça uma mudança por vez.

9. Publicar

Disponibilize para poucos usuários.

10. Aprender

Use o feedback para decidir o próximo passo.

Depois, repita.

Esse ciclo é muito mais importante do que qualquer ferramenta específica.

Ferramentas mudam.

Modelos mudam.

Plataformas surgem e desaparecem.

O processo continua válido.


Capítulo 18 — Um prompt mestre para sua próxima missão

Utilize este modelo:

Atue como analista de produto, arquiteto de software, desenvolvedor e testador responsável.

Ajude-me a criar um aplicativo para [PÚBLICO] resolver [PROBLEMA].

O resultado principal esperado é [RESULTADO].

Antes de gerar código:

  1. reescreva o problema de forma objetiva;

  2. identifique dúvidas e suposições;

  3. proponha um MVP com uma única funcionalidade central;

  4. liste o que ficará fora da primeira versão;

  5. recomende a ferramenta mais simples;

  6. descreva o fluxo do usuário;

  7. proponha as telas;

  8. modele os dados mínimos;

  9. liste validações;

  10. identifique riscos de segurança;

  11. crie critérios de aceitação;

  12. prepare casos de teste;

  13. explique a publicação;

  14. defina uma estratégia de rollback.

Não acrescente funcionalidades sem minha autorização.

Durante a implementação, faça uma mudança por vez, informe quais arquivos serão alterados e preserve tudo o que já estiver funcionando.

Esse prompt não garante perfeição.

Mas cria um ambiente muito mais controlado.


Curiosidades do convés de engenharia

A IA não “entende” seu projeto como um colega humano

Ela trabalha a partir do contexto disponível.

Quando informações faltam, ela pode completar as lacunas com padrões estatísticos.

Isso significa que uma resposta convincente pode conter uma decisão errada.

Código bonito não significa código correto

Uma interface elegante pode esconder:

  • regra incorreta;

  • falha de segurança;

  • cálculo errado;

  • dados inconsistentes;

  • dependência problemática.

O protótipo é uma pergunta, não uma resposta

Seu objetivo inicial não é provar que a ideia é genial.

É descobrir se ela resolve um problema.

A complexidade cobra juros

Cada banco, integração, serviço e dependência adiciona custo de manutenção.

O usuário raramente pede aquilo de que realmente precisa

Ele pode pedir um gráfico.

Após observar seu trabalho, você descobre que ele precisava de um alerta.


Easter egg da Frota Estelar

Em muitas histórias de Star Trek, o computador da Enterprise parece capaz de executar quase qualquer ordem:

“Computador, analise a composição da atmosfera.”

“Computador, localize a nave.”

“Computador, simule o cenário.”

Mas observe um detalhe.

Os oficiais fazem perguntas específicas.

Eles informam parâmetros.

Eles verificam resultados.

Eles discordam do computador.

Eles cruzam dados.

Eles assumem o comando quando a situação muda.

A ficção nunca disse que possuir um computador poderoso eliminaria a necessidade de julgamento humano.

Na verdade, ela sugeriu o contrário.

Quanto mais poderosa a tecnologia, mais importante se torna a responsabilidade de quem a utiliza.

Vibe Coding é exatamente isso.

Temos acesso a uma espécie de computador de bordo capaz de criar sistemas em minutos.

A pergunta não é apenas:

“O que ele consegue construir?”

A pergunta mais importante é:

“Somos capazes de descrever corretamente o que deve ser construído?”


Conclusão — A IA é o motor de dobra, não o capitão

Vibe Coding representa uma transformação extraordinária.

Pessoas que nunca construíram software podem criar protótipos.

Programadores experientes podem acelerar tarefas repetitivas.

Empresas podem validar ideias em menos tempo.

Estudantes podem aprender observando código funcional.

Mas nenhum desses benefícios elimina os fundamentos.

Um bom sistema ainda exige:

  • clareza;

  • escopo;

  • análise;

  • validação;

  • testes;

  • segurança;

  • controle de versão;

  • observabilidade;

  • responsabilidade;

  • aprendizado contínuo.

A habilidade principal do futuro talvez não seja escrever cada linha manualmente.

Será saber conduzir máquinas capazes de escrevê-las.

O programador deixará de ser apenas quem produz instruções e se tornará cada vez mais quem:

  • define intenções;

  • estabelece limites;

  • avalia riscos;

  • verifica resultados;

  • protege usuários;

  • decide prioridades;

  • mantém coerência.

Para o Programador COBOL Padawan, isso não é uma ameaça.

É uma oportunidade histórica.

Você já conhece o valor da precisão.

Já sabe que uma pequena regra pode movimentar milhões.

Já aprendeu que sistemas vivem muito mais tempo do que a primeira versão imaginava.

Agora chegou o momento de levar essa disciplina para o universo da inteligência artificial.

Use a IA.

Explore.

Construa.

Publique.

Mas nunca abandone o painel de comando.

Porque, no final, não importa quantos agentes, modelos ou geradores estejam trabalhando na sala de máquinas.

Quando o alerta vermelho tocar, alguém ainda precisará sentar na cadeira do capitão e dizer:

“Computador, explique exatamente o que você alterou.”

E talvez acrescentar:

“Desta vez, sem mexer no módulo que já estava funcionando.”

Vibe on, Padawan. Mas mantenha o controle da nave.

domingo, 24 de novembro de 2024

Lovable — O Dia em que Patrick Jane Investigou o Aplicativo Criado por Inteligência Artificial

Bellacosa Mainframe apresenta o lovable

☕ Um Café no Bellacosa Mainframe

Lovable — O Dia em que Patrick Jane Investigou o Aplicativo Criado por Inteligência Artificial

Quando o prompt entrou no CPD, examinou o código e pediu acesso à produção

O relógio digital do CPD marcava 23h47.

As luzes verdes dos terminais piscavam em silêncio, os discos continuavam girando e uma cafeteira antiga mantinha aquecido o último lote de café da noite. Diante de um terminal 3270, um jovem Padawan COBOL observava uma tela completamente diferente de tudo o que havia aprendido.

Não havia JCL.

Não havia IDENTIFICATION DIVISION.

Não havia compilação.

Também não havia uma longa sequência de comandos para instalar bibliotecas, configurar servidores, criar tabelas ou montar uma interface.

Havia apenas uma caixa de texto.

Patrick Jane aproximou-se tranquilamente, segurando uma xícara de chá, examinou a tela e perguntou:

— O que você escreveu?

O Padawan respondeu:

— “Crie um sistema para controlar alunos de um curso de COBOL, com login, cadastro, dashboard, certificados e acompanhamento de progresso.”

Jane sorriu.

— Então você não escreveu apenas uma frase. Você entregou uma especificação funcional.

Teresa Lisbon, parada ao lado da porta, cruzou os braços.

— E você acredita que essa ferramenta realmente construiu o sistema?

— Eu não acredito — respondeu Jane. — Eu observo.

Na tela estava aberto o Lovable, uma plataforma de desenvolvimento baseada em inteligência artificial que transforma descrições em linguagem natural em aplicações web funcionais. O usuário explica o que deseja construir, e a plataforma gera telas, componentes, navegação, lógica e integrações necessárias para colocar a ideia em funcionamento. A própria documentação define o Lovable como uma plataforma de desenvolvimento full stack com IA. (Lovable Documentation)

Mas, como Patrick Jane ensinaria a qualquer investigador — e como todo veterano do mainframe ensinaria a um iniciante — a primeira impressão nunca é suficiente.

Era hora de investigar.



1. Afinal, o que é o Lovable?

O Lovable é uma plataforma online que permite criar sites, sistemas e aplicações por meio de uma conversa com inteligência artificial.

Em vez de começar abrindo um editor vazio e escrevendo manualmente toda a estrutura do projeto, você descreve:

  • o objetivo do sistema;

  • quem utilizará a aplicação;

  • quais telas deverão existir;

  • quais dados serão armazenados;

  • quais regras deverão ser respeitadas;

  • como a interface deverá se comportar.

A IA interpreta essas instruções e gera uma primeira versão do produto.

Você pode escrever, por exemplo:

Crie um portal de treinamento para programadores COBOL iniciantes. O portal deve possuir cadastro de alunos, trilhas de aprendizagem, exercícios, pontuação, certificados fictícios e um painel administrativo.

A plataforma então começa a montar a aplicação.

Isso inclui, conforme a necessidade do projeto:

  • página inicial;

  • formulários;

  • menus;

  • tabelas;

  • dashboards;

  • componentes visuais;

  • autenticação;

  • persistência de dados;

  • funções de backend;

  • integração com serviços externos;

  • publicação na web.

O Lovable não é apenas um gerador de imagens de telas. Sua proposta é produzir uma aplicação funcional e código que possa ser sincronizado, revisado e continuado fora da própria plataforma. Os projetos podem ser conectados ao GitHub, clonados e implantados em outra infraestrutura. A documentação também afirma que o usuário mantém a propriedade de seu código e pode exportar ou migrar seus dados. (Lovable Documentation)

Na linguagem do mainframe, não estamos falando apenas de um gerador de BMS MAP.

Estamos falando de algo que tenta montar o mapa, a transação, o armazenamento e parte da infraestrutura operacional.


2. A origem do suspeito: quando surgiu o Lovable?

O Lovable foi lançado publicamente em novembro de 2024. Uma publicação oficial posterior da própria empresa confirma essa data ao apresentar uma linha do tempo de sua operação. (Lovable)

Sua origem está associada ao movimento de ferramentas capazes de gerar software com inteligência artificial e à experiência acumulada com o projeto GPT Engineer.

A ideia central era ambiciosa:

Permitir que uma pessoa descrevesse um produto digital e recebesse uma aplicação utilizável, sem precisar dominar previamente todo o ecossistema de desenvolvimento web.

Em poucos meses, a plataforma ganhou destaque no movimento conhecido como vibe coding, expressão usada para descrever uma forma de programar na qual o desenvolvedor orienta uma IA por linguagem natural, revisando e ajustando o código produzido.

Em julho de 2025, a empresa anunciou uma rodada de investimento de US$ 200 milhões, com avaliação de US$ 1,8 bilhão, oito meses depois do lançamento. Esse crescimento ajuda a explicar por que o Lovable passou rapidamente de curiosidade experimental para ferramenta observada por startups, desenvolvedores, equipes de produto e empresas. (Lovable)

Patrick Jane olharia para esses números e diria:

— Crescimento rápido chama atenção. Mas não prova que o produto resolve todos os casos.

E ele estaria correto.

O Lovable é poderoso, mas não é magia. É uma ferramenta de aceleração.


3. Para que serve?

O Lovable pode ser usado para criar diversos tipos de aplicações web, como:

  • landing pages;

  • portfólios;

  • blogs;

  • catálogos;

  • sistemas de cadastro;

  • painéis administrativos;

  • agendas;

  • sistemas de cursos;

  • protótipos de SaaS;

  • ferramentas internas;

  • sistemas de atendimento;

  • controles financeiros;

  • aplicações com login;

  • dashboards;

  • front-ends para APIs;

  • provas de conceito.


Para um programador COBOL, isso abre uma possibilidade especialmente interessante: criar interfaces modernas para processos que antes existiam apenas em terminais, relatórios ou rotinas batch.

Imagine um programa COBOL que consulta dados de clientes em Db2.

Tradicionalmente, o fluxo poderia ser:

Usuário
   ↓
Terminal 3270
   ↓
Transação CICS
   ↓
Programa COBOL
   ↓
Db2

Com uma arquitetura modernizada, você poderia ter:

Usuário no navegador
   ↓
Interface criada no Lovable
   ↓
API REST
   ↓
z/OS Connect ou camada de integração
   ↓
CICS ou serviço
   ↓
Programa COBOL
   ↓
Db2

O Lovable não substitui automaticamente o CICS, o COBOL, o Db2 ou a segurança do ambiente corporativo.

Ele pode ajudar a construir a camada que o usuário vê.

Esse detalhe é essencial.

O mainframe continua processando as regras críticas. O Lovable pode ajudar a criar a experiência moderna ao redor delas.


4. O Lovable precisa ser instalado?

Aqui está uma boa notícia para o Padawan:

Para começar, não é necessário instalar o Lovable localmente.

A plataforma funciona pelo navegador. O processo inicial indicado pela documentação é:

  1. acessar o Lovable;

  2. criar uma conta;

  3. iniciar um projeto;

  4. escrever o primeiro prompt;

  5. acompanhar a geração da aplicação. (Lovable Documentation)

Isso significa que você não precisa começar instalando:

  • servidor web;

  • banco de dados local;

  • framework de front-end;

  • gerenciador de pacotes;

  • compilador;

  • ambiente Docker.

Entretanto, caso deseje trabalhar profissionalmente com o código, vale instalar ferramentas complementares em seu computador:

  • Git;

  • Visual Studio Code;

  • Node.js, conforme a necessidade do projeto;

  • cliente GitHub;

  • Docker, caso você queira executar ou hospedar determinados componentes localmente.

A instalação local não é obrigatória para experimentar, mas torna-se útil quando você deseja sair do modo puramente visual e assumir o controle técnico.



5. Passo a passo: a primeira investigação do Padawan

Passo 1 — Defina o caso antes de interrogar a IA

O erro mais comum é entrar na plataforma e escrever:

Faça um sistema de cursos.

Isso é equivalente a entregar para um programador COBOL uma especificação dizendo:

Faça um programa de clientes.

Quais clientes?

Qual arquivo?

Qual layout?

Quais campos?

Qual regra?

Qual saída?

Patrick Jane provavelmente observaria o autor da especificação por alguns segundos e concluiria:

— Você não sabe ainda o que deseja.

Antes de abrir o Lovable, responda:

  • O que o sistema fará?

  • Quem utilizará?

  • Qual é o problema resolvido?

  • Quais são as telas mínimas?

  • Quais dados serão cadastrados?

  • Qual será a primeira versão?

A documentação do Lovable recomenda definir antecipadamente o produto, o público e o conjunto mínimo de funcionalidades. Para iniciantes, também recomenda começar pelo front-end com dados fictícios antes de conectar um banco real. (Lovable Documentation)

Passo 2 — Escreva o primeiro prompt

Um bom prompt inicial para um projeto COBOL poderia ser:

Crie uma aplicação web chamada Academia COBOL Padawan. Ela deve ajudar iniciantes a acompanhar uma trilha de estudos. Crie uma página inicial, uma lista de módulos, uma página de exercícios, um painel de progresso e uma área de certificados. Use inicialmente dados fictícios. O visual deve misturar terminal mainframe, ficção científica e uma cafeteria noturna. A aplicação deve funcionar bem em computadores e celulares.

Observe a estrutura:

  • nome;

  • objetivo;

  • usuários;

  • páginas;

  • dados;

  • estilo;

  • comportamento responsivo.

O prompt funciona como uma combinação de:

  • especificação funcional;

  • briefing visual;

  • requisito técnico;

  • ordem de serviço.

Passo 3 — Analise a primeira versão

Não aceite tudo imediatamente.

Verifique:

  • os menus funcionam?

  • os botões levam ao lugar correto?

  • o texto faz sentido?

  • o layout fica legível no celular?

  • os campos necessários estão presentes?

  • existe alguma funcionalidade inventada?

  • há inconsistências entre as telas?

No mainframe, você não promove um módulo apenas porque compilou com MAXCC=0000.

No Lovable, você não publica uma aplicação apenas porque ela ficou bonita.

Passo 4 — Peça mudanças pequenas

Evite escrever:

Corrija tudo e deixe profissional.

Prefira:

Na página de trilhas, adicione um indicador de progresso em porcentagem.

Depois:

Na página de exercícios, inclua os níveis Iniciante, Intermediário e Avançado.

Depois:

No painel, crie um gráfico com módulos concluídos por mês.

Solicitações pequenas tornam mais fácil verificar o impacto de cada mudança.

Passo 5 — Use o modo de planejamento

Para alterações maiores, peça primeiro um plano.

Exemplo:

Antes de alterar o sistema, explique como você implementaria autenticação, perfis de aluno e administrador, proteção de rotas e recuperação de senha. Não modifique o código ainda.

Essa abordagem separa o raciocínio da execução.

É a diferença entre:

Planejar → revisar → executar

e:

Executar → descobrir o erro → tentar reparar

A própria documentação recomenda o uso de planejamento, conhecimento persistente, edições visuais e controle de versões como práticas para reduzir erros. (Lovable Documentation)


6. Conectando um banco de dados

Uma aplicação com apenas dados fictícios é um protótipo.

Para cadastrar alunos de verdade, registrar progresso ou armazenar certificados, é necessário um backend.

Uma das integrações documentadas pelo Lovable é com o Supabase, plataforma que oferece banco PostgreSQL, autenticação, armazenamento e funções executadas no servidor.

O fluxo básico é:

  1. criar uma conta no Supabase;

  2. criar um projeto;

  3. abrir as integrações do projeto no Lovable;

  4. selecionar a integração com Supabase;

  5. autorizar a conexão;

  6. escolher o projeto;

  7. solicitar a criação das tabelas e funcionalidades.

Depois da conexão, o Lovable pode utilizar o backend para armazenar dados, cadastrar usuários, controlar autenticação e executar funções. (Lovable Documentation)

Um prompt prático seria:

Conecte o sistema ao Supabase. Crie tabelas para usuários, cursos, módulos, exercícios, conclusões e certificados. Cada aluno deve visualizar apenas seu próprio progresso. Administradores podem visualizar todos os alunos.

Aqui surge uma palavra importante:

RLS — Row-Level Security.

Ela controla quais linhas de uma tabela cada usuário pode acessar.

Sem regras adequadas, um aluno poderia, em determinadas situações, consultar dados de outro aluno.

No mundo mainframe, seria como deixar um usuário acessar registros para os quais não possui autorização RACF.

A tecnologia muda.

O princípio permanece.


7. GitHub: o cofre de evidências

Todo investigador preserva as evidências.

Todo desenvolvedor deveria preservar as versões.

Conectar o projeto ao GitHub permite:

  • armazenar o código;

  • acompanhar alterações;

  • criar histórico;

  • trabalhar em equipe;

  • clonar o projeto;

  • editar fora do Lovable;

  • executar testes adicionais;

  • implantar em outra infraestrutura.

O Lovable não exige GitHub para funcionar, mas sua documentação oferece sincronização com repositórios e a possibilidade de continuar o desenvolvimento externamente. (Lovable Documentation)

Para um programador COBOL, pense no Git como uma combinação moderna de:

  • biblioteca de fontes;

  • controle de versões;

  • histórico de mudanças;

  • base para pipeline;

  • ponto de integração com revisão técnica.

Não espere a aplicação crescer para pensar em versionamento.

Conecte o repositório cedo.


8. Aplicação prática: portal moderno para um programa COBOL

Vamos imaginar um caso real.

Uma empresa possui um programa COBOL chamado CLIENTE1, responsável por consultar dados cadastrais.

A regra de negócio principal já funciona:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CLIENTE1.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 WS-CLIENTE.
          05 WS-ID             PIC 9(09).
          05 WS-NOME           PIC X(40).
          05 WS-STATUS         PIC X(10).

       PROCEDURE DIVISION.
           PERFORM CONSULTAR-CLIENTE
           GOBACK.

O objetivo não é reescrever tudo em JavaScript.

O objetivo é disponibilizar uma tela moderna.

Arquitetura possível

Lovable
   ↓
Tela de consulta
   ↓
Chamada HTTPS
   ↓
API corporativa
   ↓
z/OS Connect
   ↓
CICS
   ↓
CLIENTE1
   ↓
Db2

No Lovable, você poderia solicitar:

Crie uma tela de consulta de clientes com campos para número do cliente e CPF. Ao pesquisar, consuma uma API REST e mostre nome, status, limite e última atualização. Inclua tratamento para cliente não encontrado, indisponibilidade do serviço e falta de autorização.

A plataforma pode criar o front-end e preparar a chamada à API.

Mas existem responsabilidades que continuam com a equipe:

  • definir o contrato da API;

  • proteger as credenciais;

  • configurar autenticação;

  • validar autorização;

  • tratar indisponibilidade;

  • impedir exposição indevida;

  • registrar logs;

  • testar carga;

  • respeitar políticas corporativas.

Esse é o ponto no qual o Padawan deixa de ser apenas operador da IA e começa a agir como engenheiro.


9. Uso cotidiano para um desenvolvedor COBOL

O Lovable pode ser útil mesmo que você nunca publique uma aplicação comercial completa.

Protótipos para reuniões

Antes de alterar um sistema antigo, crie um protótipo visual para validar a ideia com usuários.

Em vez de explicar:

Teremos um menu lateral com pesquisa e acompanhamento de solicitações.

Mostre o protótipo funcionando.

Simuladores de telas

Crie interfaces fictícias para demonstrar como uma transação CICS poderia ser modernizada.

Ferramentas de apoio

Você pode criar:

  • calculadora de PIC;

  • conversor EBCDIC e ASCII;

  • gerador de exemplos de JCL;

  • catálogo de abends;

  • glossário de comandos;

  • painel de execução batch;

  • simulador de SDSF;

  • organizador de copybooks;

  • sistema de exercícios COBOL.

Portfólio profissional

Um desenvolvedor COBOL pode montar um portal demonstrando:

  • conhecimento legado;

  • integração com APIs;

  • capacidade de modernização;

  • noções de UX;

  • domínio de Git;

  • entendimento de arquitetura híbrida.

Documentação interativa

Em vez de entregar apenas um documento estático, crie uma aplicação pesquisável com diagramas, filtros e exemplos.



10. Pontos fortes

Rapidez na prototipação

Uma ideia pode ganhar uma interface inicial em pouco tempo.

Baixa barreira de entrada

O iniciante não precisa dominar todo o ecossistema web antes de experimentar.

Desenvolvimento conversacional

A pessoa descreve alterações em linguagem natural.

Código reutilizável

O projeto pode ser sincronizado com GitHub e continuado por desenvolvimento tradicional.

Integrações

É possível conectar banco, autenticação, APIs e outros serviços.

Boa utilidade para validação

Equipes conseguem testar um fluxo antes de investir na implementação definitiva.

Ponte entre legado e moderno

Para o programador COBOL, esse talvez seja o maior valor: criar rapidamente a camada moderna ao redor de serviços corporativos existentes.


11. Limitações e riscos

Patrick Jane caminhou até o quadro branco e escreveu:

“Uma interface bonita pode esconder uma arquitetura ruim.”

Esse é o principal alerta.

A IA pode interpretar errado

Um prompt ambíguo gera uma solução ambígua.

O código precisa de revisão

A aplicação pode funcionar e ainda conter:

  • duplicação;

  • dependências desnecessárias;

  • tratamento incompleto;

  • regras frágeis;

  • problemas de manutenção.

Segurança não é automática

A documentação do Lovable recomenda revisar autenticação, controle de acesso, chaves de API, funções de backend, políticas de banco e dependências. A plataforma oferece verificações de segurança, mas isso não elimina a responsabilidade humana. (Lovable Documentation)

Custos podem crescer

O uso da plataforma, da nuvem, do banco, de APIs externas e de recursos de IA pode gerar custos conforme o projeto cresce. O Lovable utiliza créditos para construção e para determinados recursos de nuvem e IA. (Lovable)

Sistemas críticos exigem engenharia tradicional

Aplicações financeiras, médicas, industriais ou corporativas não devem ser colocadas em produção apenas com testes superficiais.


12. Dicas do Mestre Bellacosa

1. Trate o prompt como uma especificação

Escreva objetivo, contexto, telas, campos, regras e exceções.

2. Comece com o mínimo

Construa primeiro o fluxo principal.

3. Use dados fictícios

Valide a experiência antes de conectar dados reais.

4. Uma mudança por vez

Isso facilita identificar o que causou um erro.

5. Peça explicações

Pergunte:

Quais arquivos serão alterados e por quê?

6. Proteja segredos

Nunca coloque senhas ou chaves diretamente no front-end.

7. Revise permissões

Cada usuário deve acessar somente o necessário.

8. Sincronize com GitHub

Preserve versões desde o início.

9. Teste cenários negativos

Verifique:

  • entrada vazia;

  • usuário sem permissão;

  • API indisponível;

  • dado inexistente;

  • operação duplicada;

  • sessão expirada.

10. Não abandone seus fundamentos

Lógica, modelagem, dados, testes, segurança e arquitetura continuam valendo.



13. Curiosidades do arquivo confidencial

O nome Lovable

Em inglês, “lovable” significa algo como “adorável” ou “fácil de gostar”.

O nome combina com a proposta de reduzir a frustração inicial de criar software.

O prompt virou artefato de engenharia

Em projetos modernos, o histórico de conversas pode revelar decisões, requisitos e mudanças de escopo.

Existe uma API do próprio Lovable

A documentação inclui uma API para criação programática de aplicações, permitindo iniciar projetos por prompts e integrações automatizadas. (Lovable Documentation)

Existe integração via MCP

O Lovable documenta um servidor baseado no Model Context Protocol, permitindo que clientes compatíveis gerenciem projetos por linguagem natural. (Lovable Documentation)

O backend não precisa ficar preso

A documentação descreve opções de implantação fora da nuvem da plataforma, inclusive com infraestrutura própria e componentes baseados em Supabase. (Lovable Documentation)


14. Easter eggs encontrados no CPD

Easter egg número 1 — O novo SYSIN

No JCL, o SYSIN entrega instruções para a execução.

No Lovable, o prompt faz algo parecido:

//SYSIN DD *
CRIE UM PORTAL COBOL
COM LOGIN
DASHBOARD
TRILHAS
CERTIFICADOS
/*

A diferença é que o compilador agora responde em linguagem natural.

Easter egg número 2 — Patrick Jane e o prompt vazio

Lisbon perguntou:

— Por que o projeto saiu errado?

Jane respondeu:

— Porque o sistema fez exatamente o que pediram, não o que imaginaram.

Easter egg número 3 — MAXCC=0000

O Lovable mostrou:

BUILD SUCCESSFUL

O veterano do mainframe sorriu e perguntou:

— E os testes?

O Padawan ficou em silêncio.

Easter egg número 4 — O fantasma da produção

Toda aplicação criada às pressas possui um fantasma.

Ele aparece quando alguém diz:

“Funcionou no preview.”

Easter egg número 5 — A caneca

No canto inferior da aplicação Academia COBOL Padawan, o desenvolvedor escondeu um botão em formato de xícara.

Ao clicar cinco vezes, surgia a mensagem:

CAFÉ ACEITO
WORKING-STORAGE RECARREGADA
PROGRAMADOR PRONTO


Conclusão — O mentalista não adivinha; ele observa

Patrick Jane não possuía poderes sobrenaturais.

Ele observava padrões, contradições, detalhes ignorados e comportamentos previsíveis.

O Lovable também não é magia.

Ele combina modelos de inteligência artificial, geração de código, componentes modernos e integrações para transformar descrições em aplicações.

Para um programador COBOL iniciante, a ferramenta representa uma oportunidade extraordinária.

Ela permite enxergar o outro lado da arquitetura.

O Padawan que antes conhecia apenas:

Entrada
↓
Programa
↓
Arquivo
↓
Relatório

passa a compreender:

Usuário
↓
Interface
↓
API
↓
Autenticação
↓
Regra de negócio
↓
Banco
↓
Infraestrutura

O conhecimento COBOL não se torna obsoleto.

Ele ganha uma nova porta de entrada.

Você pode continuar trabalhando com programas críticos, CICS, Db2, arquivos VSAM e rotinas batch, enquanto utiliza o Lovable para construir protótipos, portais, dashboards e experiências modernas.

A vantagem não estará apenas com quem sabe escrever prompts.

Estará com quem sabe distinguir:

  • requisito de sugestão;

  • protótipo de produto;

  • demonstração de produção;

  • código gerado de código confiável;

  • interface bonita de sistema seguro.

O Padawan olhou novamente para o aplicativo.

— Então a IA não vai substituir o programador?

Patrick Jane tomou o último gole de chá.

— Ela pode substituir algumas tarefas. Também pode ampliar muitos profissionais. O resultado depende de quem faz as perguntas, de quem revisa as respostas e de quem percebe o detalhe que todos os outros ignoraram.

Lisbon abriu a porta do CPD.

— O caso está encerrado?

Jane sorriu.

— Não. O protótipo está pronto. Agora começa a investigação de verdade.

Na tela, uma mensagem piscava:

LOVABLE BUILD COMPLETED
CODE REVIEW PENDING
SECURITY REVIEW PENDING
COFFEE REQUIRED

E, naquela noite, o Padawan aprendeu a lição mais importante:

A inteligência artificial pode construir rapidamente uma aplicação. Mas transformar essa aplicação em um sistema confiável ainda exige lógica, disciplina, testes, segurança e a experiência de quem sabe que produção nunca perdoa excesso de confiança.

quinta-feira, 25 de julho de 2024

💵 Bud Fox e a Fintech de Wall Street — Quando Vibe Coding encontra Context Engineering

 

Bellacosa Mainframe e a codificação vibe coding e context engineering

☕ Um Café no Bellacosa Mainframe

💵 Bud Fox e a Fintech de Wall Street — Quando Vibe Coding encontra Context Engineering

SDD, DDD, Monólito Modular, Evals, Engineering Loop, agentes de IA e a perigosa diferença entre gerar código que funciona e construir software em que podemos confiar.



Nova York, 1987.

Bud Fox atravessa os corredores da Jackson Steinem & Co. com dois telefones, uma agenda cheia de nomes e uma obsessão: descobrir alguma informação que os outros ainda não possuem.

Em Wall Street, informação significa vantagem.

Quase quarenta anos depois, troque o pregão por uma IDE, os terminais financeiros por agentes de IA e as ações por milhares de classes Java.

A questão continua surpreendentemente parecida:

informação sem contexto pode ser tão perigosa quanto informação nenhuma.

Nossa história começa com uma proposta irresistível.

Vamos construir uma fintech.

E vamos usar IA.



🎬 CAPÍTULO 1 — Bud Fox descobre Vibe Coding

Imagine Bud Fox chegando ao escritório de tecnologia.

Ele abre seu agente de IA e escreve:

Crie uma fintech em Java 21.

Spring Boot
PostgreSQL
Kafka
DDD
Arquitetura Hexagonal
Monólito Modular

Módulos:

Customers
Accounts
Pix
Fraud
Ledger
Notifications

ENTER.

Alguns minutos depois aparecem:

Controllers
Services
Repositories
Entities
DTOs
Migrations
Tests
Dockerfiles
Kafka configuration
REST APIs

Bud olha para a tela.

— Isso costumava levar semanas!

Bem-vindo ao Vibe Coding.

Gerar software tornou-se extraordinariamente barato. O material que analisamos começa justamente com essa constatação: descrevemos algo para um agente e rapidamente aparecem controllers, migrations, testes, Dockerfiles e dezenas de classes.

Bud encontrou sua primeira ação quente.

Só existe um problema.

O programa funcionar hoje não significa que sua arquitetura sobreviverá aos próximos 500 prompts.



📈 CAPÍTULO 2 — O primeiro lucro esconde a primeira dívida

Bud pede:

Implemente Send Pix.

A IA escreve.

Depois:

Adicione limite Pix.

Ela escreve.

Depois:

Adicione análise antifraude.

Mais código.

Prompt número 47:

Implemente estorno.

Prompt número 83:

Adicione Pix agendado.

Então aparece:

account.setBalance(
    account.getBalance().subtract(amount)
);

Excelente Java.

Provavelmente compila.

Talvez passe nos testes.

E está completamente errado.

Por quê?

Porque meses atrás nossa equipe tomou uma decisão arquitetural:

Ledger é a única fonte de verdade financeira.

Accounts conhece conta, estado, bloqueios e limites. Ledger conhece journals, débitos, créditos e posição financeira. Essa divisão de responsabilidade está explicitamente definida no modelo que estamos estudando.

O agente sabia Java.

Sabia Spring.

Sabia PostgreSQL.

Sabia como subtrair amount.

O que ele não sabia era:

como esta empresa decidiu representar dinheiro.

E encontramos nosso primeiro princípio.

Código correto localmente pode estar errado globalmente.



🦈 CAPÍTULO 3 — Gordon Gekko aparece na arquitetura

Se Gordon Gekko estivesse olhando nosso repositório, provavelmente perguntaria:

— Quem é dono de quê?

Excelente pergunta.

Porque software corporativo não é apenas um conjunto de classes.

É uma coleção de responsabilidades.

Nossa fintech possui:

Customers
    │
    │ identidade, cadastro, KYC
    │
Accounts
    │
    │ status, bloqueios, limites
    │
Pix
    │
    │ transferências
    │
    ├────────────► Fraud
    │               risco
    │
    ▼
Events
    │
    ├────────────► Ledger
    │               contabilidade
    │
    └────────────► Notifications
                    mensagens

Essa arquitetura possui uma característica particularmente interessante:

é um monólito modular.

Existe um único grande deployment, mas dentro dele tentamos preservar fronteiras claras.

com.bellacosa.fintech

├── customers
├── accounts
├── pix
├── fraud
├── ledger
└── notifications

Não confunda isso com um monólito desorganizado.

A intenção é praticamente:

uma cidade dentro de uma muralha, mas dividida em bairros com responsabilidades próprias.



🏦 CAPÍTULO 4 — Accounts não é Ledger

Essa distinção merece ficar gravada na parede do pregão.

Imagine:

ACCOUNT

A tentação inicial seria criar:

Account

customer
number
status
balance
limit
riskScore
pixKeys
transactions

Pronto.

Nasceu o God Object.

Em nossa fintech preferimos:

ACCOUNTS

Account
AccountStatus
AccountLimit
AccountRestriction

Enquanto:

LEDGER

Journal
LedgerEntry
Debit
Credit
Balance

E Fraud possui:

RiskAssessment
RiskScore
RiskDecision

Pix:

PixTransfer
PixKey
TransferStatus

Portanto:

ACCOUNT != MONEY

Essa aparentemente pequena decisão arquitetural é enorme.

Accounts responde:

A conta pode operar?

Fraud:

Esta operação apresenta risco aceitável?

Pix:

Qual é o estado da transferência?

Ledger:

O que aconteceu financeiramente?

Agora nossa IA começa a receber uma coisa muito mais importante do que instruções de programação.

Ela recebe semântica.


🧠 CAPÍTULO 5 — Bud Fox descobre Context Engineering

Bud percebe que ficar repetindo tudo em prompts é inviável.

Inicialmente:

Crie uma API Pix.

Depois:

Crie uma API Pix usando DDD.

Logo chegamos ao monstro:

Java 21.
Spring Boot.
PostgreSQL.
Kafka.
DDD.
Hexagonal.
Modular Monolith.
Pix não acessa AccountRepository.
Ledger controla saldo.
Use Outbox.
Use idempotência.
Use double-entry bookkeeping.
...

O próprio material mostra essa evolução e aponta o limite da estratégia: o prompt não deveria funcionar como banco de memória da engenharia do produto.

É quando Bud encontra algo muito mais valioso que uma ação privilegiada.

Context Engineering.

Prompt Engineering pergunta:

Como faço uma boa pergunta ao modelo?

Context Engineering pergunta:

Quais informações o agente precisa ter disponíveis para tomar uma boa decisão?

Parece apenas uma mudança de frase.

Não é.

É uma mudança de arquitetura.


📚 CAPÍTULO 6 — O conhecimento sai do chat

Começamos a construir:

docs/

├── domain/
│   ├── bounded-contexts.md
│   ├── ubiquitous-language.md
│   ├── ownership.md
│   ├── business-rules.md
│   └── context-map.md
│
└── architecture/
    ├── c4.md
    └── adr/

Agora podemos registrar:

OWN-001

Customers é proprietário
da identidade do cliente.
OWN-002

Accounts é proprietário
do estado operacional da conta.
OWN-003

Ledger é proprietário
da posição financeira.

E:

ARCH-007

Pix não acessa diretamente
Accounts Infrastructure.

Agora a IA não precisa “lembrar” dessas decisões.

Elas existem fora dela.

Essa é uma diferença monumental:

ANTES

Chat
 ↓
IA
 ↓
Code

torna-se:

DOMAIN
   +
ARCHITECTURE
   +
DECISIONS
   +
RULES
   ↓
AGENT
   ↓
CODE

A organização começa a possuir uma memória de engenharia.


🗺️ CAPÍTULO 7 — Bud desenha o mapa de Wall Street

Existe outra pergunta.

Se Pix precisa descobrir se uma conta pode transferir, ele pode simplesmente acessar:

AccountRepository

?

Não.

Porque isso atravessa a fronteira do módulo Accounts.

O material sugere algo conceitualmente parecido com:

PIX
 │
 ▼
AccountTransferEligibility
 │
 ▼
ACCOUNTS

Pix pergunta:

Essa conta pode transferir?

Ele não pergunta:

Me entregue sua tabela, repository e estrutura interna que eu resolvo daqui.

A mesma lógica vale para Fraud.

Errado:

PIX
 ↓
FraudRepository
 ↓
FraudRule
 ↓
RiskModel

Melhor:

PIX
 ↓
RiskAssessment
 ↓
FRAUD

Pix quer uma decisão.

Não precisa conhecer a cozinha inteira que produziu essa decisão.


🚨 CAPÍTULO 8 — O maior perigo do monólito modular

Aqui existe uma armadilha deliciosa.

No microservice:

PIX SERVICE

    rede

ACCOUNTS SERVICE

existe uma barreira física.

No monólito:

pix/
accounts/

está tudo no mesmo lugar.

Então alguém pensa:

“Vou pegar só esse repository rapidinho.”

import accounts.infrastructure.AccountRepository;

Funciona.

E exatamente por funcionar é perigoso.

Começamos:

Pix → Accounts

Depois:

Pix → Accounts Infrastructure

Fraud faz igual.

Notifications também.

Logo:

        Customers
       ↙    ↓    ↘
Accounts ↔ Pix ↔ Fraud
  ↕       ↕       ↕
Ledger ↔ Events ↔ Notifications

Parabéns.

Criamos o espaguete modular.

A pasta continua bonita.

A arquitetura morreu.


🎯 CAPÍTULO 9 — SDD entra no pregão

Bud recebe a próxima demanda:

Send Pix.

Antes ele pediria:

Implemente Send Pix.

Agora começa pela intenção.

INTENT
   ↓
SPEC
   ↓
RESEARCH
   ↓
DATA MODEL
   ↓
CONTRACTS
   ↓
PLAN
   ↓
TASKS
   ↓
IMPLEMENTATION

Esse é justamente o fluxo de Spec-Driven Development proposto no material.

Criamos:

specs/
└── 005-send-pix/

    ├── spec.md
    ├── research.md
    ├── data-model.md

    ├── contracts/
    │   ├── api.md
    │   └── events.md

    ├── evals/

    ├── plan.md
    └── tasks.md

Ainda não começamos pelo PixController.

Começamos perguntando:

O que significa transferir dinheiro neste negócio?

Essa pergunta vale mais que cinquenta classes.


📜 CAPÍTULO 10 — A Spec é o prospecto da operação

Nossa spec.md pode declarar:

FEATURE

Send Pix

Objetivo:

Transferir dinheiro entre contas
respeitando elegibilidade,
fundos disponíveis,
limites,
risco,
contabilidade
e idempotência.

E então aparecem as regras:

BR-001
A conta deve existir.

BR-002
A conta deve estar ativa.

BR-003
O valor deve ser maior que zero.

BR-004
Devem existir fundos disponíveis.

BR-005
O limite Pix deve ser respeitado.

BR-006
A análise de risco deve aprovar
a operação.

BR-007
A mesma Idempotency-Key não pode
produzir duas transferências.

São exatamente as classes de regras usadas no exemplo original.

Agora o agente não precisa adivinhar o negócio.

Mas surge outro problema.


🕵️ CAPÍTULO 11 — Gordon Gekko pergunta: “Quem fiscaliza?”

Podemos escrever:

Pix não pode acessar Accounts Infrastructure.

Excelente.

Então um agente escreve:

import accounts.infrastructure.AccountRepository;

A documentação dizia não.

O código disse sim.

Quem ganhou?

O compilador.

Precisamos transformar regras humanas em regras verificáveis.

Entram os:

🧪 EVALS

Podemos pensar:

SPEC
=
o que esperamos

EVAL
=
como demonstramos que continua verdadeiro

Essa relação aparece claramente no material.


🛡️ CAPÍTULO 12 — A SEC da nossa arquitetura

Vamos criar alguns fiscais.

Architecture Eval

PIX não pode importar:

accounts.infrastructure
ledger.infrastructure
fraud.infrastructure

Idempotency Eval

Given

Idempotency-Key = ABC123

When

POST /pix/transfers
é executado duas vezes

Then

existe apenas uma PixTransfer.

Ledger Eval

Pix = R$100

Debit  = R$100
Credit = R$100

sum(debits) == sum(credits)

Esses exemplos aparecem diretamente no modelo estudado.

Evals tornam a arquitetura menos dependente da boa vontade do programador.

Ou da memória da IA.


🧪 CAPÍTULO 13 — Eval não significa apenas JUnit

Essa distinção é essencial.

Podemos ter:

DOMAIN EVALS

Regras de negócio.

ARCHITECTURE EVALS

Fronteiras.

CONTRACT EVALS

APIs e eventos.

INTEGRATION EVALS

Banco, Kafka, Outbox.

SECURITY EVALS

Autorização e exposição de dados.

CONCURRENCY EVALS

Operações simultâneas.

ACCOUNTING EVALS

Integridade contábil.

OBSERVABILITY EVALS

Se conseguiremos descobrir o que aconteceu quando tudo der errado.

O material também trata Evals dessa maneira ampla, indo muito além de testes unitários.


⚔️ CAPÍTULO 14 — Dois traders querem gastar o mesmo dinheiro

Temos:

Saldo disponível = R$1.000

Chegam simultaneamente:

PIX A = R$800
PIX B = R$800

Processo A lê:

saldo = 1000

Processo B:

saldo = 1000

A conclui:

1000 >= 800

B também.

Resultado possível:

R$1.600 transferidos

contra:

R$1.000 disponíveis.

Nosso happy-path:

Given saldo 1000
When Pix 800
Then aprovado

passaria maravilhosamente.

Mas precisamos de:

CONCURRENCY-EVAL-001

Given

availableFunds = 1000

When

Pix A = 800
Pix B = 800

simultaneamente

Then

somente uma operação
pode consumir os fundos.

Agora começamos a testar não apenas exemplos.

Testamos invariantes.


🔁 CAPÍTULO 15 — A mesma ordem chegou duas vezes

Outro clássico do mercado financeiro.

Cliente envia:

POST /pix/transfers
Idempotency-Key: ABC123

A rede fica lenta.

Nenhuma resposta.

O aplicativo tenta novamente.

Sem idempotência:

PIX #1001   R$100
PIX #1002   R$100

Com idempotência:

Request 1 ──┐
            │
            ├── ABC123 ──► PIX #1001
            │
Request 2 ──┘

Mas existe uma segunda armadilha.


📬 CAPÍTULO 16 — Kafka telefona novamente

Nossa arquitetura:

PIX
 │
 ▼
OUTBOX
 │
 ▼
KAFKA
 │
 ▼
LEDGER

Ledger recebe:

PixTransferCompleted #777

Produz:

Debit  R$100
Credit R$100

Depois o evento chega novamente.

Se o consumidor não for idempotente:

Debit 100
Credit 100

Debit 100
Credit 100

O livro continua matematicamente equilibrado!

Mas economicamente duplicamos a operação.

Esse é um detalhe extraordinariamente importante:

consistência matemática não implica correção de negócio.

O próprio exemplo do material usa duplicação de eventos gerando lançamentos repetidos para demonstrar como produção pode revelar uma invariante que faltava.


🔄 CAPÍTULO 17 — Engineering Loop: o fechamento do pregão não encerra a história

Software não termina no merge.

Nem no deploy.

Nosso ciclo passa a ser:

UNDERSTAND
    ↓
IMPLEMENT
    ↓
TEST
    ↓
REVIEW
    ↓
OBSERVE
    ↓
LEARN
    ↺

Understand

O agente consulta:

Spec
Business Rules
Ownership
Context Map
ADRs
Contracts
Evals

Implement

Escreve dentro dessas fronteiras.

Test

Executa:

Unit
Integration
Contract
Architecture
Security
Evals

Review

Perguntamos:

Atendeu à intenção?

Quebrou algum contexto?

Introduziu acoplamento?

Idempotência continua válida?

Há risco concorrente?

Observe

Produção finalmente fala.

Learn

E aqui acontece a mágica.


📊 CAPÍTULO 18 — Produção é o verdadeiro mercado

Nosso Pix entra em produção.

Passamos a observar:

pix_transfer_total

pix_transfer_success_total

pix_transfer_failed_total

pix_transfer_duration_seconds

fraud_analysis_duration_seconds

outbox_pending_events

Esses sinais também aparecem no modelo de Engineering Loop estudado.

Então...

03:17.

O telefone toca.

☕ Easter egg Bellacosa desbloqueado.

Existe lançamento duplicado.

Bud Fox olha para o monitor.

O mercado está aberto.

Só que agora o mercado é produção.


🧯 CAPÍTULO 19 — Não corrija apenas o bug

A abordagem antiga:

INCIDENT
 ↓
BUG
 ↓
FIX
 ↓
DEPLOY

A abordagem que estamos construindo:

INCIDENT
    ↓
ANALYSIS
    ↓
FINDING
    ↓
DECISION
    ↓
 ┌──┴───────────────┐
 ▼                  ▼
CODE              CONTEXT
 ▼                  ▼
TEST               ADR
 ▼                  ▼
EVAL               SPEC
 └────────┬─────────┘
          ▼
       LEARNING

Descobrimos:

Duplicate event delivery
can generate duplicate
ledger postings.

Decidimos:

All financial consumers
must be idempotent.

Criamos:

006-ledger-consumer-idempotency/

Exatamente como no cenário do material.

O incidente não produziu apenas patch.

Produziu conhecimento.


🧠 CAPÍTULO 20 — Aqui está a verdadeira fortuna de Bud Fox

Agora chegamos ao ponto que considero mais importante de toda essa arquitetura.

Um incidente ocorrido hoje não deveria permanecer apenas:

na memória do arquiteto

num ticket

num e-mail

num post-mortem

num canal de chat

num comentário de código

Ele precisa alimentar:

INCIDENT
   ↓
LEARNING
   ↓
CONTEXT

E então:

CONTEXT
   ↓
NEXT AGENT

O material faz exatamente essa inversão: contexto deixa de ser apenas entrada e passa a ser também saída do processo de engenharia.

Isso transforma Context Engineering numa espécie de memória institucional versionada.


🗃️ CAPÍTULO 21 — ADR: o arquivo secreto de Gordon Gekko

Imagine:

ADR-023

Título:

Ledger is the financial
source of truth

Não basta escrever:

Decision:

Ledger owns balance.

Precisamos explicar:

Context:

Accounts represents operational state.

Ledger represents financial state.

Decision:

All financial postings belong to Ledger.

Consequences:

Accounts cannot change balance.

Pix cannot maintain balance.

Cards cannot maintain balance.

Financial position must be derived
from Ledger.

Agora, meses depois, alguém pede:

Implemente cashback.

O agente encontra ADR-023.

Sem ele poderia criar:

account.addBalance(cashback);

Com ele percebe:

Cashback
   ↓
Ledger Posting
   ↓
Debit/Credit

ADR não é apenas documentação histórica.

Para agentes, pode funcionar como memória de decisões e de suas justificativas.


🧭 CAPÍTULO 22 — Mas Context Engineering também pode virar um monstro

Agora Bud encontra outro problema.

Temos:

900 ADRs
3.000 Specs
20.000 testes
500 incidentes
10.000 documentos

Podemos simplesmente colocar tudo no prompt?

Não.

Isso seria trocar:

PROMPT GIGANTE

por:

CONTEXTO GIGANTE

Context Engineering maduro também precisa responder:

Qual contexto é relevante para esta tarefa?

Para:

Implement Pix Scheduled Transfer

talvez precisemos:

Pix Domain Context

Accounts public contract

Fraud public contract

Ledger public contract

Pix business rules

relevant ADRs

current spec

relevant incidents

relevant evals

Não precisamos carregar todo o sistema.

Surge então:

TASK
 │
 ▼
CONTEXT ROUTER
 │
 ├── Domain
 ├── Architecture
 ├── ADR
 ├── Spec
 ├── Contracts
 ├── Evals
 └── Learning
 │
 ▼
AGENT

A próxima evolução não é apenas ter contexto.

É entregar o contexto certo no momento certo.


🤖 CAPÍTULO 23 — Wall Street ganha uma mesa inteira de agentes

Por que usar somente um agente?

Podemos ter:

                  HUMAN
                    │
                    ▼
              PLANNER AGENT
                    │
                    ▼
           IMPLEMENTATION AGENT
                    │
                    ▼
               TEST AGENT
                    │
                    ▼
          ARCHITECTURE AGENT
                    │
                    ▼
            SECURITY AGENT
                    │
                    ▼
              REVIEW AGENT
                    │
                    ▼
                  HUMAN

Implementation Agent produz:

import accounts.infrastructure.AccountRepository;

Architecture Eval responde:

FAILED

ARCH-002

PIX cannot depend on
ACCOUNTS.infrastructure

O agente consulta o contexto.

Encontra:

AccountTransferEligibility

Corrige.

Executa novamente.

PASS

Perceba a mudança.

Evals deixam de servir apenas ao pipeline.

Eles se tornam feedback para o raciocínio iterativo dos agentes.


👨‍💻 CAPÍTULO 24 — E onde ficou o programador?

Essa pergunta inevitavelmente aparece.

Se agentes:

geram código
geram testes
fazem review
analisam contratos
procuram bugs

qual é o papel humano?

Ele sobe de nível.

Antes:

HUMAN
  ↓
CODE

Agora:

                 HUMAN
                   │
       ┌───────────┼───────────┐
       ▼           ▼           ▼
    INTENT       RISK       TRADE-OFF
       │           │           │
       └───────────┼───────────┘
                   ▼
               CONTEXT
                   │
                   ▼
                 AGENT
                   │
                   ▼
                 CODE

O desenvolvedor continua precisando entender código.

Mas passa a dedicar muito mais energia a:

intenção, fronteiras, invariantes, contratos, risco, decisões e evidências.


🏗️ CAPÍTULO 25 — O repositório deixa de guardar somente código

Nossa BellacosaBank pode terminar assim:

bellacosa-fintech/

├── docs/
│
│   ├── domain/
│   │   ├── ubiquitous-language.md
│   │   ├── bounded-contexts.md
│   │   ├── context-map.md
│   │   ├── ownership.md
│   │   └── invariants.md
│   │
│   └── architecture/
│       ├── c4/
│       └── adr/
│
├── specs/
│   ├── 001-create-customer/
│   ├── 002-open-account/
│   ├── 003-create-pix-key/
│   ├── 004-risk-analysis/
│   ├── 005-send-pix/
│   └── 006-ledger-idempotency/
│
├── evals/
│   ├── architecture/
│   ├── domain/
│   ├── contracts/
│   ├── accounting/
│   ├── concurrency/
│   ├── security/
│   └── observability/
│
├── engineering/
│   ├── loops/
│   ├── incidents/
│   ├── feedback/
│   └── learning/
│
└── src/
    ├── customers/
    ├── accounts/
    ├── pix/
    ├── fraud/
    ├── ledger/
    └── notifications/

A estrutura-base de documentação, specs, loops, feedback e implementação é justamente a proposta apresentada no material original.

Agora cada diretório responde a uma pergunta.

docs/domain
→ Como nosso negócio funciona?

docs/architecture
→ Como decidimos estruturá-lo?

specs
→ O que queremos construir?

evals
→ Como provamos?

engineering
→ O que aconteceu enquanto construíamos?

incidents
→ Onde a realidade contrariou nossas hipóteses?

learning
→ O que aprendemos?

src
→ Qual implementação existe atualmente?

Isso é muito mais poderoso que simplesmente armazenar código.


⚡ CAPÍTULO 26 — E o Vibe Coding volta pela porta da frente

Depois de toda essa burocracia arquitetural alguém poderia concluir:

Então Vibe Coding acabou.

Exatamente o contrário.

Agora Bud pode escrever:

Implemente Pix agendado.

Só que por trás dessa frase curta existe:

          "Implemente Pix agendado"
                     │
                     ▼
              CONTEXT ROUTER
                     │
       ┌─────────────┼─────────────┐
       ▼             ▼             ▼
     DOMAIN         ADRs          SPEC
       │             │             │
       ├─────────────┼─────────────┤
       ▼             ▼             ▼
   CONTRACTS       RULES         EVALS
       │             │             │
       └─────────────┼─────────────┘
                     ▼
                   AGENT
                     │
                     ▼
              IMPLEMENTATION
                     │
                     ▼
                   EVALS
                     │
                     ▼
                  REVIEW

O material chama atenção para esse paradoxo:

quanto melhor estruturado o contexto, menos precisamos repetir tudo no prompt.

Portanto Vibe Coding não precisa ser sinônimo de engenharia irresponsável.

Podemos ter:

Vibe Coding sobre trilhos.


🖥️ CAPÍTULO 27 — E onde entra o COBOL?

Agora chegamos ao ponto especialmente interessante para quem vive no mundo mainframe.

Muito antes de alguém dizer Context Engineering, mainframes já conviviam com o problema.

Imagine um programa:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PGMPX001.

Quarenta anos de história.

Ele usa:

COPYBOOKS
VSAM
Db2
CICS
MQ
JCL
PROCs
RACF
SORT
programas chamados
programas chamadores
arquivos downstream
jobs batch

Alguém pede:

“Altere a regra de limite.”

O programador iniciante pensa:

abrir COBOL
       ↓
achar IF
       ↓
alterar
       ↓
compilar

O veterano pergunta:

Quem chama?

Quem é chamado?

Qual COPYBOOK?

Qual tabela?

Qual transação CICS?

Qual arquivo?

Qual JCL?

Qual janela batch?

Qual downstream?

Qual rollback?

Qual regra histórica?

Por que aquele IF existe?

Isso é Context Engineering antes do nome existir.


🏛️ CAPÍTULO 28 — O mainframe é uma catedral de contexto

Imagine:

               BUSINESS RULE
                     │
                     ▼
                 COPYBOOK
                     │
             ┌───────┼───────┐
             ▼       ▼       ▼
           COBOL    CICS     BATCH
             │       │       │
             ▼       ▼       ▼
            Db2     MQ      VSAM
             │               │
             └───────┬───────┘
                     ▼
                 DOWNSTREAM

Um agente que simplesmente recebe:

“Modernize esse COBOL.”

está quase cego.

Ele precisa saber:

Business Context
Architecture Context
Data Context
Integration Context
Security Context
Operational Context
Historical Context

Ou seja, o desafio não é:

A IA sabe COBOL?

A pergunta muito mais importante é:

A IA sabe o que esse COBOL significa dentro daquela organização?

Aí a conversa sobre Context Engineering deixa de parecer moda de IA.

Ela começa a parecer extremamente familiar para qualquer veterano de mainframe.


💎 CAPÍTULO 29 — A verdadeira informação privilegiada

Bud Fox começou nossa história procurando a próxima informação capaz de lhe dar vantagem.

No desenvolvimento com IA também existe uma informação privilegiada.

Não é:

"Use Spring Boot."

Todo modelo sabe isso.

Não é:

"Use Kafka."

Também sabe.

Não é sequer:

"Use DDD."

A verdadeira vantagem está em conhecimento que só sua organização possui:

Por que Ledger controla saldo?

Por que Pix não acessa AccountsRepository?

Por que determinado consumer precisa ser idempotente?

Por que aquele limite existe?

Por que aquela decisão foi tomada?

Qual incidente revelou aquela regra?

Qual comportamento não pode mudar?

Qual contrato não pode quebrar?

Isso é conhecimento institucional.

E, ao contrário do insider trading de Wall Street, aqui queremos exatamente o contrário:

tornar esse conhecimento acessível, explícito, governado e verificável para quem legitimamente precisa construir o sistema.


🎞️ EPÍLOGO — Bud Fox fecha o terminal

No começo tínhamos:

PROMPT
   ↓
CODE

Parecia revolucionário.

Depois descobrimos:

VIBE CODING
     ↓
VELOCIDADE

Mas velocidade precisava de direção.

Então:

SDD
 ↓
INTENÇÃO

A intenção precisava respeitar fronteiras.

DDD
+
MODULAR MONOLITH
 ↓
OWNERSHIP
+
BOUNDARIES

As fronteiras precisavam estar disponíveis aos agentes.

CONTEXT ENGINEERING
 ↓
MEMÓRIA DE ENGENHARIA

A memória precisava ser verificável.

EVALS
 ↓
EVIDÊNCIA

E nenhuma especificação conhece completamente a realidade.

Então:

ENGINEERING LOOP
 ↓
OBSERVAR
 ↓
APRENDER

Finalmente fechamos o círculo:

                  INTENT
                    │
                    ▼
                 CONTEXT
                    │
                    ▼
                   SDD
                    │
                    ▼
                  EVALS
                    │
                    ▼
                  AGENT
                    │
                    ▼
             IMPLEMENTATION
                    │
                    ▼
             ENGINEERING LOOP
                    │
                    ▼
               PRODUCTION
                    │
                    ▼
                 SIGNALS
                    │
                    ▼
                FEEDBACK
                    │
                    ▼
                LEARNING
                    │
                    └────────────► CONTEXT
                                   ↺

É exatamente a síntese alcançada pelo material: Vibe Coding acelera; SDD dá direção; DDD protege fronteiras; Evals tornam intenção verificável; Engineering Loop converte execução em aprendizado; Context Engineering conecta o conjunto.

Bud olha para Gordon Gekko.

Gekko talvez dissesse:

informação é o ativo mais valioso da sala.

Mas no desenvolvimento de software com agentes existe uma versão melhor dessa máxima:

Código está ficando barato. Contexto confiável está ficando valioso.

Porque não será particularmente impressionante uma IA produzir dez mil linhas de Java, COBOL ou Python em uma tarde.

O verdadeiro feito será ela chegar ao prompt número 500, depois de quarenta features, dez desenvolvedores, cinco agentes, três mudanças arquiteturais e aquele inevitável incidente das 03:17, e ainda compreender que:

Accounts
≠
Ledger

que:

Pix
NÃO acessa
Accounts Infrastructure

que:

Debit == Credit

não é suficiente se o mesmo evento financeiro tiver sido processado duas vezes;

e, sobretudo, compreender por que cada uma dessas decisões existe.

Quando conseguirmos isso, teremos ido muito além de Vibe Coding.

Teremos construído algo que empresas perseguem desde muito antes da IA:

software capaz de preservar o conhecimento acumulado por quem o construiu.

E talvez aí esteja a maior ironia desta história.

O futuro dos agentes de IA pode acabar redescobrindo uma das grandes lições do mainframe:

sistemas críticos sobrevivem durante décadas não porque alguém escreveu código perfeito, mas porque sucessivas gerações conseguiram preservar contratos, regras, interfaces, decisões e conhecimento suficientes para continuar mudando sem destruir aquilo que já funcionava.

Bud Fox queria descobrir qual seria a próxima grande operação.

No nosso pregão tecnológico, talvez já tenhamos encontrado uma:

Vibe Coding gera código. Context Engineering preserva engenharia.

E em sistemas que movimentam dinheiro — seja uma fintech Java de 2026 ou um COBOL processando milhões de transações num IBM Z — essa diferença vale muito mais do que algumas linhas de código produzidas em segundos.



Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...