Translate

Mostrar mensagens com a etiqueta arquitetura de software. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta arquitetura de software. Mostrar todas as mensagens

sábado, 13 de junho de 2026

Guard Rails, COBOL, Mainframe, Engenharia de Software, Desenvolvimento COBOL, Sistemas Críticos, Confiabilidade, Governança de TI, DevOps, Arquitetura de Software, Batch Processing, Segurança da Informação, SRE, Boas Práticas, Tecnologia Bancária

 

Bellacosa Mainframe e o guard rails em desenvolvimento de software

Guard Rails: A Arte de Impedir que um Desenvolvedor Derrube o Banco

Uma conversa que todo desenvolvedor COBOL deveria ter

Imagine a seguinte situação.

Você acabou de entrar em uma instituição financeira.

É seu terceiro mês como desenvolvedor COBOL.

Depois de semanas corrigindo pequenos bugs, finalmente recebe uma tarefa importante.

Uma rotina responsável pelo envio de notificações para clientes.

O gerente explica:

— Precisamos incluir um novo tipo de comunicação.

Você faz a alteração.

Compila.

Executa os testes.

Tudo parece funcionar.

A mudança é promovida para produção.

Horas depois, milhares de clientes recebem uma mensagem errada.

O call center entra em colapso.

O aplicativo registra picos de acesso.

O time de negócios inicia uma reunião de emergência.

A diretoria quer explicações.

E então surge a pergunta:

Como isso foi possível?

A resposta geralmente não é:

"Porque o desenvolvedor errou."

A resposta correta costuma ser:

"Porque o sistema permitiu que um erro chegasse à produção."

É exatamente nesse ponto que surge um dos conceitos mais importantes da engenharia moderna:

Guard Rails.


O que são Guard Rails?

A tradução literal seria:

"trilhos de proteção".

A inspiração vem das rodovias.

Quando um carro sai da pista, existe uma barreira metálica para impedir que ele caia de um penhasco.

O guard rail não evita o erro do motorista.

Ele reduz as consequências.

Na engenharia de software acontece exatamente a mesma coisa.

Os desenvolvedores inevitavelmente cometerão erros.

Os analistas inevitavelmente esquecerão requisitos.

Os operadores inevitavelmente clicarão em algo errado.

Os administradores inevitavelmente executarão comandos incorretos.

O objetivo não é eliminar o erro humano.

O objetivo é impedir que o erro se transforme em desastre.


O erro é inevitável

Desenvolvedores juniores costumam acreditar que sistemas caem porque alguém não sabia programar.

Essa visão desaparece rapidamente em ambientes corporativos.

Os maiores incidentes da história da tecnologia não foram causados por programadores incompetentes.

Foram causados por profissionais experientes trabalhando sob pressão.

Pessoas excelentes.

Pessoas inteligentes.

Pessoas treinadas.

Pessoas humanas.

A questão nunca foi:

"Quem errou?"

A questão sempre foi:

"Por que o sistema permitiu?"

Essa diferença muda completamente a forma de construir software.


Um exemplo COBOL simples

Considere um programa que realiza transferência bancária.

Versão sem Guard Rails:

IF SALDO-CONTA > 0
   SUBTRACT VALOR FROM SALDO-CONTA
END-IF.

Parece correto.

Mas existe um problema.

Suponha:

Saldo = 100

Transferência = 1000

O programa permitirá saldo negativo.

Agora uma versão mais segura.

IF VALOR > SALDO-CONTA
   DISPLAY "TRANSFERENCIA NEGADA"
   GO TO FIM-PROGRAMA
END-IF.

O sistema agora protege o negócio.

Isso é um Guard Rail.


Guard Rail não é regra de negócio

Esse é um erro comum.

Muitos desenvolvedores confundem os dois conceitos.

Regra de negócio:

"O cliente não pode sacar mais que possui."

Guard Rail:

"Mesmo que alguém esqueça a regra, o sistema impedirá a operação."

Uma regra define comportamento.

Um Guard Rail protege comportamento.


A filosofia do mainframe

Durante décadas, os ambientes mainframe desenvolveram uma cultura diferente do mundo moderno.

Em startups existe uma frase famosa:

Move fast.

Nos bancos existe outra:

Don't break production.

A razão é simples.

Um erro em rede social gera reclamações.

Um erro bancário gera prejuízo.

Por isso o mundo COBOL sempre valorizou:

  • validação;

  • redundância;

  • auditoria;

  • segregação;

  • rastreabilidade.

Sem perceber, os ambientes mainframe implementavam Guard Rails muito antes do conceito ganhar popularidade.


O caso clássico do JCL

Todo profissional de mainframe já ouviu histórias de horror envolvendo JCL.

Imagine um dataset:

CLIENTES.PRODUCAO

Agora imagine um utilitário de exclusão.

DELETE CLIENTES.PRODUCAO

Um comando simples.

Um erro simples.

Um desastre gigantesco.

Por isso empresas maduras criam Guard Rails.

Por exemplo:

  • confirmação obrigatória;

  • aprovação dupla;

  • ambiente segregado;

  • backup automático.

A exclusão continua possível.

Mas torna-se muito mais difícil.


O princípio do “Are You Sure?”

Existe uma categoria inteira de Guard Rails baseada em confirmação.

Exemplo.

Você tenta apagar um arquivo.

O sistema pergunta:

"Tem certeza?"

Parece algo trivial.

Mas essa simples pergunta já evitou milhões de erros ao longo da história da computação.

Em sistemas financeiros essa ideia evolui.

Em vez de uma confirmação:

  • duas confirmações;

  • dois operadores;

  • dois gestores;

  • duas aprovações.

Chamamos isso de Four Eyes Principle.

Princípio dos quatro olhos.


Guard Rails em processamento batch

O universo COBOL vive cercado de batches.

Folha de pagamento.

Compensação bancária.

Fechamento contábil.

Liquidação financeira.

Imagine um programa que processa:

10.000 registros

Normal.

Agora imagine:

100 milhões de registros

Algo está errado.

Sem Guard Rails o programa continua.

Com Guard Rails ele interrompe:

IF QTDE-REGISTROS > LIMITE-MAXIMO
   DISPLAY "PROCESSAMENTO ANORMAL"
   ABEND
END-IF.

Esse simples teste pode evitar horas de caos operacional.


O conceito de Fail Fast

Existe um princípio muito importante:

Fail Fast.

Falhe rapidamente.

Muitos sistemas tentam continuar funcionando mesmo após identificar inconsistências.

Isso parece inteligente.

Na prática costuma piorar tudo.

Se um dado crítico estiver errado, o melhor comportamento é parar imediatamente.

Exemplo:

IF CODIGO-CLIENTE = SPACES
   ABEND
END-IF.

Parar cedo é melhor do que produzir milhões de registros incorretos.


Guard Rails contra desenvolvedores

Esse é um tema que incomoda iniciantes.

Ninguém gosta de ouvir:

"O sistema precisa proteger a empresa de você."

Mas essa é a realidade.

Um Guard Rail existe justamente porque até profissionais excelentes erram.

Imagine um comando SQL.

Sem proteção:

DELETE FROM CLIENTES;

Com proteção:

DELETE FROM CLIENTES
WHERE ID = :CLIENTE;

Ou ainda melhor.

Permissão somente leitura em produção.

O desenvolvedor continua competente.

O ambiente apenas se torna mais seguro.


O incidente do Nubank e os Guard Rails

O caso do falso aviso de liquidação tornou-se um exemplo interessante.

Independentemente dos detalhes internos, uma pergunta surgiu:

Como uma comunicação tão crítica chegou aos clientes?

A resposta provavelmente envolve ausência ou falha de Guard Rails.

Por exemplo:

  • validação insuficiente;

  • aprovação inadequada;

  • rollout inexistente;

  • testes incompletos.

Nenhum sistema deveria conseguir informar a liquidação de um banco sem múltiplas camadas de proteção.


Rollout gradual

Imagine um envio para:

50 milhões de clientes

Sem Guard Rail:

envio imediato.

Com Guard Rail:

1% da base.

Validação.

5%.

Validação.

10%.

Validação.

100%.

Empresas como Google, Amazon e Netflix utilizam esse modelo constantemente.

O objetivo é reduzir o raio da explosão.


Blast Radius

Todo arquiteto experiente faz uma pergunta.

Se isso falhar, quantas pessoas serão afetadas?

Chamamos isso de Blast Radius.

Raio de explosão.

Exemplo.

Erro em um batch:

Impacto:

500 clientes.

Blast Radius pequeno.

Erro em compensação nacional:

Impacto:

50 milhões de clientes.

Blast Radius enorme.

Guard Rails existem para reduzir esse raio.


Observabilidade também é Guard Rail

Muitos desenvolvedores acreditam que Guard Rails são apenas validações.

Não.

Monitoramento também é proteção.

Imagine:

Processamento esperado:

1000 transações por minuto

Sistema detecta:

500.000 transações por minuto

Algo claramente está errado.

Um bom sistema dispara alarmes.

Isso também é Guard Rail.


O conceito de Circuit Breaker

Em sistemas distribuídos modernos existe outro Guard Rail famoso.

Circuit Breaker.

Inspirado nos disjuntores elétricos.

Se uma dependência começa a falhar:

o sistema corta a conexão.

Em vez de derrubar tudo.

No mundo mainframe encontramos equivalentes há décadas:

  • limites operacionais;

  • interrupções controladas;

  • filas protegidas;

  • rejeições automáticas.

A ideia é a mesma.

Conter danos.


O erro mais caro é o silencioso

Existe uma frase conhecida entre engenheiros de confiabilidade:

Sistemas barulhentos são irritantes.

Sistemas silenciosamente errados são perigosos.

Um programa que falha imediatamente chama atenção.

Um programa que produz dados incorretos durante três dias pode gerar prejuízos gigantescos.

Por isso Guard Rails modernos privilegiam transparência.

Tudo deve ser:

  • registrado;

  • monitorado;

  • auditado;

  • rastreável.


A maturidade profissional

Existe um momento na carreira em que o desenvolvedor deixa de pensar:

"Meu código funciona."

E começa a pensar:

"O que acontece quando ele falhar?"

Essa mudança separa programadores iniciantes de engenheiros experientes.

O foco deixa de ser funcionalidade.

Passa a ser confiabilidade.


O que um desenvolvedor COBOL Jr deve fazer

Sempre pergunte:

O que pode dar errado?

Quem será impactado?

Existe limite operacional?

Existe validação?

Existe rollback?

Existe auditoria?

Existe monitoramento?

Existe aprovação?

Existe segregação?

Existe plano de contingência?

Se alguma resposta for "não sei", continue investigando.


A grande lição

Guard Rails não existem porque desenvolvedores são ruins.

Eles existem porque sistemas são complexos.

Quanto maior a empresa, mais perigoso se torna assumir que ninguém cometerá erros.

O verdadeiro papel da engenharia não é criar sistemas perfeitos.

É criar sistemas resilientes.

Sistemas que sobrevivam a erros humanos.

Sistemas que sobrevivam a falhas operacionais.

Sistemas que sobrevivam a decisões equivocadas.

No universo bancário, onde bilhões de reais transitam diariamente por programas COBOL escritos ao longo de décadas, essa diferença não é apenas uma questão técnica.

É uma questão de sobrevivência operacional.

E talvez a principal lição para qualquer desenvolvedor COBOL Jr seja esta:

Seu trabalho não é apenas fazer o programa funcionar.

Seu trabalho é impedir que ele cause danos quando inevitavelmente algo der errado.

Esse é o verdadeiro significado de Guard Rails.


sexta-feira, 12 de junho de 2026

Blast Radius: Por Que um Pequeno Erro Pode Derrubar um Banco Inteiro

 

Bellacosa Mainframe e o blast radius em desenvolvimento de software

Blast Radius: Por Que um Pequeno Erro Pode Derrubar um Banco Inteiro

Uma das perguntas mais importantes da engenharia moderna

Imagine que você acabou de entrar em uma grande instituição financeira.

Você é um desenvolvedor COBOL Jr.

Recebe uma tarefa aparentemente simples.

Alterar uma rotina de validação em um programa batch.

O código possui apenas algumas linhas.

A mudança é pequena.

O teste passou.

O deploy foi aprovado.

Tudo parece sob controle.

Dois dias depois surge uma reunião de crise.

Executivos estão reunidos.

Gerentes estão nervosos.

Equipes de infraestrutura trabalham durante a madrugada.

Milhões de registros foram processados incorretamente.

O prejuízo é enorme.

E então alguém faz uma pergunta que todo arquiteto experiente conhece:

Qual era o Blast Radius dessa mudança?

Essa pergunta vale mais do que qualquer revisão de código.

Mais do que qualquer ferramenta de monitoramento.

Mais do que qualquer framework moderno.

Porque ela determina o tamanho potencial do desastre.


O que significa Blast Radius?

A tradução literal seria:

Raio de Explosão.

O termo vem do universo militar.

Quando ocorre uma explosão, existe uma área diretamente afetada.

Quanto maior a explosão, maior o raio de destruição.

A engenharia de software adotou exatamente a mesma ideia.

Quando um sistema falha, uma pergunta precisa ser respondida:

Quantas pessoas, sistemas, operações ou clientes serão impactados?

Essa área de impacto é chamada Blast Radius.


O erro que afeta um cliente

Imagine um programa COBOL responsável por atualizar dados cadastrais.

Um erro afeta:

1 cliente

Problema?

Sim.

Crise?

Provavelmente não.

O impacto é localizado.

O Blast Radius é pequeno.


O erro que afeta um banco inteiro

Agora imagine um programa responsável pela compensação financeira nacional.

Um erro afeta:

30 milhões de clientes

Mesma quantidade de linhas alteradas.

Mesmo programador.

Mesmo tipo de erro.

Resultado completamente diferente.

Por quê?

Porque o Blast Radius mudou.


A pergunta que diferencia um programador de um engenheiro

O desenvolvedor iniciante normalmente pergunta:

Meu código funciona?

O engenheiro experiente pergunta:

O que acontece se ele falhar?

Essa mudança de mentalidade é uma das maiores evoluções na carreira de tecnologia.

Porque sistemas críticos não são avaliados apenas pelo sucesso.

Eles são avaliados pela forma como falham.


O mito do pequeno erro

Existe uma crença perigosa em ambientes corporativos.

"Foi só uma alteração pequena."

O tamanho do código raramente determina o tamanho do impacto.

Um único caractere já derrubou sistemas inteiros.

Um único parâmetro incorreto já gerou perdas milionárias.

Uma única configuração errada já interrompeu operações globais.

O impacto depende do Blast Radius.

Não da quantidade de código.


O universo COBOL e o poder invisível

Desenvolvedores COBOL trabalham em uma situação peculiar.

Muitas vezes manipulam sistemas que movimentam bilhões de reais diariamente.

Mas a interface parece simples.

Uma tela verde.

Alguns arquivos.

JCLs.

Datasets.

Rotinas batch.

Tudo parece tranquilo.

Até que alguém descobre que aquele programa processa:

  • contas correntes;

  • cartões;

  • empréstimos;

  • investimentos;

  • liquidações;

  • compensações.

De repente o código ganha outra dimensão.


O efeito dominó

Imagine uma falha em um cadastro.

Cliente incorreto.

Esse dado alimenta:

  • CRM;

  • antifraude;

  • cobrança;

  • compliance;

  • atendimento;

  • relatórios regulatórios.

Agora uma pequena falha inicial se transforma em dezenas de falhas secundárias.

Isso é amplificação de Blast Radius.


O conceito de dependências

Sistemas modernos não vivem isolados.

Um programa chama outro.

Que chama outro.

Que alimenta outro.

Que gera arquivos para outro.

O resultado é uma rede gigantesca.

Quando um componente falha, o impacto se propaga.

Como peças de dominó.


O exemplo do CPF inválido

Imagine uma rotina simples.

Um CPF inválido passa pela validação.

O erro parece pequeno.

Mas esse dado segue adiante.

Abre conta.

Gera cartão.

Produz relatórios.

Entra em auditorias.

Alimenta modelos analíticos.

Meses depois ninguém sabe mais onde o problema começou.

O Blast Radius cresceu silenciosamente.


O incidente do Nubank como estudo de caso

O episódio envolvendo o falso aviso de liquidação trouxe uma lição interessante.

Independentemente dos detalhes internos, a pergunta arquitetural é:

Qual era o Blast Radius daquele processo?

Se a mensagem atingisse:

10 clientes

O incidente seria pequeno.

Se atingir milhões:

O cenário muda completamente.

A mesma falha produz consequências exponencialmente maiores.


Blast Radius e ambientes de produção

Uma regra simples:

Quanto mais próximo da produção, maior o Blast Radius.

Ambiente de desenvolvimento:

Impacto quase zero.

Homologação:

Impacto limitado.

Produção:

Impacto real.

Produção financeira:

Impacto potencialmente gigantesco.

É por isso que instituições financeiras possuem tantos controles.

Não por burocracia.

Mas porque o custo do erro é enorme.


O perigo dos batches

O mundo COBOL é dominado por processamento em massa.

Um programa pode executar durante horas.

Processando milhões de registros.

O problema é simples.

Se houver um erro:

Ele será repetido milhões de vezes.

Um erro individual torna-se um erro industrializado.


O erro multiplicado

Imagine:

1 registro incorreto

Sem batch:

impacto pequeno.

Agora imagine:

50 milhões de registros

Processados pela mesma lógica defeituosa.

O erro não mudou.

O Blast Radius mudou.


Como arquitetos pensam

Arquitetos raramente perguntam:

"Qual tecnologia usamos?"

Eles perguntam:

"Qual o pior cenário possível?"

Essa pergunta direciona toda a arquitetura.

Porque sistemas críticos são construídos para sobreviver a falhas.

Não apenas para funcionar.


Blast Radius e permissões

Um desenvolvedor possui acesso de leitura.

Blast Radius reduzido.

Um desenvolvedor possui acesso irrestrito.

Blast Radius elevado.

É por isso que ambientes maduros trabalham com:

  • menor privilégio;

  • segregação;

  • controle de acesso;

  • aprovações.

Tudo isso é gestão de Blast Radius.


Blast Radius e banco de dados

Imagine um comando SQL.

Primeiro cenário:

UPDATE CLIENTES
SET STATUS='A'
WHERE ID=100;

Impacto:

um cliente.

Segundo cenário:

UPDATE CLIENTES
SET STATUS='A';

Impacto:

todos os clientes.

A diferença visual é mínima.

A diferença operacional é gigantesca.


O princípio da contenção

Existe uma palavra muito importante.

Contenção.

Todo sistema moderno deveria conter falhas.

Não espalhá-las.

Por isso empresas investem em:

  • segmentação;

  • isolamento;

  • partições;

  • zonas independentes.

O objetivo é impedir que uma falha local se torne global.


O conceito de células

Empresas como Amazon popularizaram a ideia de Cell Architecture.

Em vez de uma estrutura única gigante.

Criam-se células menores.

Se uma célula falhar:

As demais continuam operando.

Isso reduz drasticamente o Blast Radius.


Mainframe já fazia isso há décadas

Curiosamente, ambientes mainframe utilizavam conceitos semelhantes muito antes da computação em nuvem.

Exemplos:

  • LPARs;

  • regiões CICS;

  • filas separadas;

  • ambientes segregados;

  • jobs independentes.

A filosofia era exatamente a mesma.

Conter impactos.


O problema do compartilhamento excessivo

Quanto mais sistemas compartilham recursos, maior o Blast Radius.

Banco compartilhado.

Fila compartilhada.

Storage compartilhado.

Processamento compartilhado.

Tudo isso cria pontos únicos de falha.

Um problema em um componente afeta dezenas de outros.


O conceito de Blast Radius Humano

Pouca gente fala sobre isso.

Mas pessoas também possuem Blast Radius.

Imagine:

Um único operador consegue executar qualquer comando em produção.

Blast Radius enorme.

Agora imagine:

Necessidade de aprovação dupla.

Blast Radius reduzido.

A governança existe para limitar o alcance dos erros humanos.


O papel dos Guard Rails

Blast Radius e Guard Rails caminham juntos.

Guard Rails tentam impedir erros.

Blast Radius tenta limitar consequências.

Exemplo:

Guard Rail:

impedir exclusão acidental.

Blast Radius:

caso a exclusão ocorra, limitar o impacto.

São conceitos complementares.


Rollout gradual

Uma das formas mais modernas de controlar Blast Radius é o rollout progressivo.

Em vez de liberar uma mudança para todos.

Liberamos para poucos.

Por exemplo:

1%.

Depois 5%.

Depois 10%.

Depois 100%.

Se houver erro, ele será detectado cedo.

O impacto permanece pequeno.


O medo saudável da produção

Existe uma característica interessante nos profissionais experientes de mainframe.

Eles respeitam produção.

Não porque tenham medo da tecnologia.

Mas porque entendem o Blast Radius.

Produção concentra:

  • clientes;

  • dinheiro;

  • contratos;

  • obrigações regulatórias;

  • reputação.

Uma pequena falha pode produzir consequências gigantescas.


Observabilidade e Blast Radius

Você não controla aquilo que não consegue enxergar.

Por isso monitoramento é fundamental.

Imagine um batch que normalmente processa:

500 mil registros

Hoje processou:

50 milhões

Algo claramente está errado.

Um sistema observável detecta rapidamente.

Quanto mais cedo o problema é identificado, menor o Blast Radius.


O custo da reputação

Em bancos existe um ativo invisível.

Confiança.

Quando uma falha afeta poucos clientes, a recuperação costuma ser simples.

Quando afeta milhões, surge um problema adicional.

Reputação.

O Blast Radius passa a incluir:

  • imprensa;

  • investidores;

  • reguladores;

  • mercado.

O dano deixa de ser apenas tecnológico.


O exercício mental que todo COBOL Jr deveria fazer

Antes de qualquer alteração, pergunte:

Se eu errar:

  • Quantos clientes serão impactados?

  • Quantos sistemas dependem disso?

  • Existe rollback?

  • Existe monitoramento?

  • Existe plano de contingência?

  • Existe limite operacional?

  • Existe validação?

  • Existe segregação?

Essas perguntas valem mais do que qualquer linha de código.


A verdadeira maturidade profissional

Existe um momento em que o desenvolvedor deixa de ser apenas um programador.

Ele passa a enxergar sistemas.

Passa a enxergar operações.

Passa a enxergar negócios.

Passa a enxergar riscos.

Nesse momento surge uma nova pergunta.

Não mais:

O programa funciona?

Mas sim:

Qual é o Blast Radius se ele parar de funcionar?

Essa mudança de perspectiva transforma a forma de desenvolver software.


Conclusão

Blast Radius é um dos conceitos mais importantes da engenharia moderna porque nos obriga a pensar além do código.

Ele nos força a enxergar impacto.

A enxergar consequências.

A enxergar riscos.

Para um desenvolvedor COBOL Jr, compreender Blast Radius significa entender que o tamanho de uma alteração não determina sua importância.

Uma linha de código pode alterar milhões de contas.

Um único parâmetro pode interromper operações nacionais.

Uma pequena falha pode se propagar por dezenas de sistemas.

Os melhores engenheiros não são aqueles que acreditam que nunca errarão.

São aqueles que projetam sistemas assumindo que erros inevitavelmente acontecerão.

E quando eles acontecerem, o objetivo não será impedir a explosão.

Será garantir que o raio da explosão seja o menor possível.

Esse é o verdadeiro significado de Blast Radius.


segunda-feira, 1 de junho de 2026

☕💣 DÍVIDA TÉCNICA: O MONSTRO INVISÍVEL QUE ESTÁ COMENDO O SEU COBOL DESDE O SÉCULO PASSADO

 

Bellacosa Mainframe e o monstro da divida tecnica 

☕💣 DÍVIDA TÉCNICA: O MONSTRO INVISÍVEL QUE ESTÁ COMENDO O SEU COBOL DESDE O SÉCULO PASSADO

"O sistema funciona perfeitamente. Só ninguém sabe como."

Se você trabalha com Mainframe há algum tempo, provavelmente já ouviu frases como:

  • "Não mexe nisso que funciona."

  • "Esse programa está em produção há 20 anos."

  • "Só o João sabe alterar esse módulo."

  • "Depois a gente documenta."

  • "Precisamos entregar hoje."

Parabéns.

Você acabou de encontrar alguns dos maiores sintomas de uma das doenças mais comuns da tecnologia moderna:

A Dívida Técnica.

E não, ela não acontece apenas em Java, Python ou aplicações web modernas.

Na verdade, muitos dos maiores casos de dívida técnica do planeta estão rodando neste exato momento em sistemas COBOL responsáveis por bancos, seguradoras, governos, companhias aéreas e bolsas de valores.

Vamos entender o que é, como identificar, controlar e principalmente como sobreviver a ela.


O QUE É DÍVIDA TÉCNICA?

A definição mais simples é:

Dívida Técnica é o custo futuro gerado quando escolhemos uma solução rápida hoje em vez da melhor solução possível.

Imagine que você recebeu uma demanda urgente.

O gerente aparece correndo:

"Precisamos colocar essa alteração em produção amanhã."

Você sabe que o correto seria:

  • revisar a arquitetura;

  • atualizar documentação;

  • criar casos de teste;

  • revisar impactos;

  • atualizar fluxogramas.

Mas o prazo não permite.

Então você faz um ajuste rápido.

Entrega.

Todo mundo feliz.

Até que seis meses depois alguém precisa alterar novamente aquele trecho.

Agora ninguém entende mais nada.

A dívida venceu.

E os juros começaram a ser cobrados.


A ANALOGIA COM O CARTÃO DE CRÉDITO

A comparação mais famosa é com uma dívida financeira.

Quando você compra algo parcelado:

Você ganha agora.

Mas paga depois.

Na dívida técnica acontece exatamente o mesmo.

Você ganha:

  • velocidade;

  • prazo;

  • entrega rápida.

Mas paga depois com:

  • bugs;

  • retrabalho;

  • manutenção cara;

  • incidentes de produção.

Quanto mais tempo passa, maiores ficam os juros.


O COBOL NÃO CRIA DÍVIDA TÉCNICA

Essa é uma das maiores injustiças da informática.

Muitos dizem:

"Cobol é dívida técnica."

Errado.

COBOL não é dívida técnica.

COBOL mal mantido é dívida técnica.

Existem programas COBOL escritos há 30 anos que continuam:

  • legíveis;

  • documentados;

  • organizados;

  • eficientes.

E existem aplicações modernas escritas há seis meses que já parecem um filme de terror.

A linguagem não é o problema.

A disciplina é.


COMO A DÍVIDA TÉCNICA NASCE

Ela normalmente surge de quatro formas.

1. Pressão por prazo

O caso mais comum.

"Entrega primeiro."

"Arruma depois."

O problema é que o depois quase nunca chega.


2. Falta de documentação

O desenvolvedor conhece tudo.

Então ele pensa:

"Não preciso documentar."

Dois anos depois ele muda de empresa.

Agora ninguém entende o programa.


3. Correções emergenciais

Produção caiu.

Cliente está ligando.

Diretoria está nervosa.

O objetivo vira apenas:

"Faça voltar."

Nesse momento quase ninguém pensa em qualidade.


4. Sistemas legados

Bibliotecas antigas.

COPYBOOKs herdados.

Macros esquecidas.

JCLs copiados durante décadas.

Tudo isso acumula dívida.


EXEMPLO REAL DE DÍVIDA TÉCNICA EM COBOL

Imagine um cálculo de desconto.

Versão original:

IF CLIENTE-VIP
   COMPUTE DESCONTO = VALOR * 0.15
END-IF

Simples.

Legível.

Agora passam dez anos.

Novas regras surgem.

Resultado:

IF CLIENTE-TIPO = 'A'
...
ELSE
IF CLIENTE-TIPO = 'B'
...
ELSE
IF CLIENTE-TIPO = 'C'
...

Mais tarde:

IF CLIENTE-TIPO = 'A'
...
ELSE
IF CLIENTE-TIPO = 'B'
...
ELSE
IF CLIENTE-TIPO = 'C'
...
ELSE
IF REGIAO = 'S'
...

Depois de centenas de mudanças:

Ninguém sabe mais como o cálculo funciona.

O programa funciona.

Mas ninguém entende.

Isso é dívida técnica.


OS SINTOMAS MAIS PERIGOSOS

Se você encontrar estes sinais, ligue o alerta.

Programas gigantes

Mais de 10.000 linhas.

COPYBOOKs duplicados

A mesma estrutura em vários lugares.

JCLs clonados

Mudam apenas o nome do JOB.

Falta de comentários

Tudo depende da memória dos analistas.

Testes manuais

Ninguém consegue validar rapidamente.

Dependência de uma pessoa

"O Carlos sabe."

Quando você ouve isso, existe dívida técnica.


O EFEITO JUROS COMPOSTOS

Aqui está a parte assustadora.

Dívida técnica cresce de forma parecida com juros compostos.

Um bug gera:

  • remendo;

  • novo remendo;

  • ajuste do remendo;

  • correção da correção.

Depois de alguns anos ninguém consegue alterar sem medo.

O custo explode.


COMO MAPEAR DÍVIDA TÉCNICA

Primeiro passo:

Pare de adivinhar.

Crie um inventário.

Faça uma planilha simples.

Colunas:

  • Sistema

  • Programa

  • Problema

  • Impacto

  • Complexidade

  • Prioridade

Exemplo:

ProgramaProblemaImpacto
COBCLI01Sem documentaçãoAlto
COBFAT0212.000 linhasAlto
COBPAG03Sem testesMédio

Agora a dívida virou algo visível.


MÉTRICAS IMPORTANTES

Um programador júnior deve aprender a medir.

Algumas métricas úteis:

Número de ABENDs

Se cresce continuamente:

há algo errado.


Tempo de correção

Quanto tempo leva para corrigir um incidente?

Quanto maior, maior a dívida.


Quantidade de módulos sem documentação

Métrica simples e poderosa.


Cobertura de testes

Quanto mais baixa, maior o risco.


FERRAMENTAS ÚTEIS NO MAINFRAME

Muitos iniciantes acham que Mainframe não possui ferramentas modernas.

Possui.

E muitas.

IBM Application Discovery

Mapeia dependências.

Excelente para sistemas gigantes.


IBM ADDI

Application Discovery and Delivery Intelligence.

Mostra relacionamentos entre:

  • COBOL

  • JCL

  • DB2

  • CICS


IBM Debug Tool

Ajuda a entender comportamento de programas complexos.


IBM Fault Analyzer

Investiga ABENDs.


IBM File Manager

Analisa arquivos rapidamente.


IBM Dependency Based Build

Automação moderna para pipelines Mainframe.


COMO REDUZIR A DÍVIDA

Agora vem a parte prática.


Passo 1 – Pare de criar dívida nova

Antes de pagar a antiga.

Evite criar mais.

Parece óbvio.

Mas é onde tudo começa.


Passo 2 – Refatore pequenos trechos

Não tente reescrever tudo.

Ataque pequenas áreas.

Exemplo:

  • nomes ruins;

  • IFs excessivos;

  • parágrafos gigantes.


Passo 3 – Documente enquanto aprende

Cada descoberta vira documentação.

Não espere um projeto oficial.


Passo 4 – Automatize testes

Mesmo testes simples ajudam.

Menos medo de alterar.

Mais velocidade.


Passo 5 – Padronize

Defina padrões.

Por exemplo:

  • nomenclatura;

  • comentários;

  • estrutura de programas;

  • organização de COPYBOOKs.


O ERRO MAIS COMUM DOS JUNIORES

Achar que refatorar significa reescrever tudo.

Não.

Refatoração significa melhorar sem alterar comportamento.

Você limpa.

Organiza.

Simplifica.

Sem mudar resultado.


O SEGREDO DOS ANALISTAS SENIORES

Muitos iniciantes acreditam que profissionais experientes sabem tudo.

Não sabem.

A diferença é que eles:

  • documentam mais;

  • investigam melhor;

  • evitam atalhos perigosos;

  • controlam a dívida técnica.

O conhecimento não está apenas no código.

Está na disciplina.


EASTER EGG DOS MAINFRAMEIROS

Se encontrar um comentário parecido com:

* NÃO REMOVER
* FUNCIONA ASSIM DESDE 1994

Você provavelmente encontrou um artefato arqueológico corporativo.

Trate com respeito.

Mas investigue.

Porque muitas vezes ele esconde uma dívida técnica histórica.


A REGRA DOS 5 MINUTOS

Uma dica poderosa.

Se você gastou cinco minutos para entender algo complicado:

documente.

O próximo desenvolvedor agradecerá.

E talvez esse próximo desenvolvedor seja você daqui a seis meses.


COMO EVOLUIR NA CARREIRA ATRAVÉS DA DÍVIDA TÉCNICA

Os melhores profissionais não são os que criam mais código.

São os que reduzem complexidade.

Quando você aprende a:

  • mapear problemas;

  • documentar;

  • simplificar;

  • automatizar;

  • refatorar;

você deixa de ser apenas um programador.

Você passa a ser um engenheiro de software.


CONCLUSÃO

Dívida técnica não é um bug.

Não é um ABEND.

Não é um programa COBOL antigo.

Ela é o resultado de decisões acumuladas ao longo do tempo.

Algumas são necessárias.

Outras são perigosas.

O segredo não é eliminar toda dívida técnica.

Isso é impossível.

O segredo é conhecê-la, monitorá-la e pagá-la antes que ela assuma o controle do sistema.

Porque, no final das contas, o verdadeiro problema não é aquele programa COBOL de 1987.

O problema é ninguém mais entender por que ele ainda funciona.

E quando esse dia chega...

o próximo chamado de produção costuma acontecer às 03:17 da manhã de um domingo.

Aproveite e conheça BACKLOG

https://eljefemidnightlunch.blogspot.com/2025/01/backlog-o-arquivo-secreto-que-separa-um.html

Backlog


quarta-feira, 20 de maio de 2026

🔥☕ Do COBOL ao Arquiteto Enterprise Por Que Engenharia de Software Virou a Skill Mais Importante Para o Programador Mainframe Moderno

 

Bellacosa Mainframe e topicos de engenharia de software para mainframers


🔥☕ Do COBOL ao Arquiteto Enterprise

Por Que Engenharia de Software Virou a Skill Mais Importante Para o Programador Mainframe Moderno

Existe uma frase silenciosa que ecoa dentro dos grandes bancos, seguradoras e sistemas financeiros do planeta:

“O sistema pode até mudar de interface… mas o COBOL continua sustentando o mundo.”

E isso não é exagero.

Enquanto muita gente acredita que o universo enterprise vive apenas de microservices coloridos, containers e frameworks JavaScript da moda… milhões de transações financeiras continuam atravessando silenciosamente ambientes IBM Z, CICS, DB2 e aplicações COBOL gigantescas que nunca podem parar.

Mas algo mudou.

Muito.

O mercado não procura mais apenas:

  • “quem sabe COBOL”

Hoje o mercado procura:

  • engenheiros de software enterprise.

E existe uma diferença brutal entre essas duas coisas.


☕ O Antigo Programador COBOL

Durante décadas, muitos profissionais cresceram no modelo clássico:

  • alterar rotina

  • corrigir bug

  • compilar

  • subir pacote

  • fechar chamado

O foco era:

  • implementação

  • manutenção

  • operação

E isso funcionou por muito tempo.

Mas o mundo enterprise moderno virou um ecossistema absurdamente mais complexo.

Hoje um simples sistema bancário pode envolver:

  • APIs REST

  • aplicações mobile

  • cloud híbrida

  • microsserviços

  • observabilidade

  • CI/CD

  • autenticação distribuída

  • mensageria

  • integração em tempo real

  • analytics

  • IA

E no meio disso tudo…

o COBOL continua lá.

Silencioso.

Processando.

Confiável.


🏗️ O Que é Engenharia de Software de Verdade?

Muita gente acha que engenharia de software é:

  • aprender framework

  • decorar design pattern

  • usar UML

Mas engenharia de software é algo muito maior.

Ela existe para resolver um problema fundamental:

Como construir sistemas gigantes sem criar caos?

Porque sistemas enterprise crescem.

E crescem rápido.

Sem arquitetura:

  • o sistema vira espaguete

  • manutenção explode

  • bugs aumentam

  • deploys quebram produção

  • integração vira pesadelo

A engenharia surge para controlar complexidade.


🧱 Arquitetura Não É Luxo. É Sobrevivência.

O programador júnior normalmente olha para:

  • programas

  • copybooks

  • tabelas

  • jobs

O arquiteto olha para:

  • ecossistemas

  • fluxos

  • dependências

  • escalabilidade

  • disponibilidade

  • integração

Essa mudança de mentalidade é gigantesca.

Um banco não sobrevive décadas apenas porque tem “código”.

Ele sobrevive porque existe:

  • arquitetura

  • organização

  • separação de responsabilidades

  • governança

E curiosamente…

o mundo mainframe sempre fez isso muito antes da cloud existir.


☕ O Mainframe Já Pensava Como Cloud Décadas Atrás

Esse talvez seja um dos maiores segredos da computação enterprise.

Muitos conceitos vendidos hoje como “modernos” já existiam no ecossistema IBM há décadas.

Veja isso:

Mundo ModernoMainframe Enterprise
Alta disponibilidadeSysplex
Load BalancingCICSPlex
APIsz/OS Connect
TransactionsCICS
ObservabilidadeOMEGAMON
Segurança centralizadaRACF
MensageriaMQ

Ou seja…

o IBM Z nunca ficou ultrapassado.

O que aconteceu foi:

  • a interface mudou

  • o marketing mudou

  • o nome mudou

Mas os fundamentos de engenharia continuaram fortíssimos.


⚔️ O Problema do “Só Saber Programar”

Existe um erro muito comum entre iniciantes.

Acreditar que carreira se resume a:

  • linguagem

  • sintaxe

  • framework

Mas linguagens mudam.

Frameworks morrem.

Hypes desaparecem.

O que permanece é:

  • arquitetura

  • modelagem

  • design

  • integração

  • capacidade analítica

É exatamente por isso que engenheiros experientes continuam relevantes por décadas.

Eles entendem sistemas.

Não apenas ferramentas.


🧩 Design Patterns: O Conhecimento Condensado dos Veteranos

Quando um júnior vê:

  • Factory

  • Singleton

  • Observer

  • Strategy

ele normalmente pensa:

“isso parece complicado”

Mas design patterns são apenas soluções repetidas para problemas repetidos.

Eles nasceram porque grandes sistemas começaram a enfrentar:

  • acoplamento

  • manutenção impossível

  • crescimento descontrolado

  • dependências caóticas

Então engenheiros começaram a criar padrões reutilizáveis.

E isso mudou a indústria.

No fundo:

  • design patterns

  • clean code

  • arquitetura em camadas

  • UML

são tentativas humanas de controlar complexidade.


🧠 Clean Code Não É Frescura

Muitos sistemas COBOL antigos sofrem não por causa da idade.

Mas por causa da falta de engenharia.

Código ruim custa:

  • dinheiro

  • tempo

  • performance

  • estabilidade

  • saúde mental

E isso vale para qualquer linguagem.

Um programa COBOL bem escrito pode durar décadas.

Um programa moderno mal escrito pode virar lixo em seis meses.

A diferença está na engenharia.


🌐 O Novo COBOL Está Conectado

Hoje o programador mainframe moderno precisa entender:

  • APIs REST

  • JSON

  • integração

  • cloud híbrida

  • DevOps

  • pipelines

  • observabilidade

Porque o COBOL moderno não vive mais isolado.

Agora ele conversa com:

  • mobile

  • fintechs

  • microsserviços

  • IA

  • analytics

  • cloud pública

O COBOL deixou de ser “backoffice”.

Ele virou parte do ecossistema digital global.


🚀 DevOps Chegou ao IBM Z

Durante muito tempo existiu um mito:

“Mainframe não acompanha DevOps.”

Hoje isso caiu completamente.

O ecossistema IBM já possui:

  • Git

  • CI/CD

  • automação

  • pipelines

  • testes automatizados

  • observabilidade moderna

  • integração cloud-native

Ferramentas como:

  • Zowe

  • Jenkins

  • UrbanCode

  • GitHub

  • OpenShift

aproximaram ainda mais o IBM Z do universo moderno.


☕ O Que o Mercado Espera Agora?

O mercado não procura mais apenas:

  • operador

  • codificador

  • executor de tarefas

Ele procura:

  • solucionadores de problemas

O profissional valioso hoje entende:

  • negócio

  • arquitetura

  • integração

  • confiabilidade

  • escalabilidade

  • comunicação

E aqui existe uma vantagem absurda para quem vem do mainframe.

Porque poucos ambientes ensinam:

  • sistemas críticos

  • alta disponibilidade

  • milhões de transações reais

  • tolerância zero para falhas

O programador COBOL enterprise já nasce perto de problemas gigantes.


🧭 O Roadmap do Programador COBOL Moderno

A evolução natural hoje passa por:

Base

  • COBOL

  • JCL

  • VSAM

  • SDSF

Intermediário

  • DB2

  • CICS

  • SQL

  • MQ

Modernização

  • APIs

  • JSON

  • REST

  • Git

  • DevOps

Engenharia

  • Arquitetura

  • Design Patterns

  • UML

  • Observabilidade

  • Segurança

Próximo nível

  • Cloud híbrida

  • SRE

  • Performance

  • Integração distribuída

  • Engenharia enterprise


🔥 O Grande Erro do Mercado

Enquanto muitos perseguem apenas:

  • hype

  • frameworks

  • modinhas

o mundo enterprise continua valorizando:

  • confiabilidade

  • estabilidade

  • engenharia sólida

E é exatamente aí que o profissional IBM Z moderno pode se tornar raro.

Porque ele entende:

  • legado

  • missão crítica

  • integração

  • arquitetura real


☕ O Futuro Não Está Escolhendo Entre COBOL ou Cloud

O futuro está integrando os dois.

Os sistemas modernos não vão substituir completamente o mainframe.

Eles vão conversar com ele.

Porque no final:

  • o aplicativo pode mudar

  • a interface pode mudar

  • a cloud pode mudar

Mas alguém ainda precisa garantir:

  • consistência

  • transação

  • segurança

  • disponibilidade

E silenciosamente…

o IBM Z continua fazendo isso melhor do que quase qualquer outra plataforma do planeta.


🔥☕ Conclusão Bellacosa Mainframe

O programador COBOL que entender engenharia de software deixará de ser apenas:

  • “o cara do legado”

e começará a se tornar:

  • arquiteto

  • integrador

  • especialista enterprise

  • engenheiro de sistemas críticos

Porque no final…

o verdadeiro diferencial nunca foi apenas a linguagem.

Sempre foi:

entender como sistemas gigantes funcionam.

 

sábado, 4 de outubro de 2025

☕💾🔥 ENGENHARIA DE SOFTWARE — O “SISTEMA OPERACIONAL INVISÍVEL” QUE SEPARA PROGRAMADORES COMUNS DE PROFISSIONAIS ENTERPRISE 🔥💾☕

 

Bellacosa Mainframe e a Engenharia de Software

☕💾🔥 ENGENHARIA DE SOFTWARE — O “SISTEMA OPERACIONAL INVISÍVEL” QUE SEPARA PROGRAMADORES COMUNS DE PROFISSIONAIS ENTERPRISE 🔥💾☕

Muita gente entrando no mundo COBOL/mainframe acredita que:

“Engenharia de software = aprender linguagem.”

☠️🔥

Mas aí acontece o primeiro trauma corporativo real:

  • ABEND em produção;
  • batch atrasado;
  • janela estourada;
  • rollback;
  • incidente crítico;
  • auditoria;
  • problema de performance DB2;
  • mudança quebrando outro sistema;
  • integração falhando às 3h da manhã.

E nesse momento o programador descobre:

Engenharia de software NÃO é apenas programar.

Ela é:

  • organização;
  • arquitetura;
  • previsibilidade;
  • qualidade;
  • processos;
  • sobrevivência operacional.

☕ O QUE É ENGENHARIA DE SOFTWARE DE VERDADE?

Engenharia de software é:

construir sistemas grandes, confiáveis, escaláveis e sustentáveis sem transformar a empresa num apocalipse tecnológico.

🔥💾☕


O ERRO MAIS COMUM DO PROGRAMADOR JÚNIOR

O iniciante normalmente pensa assim:

“Se compilou e rodou, está pronto.”

☠️☠️☠️

No mundo enterprise isso NÃO significa nada.

Porque um software corporativo precisa:

  • funcionar;
  • escalar;
  • ser seguro;
  • ser auditável;
  • ser documentado;
  • sobreviver anos;
  • suportar manutenção;
  • integrar com dezenas de sistemas;
  • não destruir produção.

☕💾 O MAINFRAME ENSINOU ISSO MUITO ANTES DA CLOUD

A ironia é fantástica.

Hoje o mercado fala:

  • DevOps;
  • SRE;
  • observabilidade;
  • resiliência;
  • alta disponibilidade;
  • governança.

Mas o mundo mainframe já fazia isso desde os anos 70.

🔥☕


UM PROGRAMADOR COBOL NÃO ESCREVE “APENAS PROGRAMAS”

Ele frequentemente participa de:

  • sistemas bancários;
  • processamento de folha;
  • cartões;
  • PIX;
  • compensação;
  • seguros;
  • governo;
  • telecom.

Ou seja:

software que movimenta bilhões.


☕ A DIFERENÇA ENTRE “CODAR” E “ENGENHARIA”

Programador comum

“Vou fazer funcionar.”

Engenheiro de software

“Como isso vai sobreviver 15 anos em produção?”

🔥💾


O SDLC — O CICLO DA SOBREVIVÊNCIA CORPORATIVA

Toda empresa séria usa algum tipo de SDLC.

Software Development Life Cycle


As etapas clássicas

Requirements

Design

Development

Testing

Deployment

Maintenance

☕ O QUE O JÚNIOR NORMALMENTE NÃO PERCEBE

O código é apenas UMA etapa pequena.

Grande parte do esforço real está em:

  • entender negócio;
  • validar regras;
  • testar;
  • homologar;
  • documentar;
  • subir produção;
  • monitorar;
  • manter.

☠️ O MAIOR CEMITÉRIO DA TI

Projetos falham mais por:

  • requisitos ruins;
  • arquitetura ruim;
  • falta de comunicação;
  • falta de testes;

do que por linguagem.


☕💾 REQUISITOS — O “BUG” QUE NASCE ANTES DO CÓDIGO

Muitos sistemas falham porque:

o time implementou corretamente…
o requisito errado.

☠️🔥


Exemplo COBOL clássico

Usuário diz:

“quero calcular juros.”

Mas ninguém definiu:

  • regra;
  • arredondamento;
  • calendário;
  • horário;
  • feriados;
  • timezone;
  • tratamento de exceção.

☠️☠️☠️

Resultado:

  • prejuízo;
  • auditoria;
  • incidente;
  • caos.

☕ TESTES — O SEGURO DE VIDA DO ENTERPRISE

Programador júnior frequentemente pensa:

“Mas na minha máquina funcionou.”

☠️🔥☠️🔥☠️🔥

Produção enterprise não perdoa isso.


Tipos de teste

Functional

A regra funciona?


Performance

Aguenta milhões de transações?


Regression

A correção quebrou outro sistema?


Security

Existe vulnerabilidade?


☕💾 MAINFRAME LEVA ISSO AO EXTREMO

Porque:

  • bancos não podem parar;
  • folha não pode falhar;
  • PIX não pode sumir;
  • cartão não pode duplicar;
  • batch não pode atrasar.

Então engenharia enterprise nasce da paranoia operacional.

🔥☕


VERSIONAMENTO — O “TIME MACHINE” CORPORATIVO

Sem versionamento:

  • ninguém sabe quem mudou;
  • ninguém sabe quando;
  • ninguém sabe por quê.

☠️🔥


Mundo moderno

  • Git
  • GitHub
  • GitLab

Mundo mainframe

  • Endevor
  • Changeman
  • Librarian

☕ O CONCEITO É O MESMO

Controlar:

  • mudanças;
  • histórico;
  • rollback;
  • rastreabilidade.

☕💾 ARQUITETURA — O CÉREBRO INVISÍVEL DO SISTEMA

Aqui o júnior normalmente desperta.

Porque descobre que:

sistemas grandes NÃO sobrevivem só com código.

Precisam:

  • organização;
  • integração;
  • escalabilidade;
  • segurança;
  • observabilidade.

Exemplo bancário

Frontend

API Gateway

Microservices

MQ

COBOL/CICS

DB2

Isso é engenharia enterprise.


☠️ MICROservices NÃO SÃO “MÁGICA”

Muita empresa cria:

400 APIs
+
500 containers
+
logs infinitos
+
monitoramento caótico

e chama isso de:

“transformação digital.”

☠️🔥☠️🔥☠️🔥


☕💾 O MAINFRAME ENSINOU ALGO IMPORTANTE

Centralização às vezes é:

  • mais segura;
  • mais simples;
  • mais eficiente.

Por isso muitos core bancários continuam no z/OS.


O GRANDE SEGREDO DA ENGENHARIA DE SOFTWARE

Ela NÃO é sobre tecnologia apenas.

Ela é sobre:

  • reduzir caos;
  • reduzir risco;
  • reduzir falhas;
  • organizar complexidade.

🔥☕


☕ O JÚNIOR QUE EVOLUI RÁPIDO ENTENDE ISSO

Linguagens mudam.

Ontem:

  • COBOL;
  • PL/I;
  • C.

Depois:

  • Java;
  • C#;
  • Python.

Agora:

  • IA assistida;
  • automação;
  • cloud native.

Mas:

  • lógica;
  • arquitetura;
  • qualidade;
  • engenharia;

continuam eternas.


☕💾 O FUTURO DO PROGRAMADOR COBOL

O mercado NÃO quer apenas:

“quem sabe COBOL.”

Quer:

  • APIs;
  • integração;
  • cloud;
  • automação;
  • observabilidade;
  • DevOps;
  • segurança;
  • engenharia moderna.

E AQUI ESTÁ A GRANDE VERDADE

Quem domina:

  • fundamentos enterprise;
  • processamento crítico;
  • arquitetura;
  • mentalidade operacional;

possui vantagem enorme no mercado moderno.

Porque MUITOS desenvolvedores atuais:

  • sabem framework;
  • sabem frontend;
  • sabem cloud;

mas nunca sustentaram:

  • processamento nacional;
  • batch crítico;
  • transações financeiras massivas.

☕💾🔥 CONCLUSÃO — ENGENHARIA DE SOFTWARE É A ARTE DE EVITAR O APOCALIPSE CORPORATIVO 🔥💾☕

Programar faz software funcionar.

Engenharia de software faz:

  • software sobreviver;
  • empresas continuarem operando;
  • sistemas escalarem;
  • produção não explodir às 2h da manhã.

E no fundo…

o mundo mainframe já sabia disso muito antes da internet virar moda. 💾☕🔥


quinta-feira, 29 de julho de 2021

☕💥 Por que os Fluxogramas Caíram em Desuso?

 

Bellacosa Mainframe e um teoria sobre o desuso dos fluxogramas

☕💥 Por que os Fluxogramas Caíram em Desuso?

Ou como um Padawan COBOL descobriu que o vilão não era o losango, mas a pressa do mercado

A resposta curta é:

Fluxogramas não morreram.
Eles foram substituídos, fragmentados, escondidos dentro de outras ferramentas e vítimas da pressão por velocidade de entrega.

E isso aconteceu por vários motivos.


1. O software ficou monstruosamente grande

Na década de 70, um programa COBOL típico poderia ter:

2.000 linhas
5 arquivos
20 IFs

Um fluxograma cabia em duas folhas.

Já um sistema bancário atual pode possuir:

35.000 linhas COBOL

120 tabelas DB2

50 programas chamados

MQ

CICS

Webservices

Kafka

APIs

z/OS Connect

Imagine desenhar isso.

Seriam dezenas de páginas.

Exemplo:

Login

↓

Menu

↓

Consulta

↓

CICS

↓

COBOL

↓

DB2

↓

MQ

↓

API PIX

↓

Anti-fraude

↓

Core Banking

Vira praticamente uma planta industrial.


2. O Waterfall perdeu força

Antigamente.

Projeto:

Meses de análise

Meses de desenho

Meses documentação

Meses codificação


Hoje:

Sprint

5 dias

10 dias

Deploy

Produção


No Agile.

Muitos pensam:

"Melhor codar do que desenhar."

E aí morre o fluxograma.


3. UML roubou espaço

Anos 90.

Chega UML.

E aparece:

Use Case

Sequence Diagram

Activity Diagram

Class Diagram

State Diagram


Activity Diagram praticamente é.

Fluxograma Premium™.

Exemplo.

Login

Validar

[Conta válida]

Consultar


Mesmo conceito.

Outra roupa.


4. Ferramentas BPM surgiram

Hoje temos:

Camunda

IBM BPM

ServiceNow

Power Automate

Bizagi


Você não desenha.

Você modela.


Exemplo.

Fluxograma clássico.

Solicitar Crédito

↓

Análise

↓

Gerente

↓

Compliance

Camunda.

Já executa.

Workflow vivo.


5. Código passou a ser documentação

Essa é a maior mudança cultural.

Dev moderno diz:

O código é a documentação.

Exemplo.

EVALUATE STATUS

WHEN 1
   PERFORM INSERIR

WHEN 2
   PERFORM ALTERAR

WHEN 3
   PERFORM EXCLUIR

WHEN OTHER
   CONTINUE

END-EVALUATE

Ele acredita que isso basta.


Analista antigo pensa:

"Sim."

"Mas eu levei 15 segundos olhando um desenho."

"Você levou 20 minutos lendo o programa."

😂


6. CASE Tools fracassaram

Anos 80.

Grande promessa.

Desenhar.

Gerar COBOL.


Ferramentas.

IEF

CoolGen

Pacbase

Excelerator

ADW


Promessa:

Desenhe.

Clique.

Compile.


Realidade.

Sistema gerado.

Gigantesco.

Difícil manutenção.


Mercado perdeu confiança.


7. Diagramas ficaram desatualizados

Problema clássico.

Fluxograma.

Lindo.

Aprovado.


Programador faz:

Mais 10 IFs.

Mais 5 EVALUATE.

Mais 2 SELECT.


Ninguém atualiza.

Diagrama.

Versão 2017.

Código.

Versão 2026.


Caos.


8. O Git substituiu parte da documentação

Hoje.

Git.

Pull Request.

Merge.

Comentários.

Exemplo.

PR-4523


Adicionada regra PIX noturno

Muitos usam isso.

Como histórico.


9. A geração atual prefere ferramentas visuais modernas

Antigamente.

Visio

PowerPoint

Papel

Caneta


Hoje.

Miro

Draw.io

LucidChart

Figma


Mesmo conceito.

Nova embalagem.


Mas Mainframe ainda ama fluxogramas

Aqui está a grande ironia.

No mundo Mainframe.

Fluxogramas nunca morreram.

Estão escondidos.


CICS

Mapas BMS

Fluxo PF3

PF5

ENTER


Batch

Arquivos

Balance Line

Merge


DB2

Cursores

Commit

Rollback


VSAM

READ

REWRITE

DELETE


JES2

JOB

STEP

COND

RC


Exemplo real

Imagine receber.

Programa:

FINA0321

42 mil linhas.

Criado.

Autor.

Aposentado.

Documentação.

Zero.


Você abre.

PERFORM P0010

PERFORM P0020

PERFORM P0030

PERFORM P0040

O que faz?

Ninguém sabe.


Você desenha.

START

↓

LER VSAM

↓

CLIENTE EXISTE?


◇



SIM


↓

ATUALIZA DB2


↓

GERA RELATÓRIO




NÃO


↓

INCLUI DB2




↓

END

Em 10 minutos.

Entendeu o programa.


Então por que deveríamos voltar a usar?

Porque ele resolve problemas caros.

Comunicação

Analista

Desenvolvedor

Tester

Usuário

Todos entendem.


Onboarding

Padawan COBOL chega.

Primeiro dia.

Recebe.

Fluxograma.

Aprende.

Em horas.

Sem.

Fluxograma.

Leva semanas.


Auditoria

Banco Central

SOX

PCI

LGPD

Adoram.

Fluxos.


Engenharia Reversa

Legados.

Sem documentação.

Fluxograma é ouro.


Minha visão para o Mainframe moderno

Eu diria que o fluxograma não morreu.

Ele evoluiu.

Hoje ele reaparece como:

  • Activity Diagram

  • BPMN

  • Camunda

  • Miro

  • Draw.io

  • Mermaid

  • Workflow IBM BPM

  • State Machines

  • Fluxos conversacionais

  • Orquestração de APIs

  • Pipelines DevOps

Mas para nós, habitantes do Reino IBM Z, existe uma verdade quase filosófica:

Um fluxograma bem desenhado é a forma mais rápida de transformar 30 mil linhas de COBOL em uma história compreensível.

O compilador entende COBOL. O ser humano entende narrativas. O fluxograma é a ponte entre os dois.

Bellacosa Mainframe ☕💥🚀

 

terça-feira, 26 de janeiro de 2021

☕🔥 25 CODING PATTERNS — O “DNA INVISÍVEL” QUE TODO PROGRAMADOR DE MAINFRAME USA (MESMO SEM PERCEBER)

 

Bellacosa Mainframe apresenta 25 coding patterns

☕🔥 25 CODING PATTERNS — O “DNA INVISÍVEL” QUE TODO PROGRAMADOR DE MAINFRAME USA (MESMO SEM PERCEBER)

Existe uma verdade que separa programadores comuns de engenheiros realmente perigosos:

🔥 os melhores não decoram código…

eles reconhecem padrões.

E isso vale para:

  • Python

  • Java

  • C

  • COBOL

  • Assembler

  • PL/I

  • DB2 SQL

  • CICS

  • z/OS

Porque no fundo…

programação é:

resolver problemas repetitivos de maneiras inteligentes.

E quando analisamos esses Coding Patterns ao estilo Bellacosa Mainframe…

descobrimos algo fascinante:

🔥 o Mainframe já utilizava muitos desses conceitos MUITO antes deles virarem moda em entrevistas LeetCode.


☕🔥 O QUE SÃO CODING PATTERNS?

São modelos mentais reutilizáveis.


☕ Em vez de decorar solução…

você aprende:

COMO PENSAR

☕ Bellacosa Mainframe Analysis™

Coding Pattern é como:

🔥 um PROC JCL mental reutilizável.


☕ Porque problemas diferentes frequentemente compartilham:

  • estrutura

  • lógica

  • fluxo

  • comportamento


☕🔥 1. TWO POINTERS — O “MATCHING” CLÁSSICO DO MAINFRAME

Dois ponteiros percorrendo estruturas simultaneamente.


☕ Muito usado em:

  • merge

  • comparação

  • busca

  • matching


☕ Isso lembra MUITO:

🔥 SORT/MERGE no z/OS.


☕ Exemplo clássico Mainframe

Comparar:

ARQUIVO CLIENTE
VS
ARQUIVO PAGAMENTO

☕ Dois ponteiros avançam conforme chave.


☕ COBOL usa isso há décadas.


☕🔥 2. SLIDING WINDOW — O “BUFFER DINÂMICO”

Padrão extremamente poderoso.


☕ A ideia:

uma janela percorre dados continuamente.


☕ Exemplo moderno

  • stream

  • logs

  • monitoramento

  • analytics


☕ No Mainframe isso lembra:

  • leitura sequencial VSAM

  • análise SMF

  • monitoramento RMF


☕ Excelente para:

🔥 reduzir complexidade absurda.


☕🔥 3. PREFIX SUM — O “ACUMULADOR CORPORATIVO”

Muito usado em:

  • estatísticas

  • relatórios

  • batch processing


☕ Bellacosa Mainframe Analysis™

Isso é praticamente:

🔥 processamento batch financeiro clássico.


☕ Exemplo bancário

Saldo acumulado:

saldo_anterior + movimento

☕ Mainframe vive disso.


☕🔥 4. MERGE INTERVALS — O “CONSOLIDADOR DE JANELAS”

Combinar intervalos sobrepostos.


☕ Aplicações reais

  • agendas

  • reservas

  • processamento temporal

  • janelas batch


☕ Isso lembra muito:

🔥 scheduler corporativo.


☕ JES2/JES3 possuem conceitos semelhantes de coordenação temporal.


☕🔥 5. BINARY SEARCH — O “CATÁLOGO INDEXADO” DO DB2

Busca dividindo espaço pela metade.


☕ O ganho é brutal:

O(log n)

☕ Bellacosa Mainframe Analysis™

É praticamente:

🔥 acesso indexado DB2/VSAM KSDS.


☕ Índices existem exatamente para evitar:

table scan infernal

☕🔥 6. SORTING PATTERNS — O REINO ABSOLUTO DO MAINFRAME

Aqui o Mainframe reina historicamente.


☕ SORT sempre foi:

🔥 uma arte no z/OS.


☕ DFSORT e SyncSort são monstruosamente otimizados.


☕ Grandes bancos literalmente dependem disso.


☕ Exemplo:

  • fechamento bancário

  • consolidação

  • ranking

  • billing


☕🔥 7. FAST & SLOW POINTERS — DETECTANDO CICLOS E ANOMALIAS

Dois ponteiros em velocidades diferentes.


☕ Excelente para:

  • loops

  • listas

  • estruturas cíclicas

  • detecção de comportamento


☕ Isso lembra:

🔥 monitoramento operacional.


☕ Em sistemas críticos:

detectar loop cedo evita desastre.


☕🔥 8. BACKTRACKING — A “BUSCA EXAUSTIVA INTELIGENTE”

Testa possibilidades recursivamente.


☕ Parece caro?

E é.


☕ Mas resolve problemas extremamente complexos.


☕ Exemplo corporativo

  • otimização

  • roteamento

  • IA

  • scheduling


☕🔥 9. DIVIDE AND CONQUER — O “PARALEL SYSPLEX” MENTAL

Dividir problema gigante em partes menores.


☕ Mainframe faz isso há décadas.


☕ Exemplos:

  • Parallel Sysplex

  • workload balancing

  • batch parallelism


☕ Isso escalou o mundo corporativo.


☕🔥 10. LINKED LISTS — O “ENCADENAMENTO” CLÁSSICO

Estruturas ligadas dinamicamente.


☕ Mainframe conhece isso profundamente.

Especialmente em:

  • buffers

  • control blocks

  • cadeias de memória


☕ Assembler vive disso.


☕🔥 11. STACKS & QUEUES — O “CICS” DA LÓGICA

Agora entramos numa das estruturas mais importantes da computação.


☕ Queue

FIFO.


☕ Stack

LIFO.


☕ Isso aparece em TODO lugar.


☕ Bellacosa Mainframe Analysis™

CICS trabalha pesado com conceitos de filas e pilhas operacionais.


☕ MQ então?

🔥 literalmente vive disso.


☕🔥 12. MONOTONIC STACK — O “OTIMIZADOR SILENCIOSO”

Pattern avançado.


☕ Excelente para:

  • análise sequencial

  • máximos/mínimos

  • otimização temporal


☕ Muito útil em:

  • mercado financeiro

  • séries temporais

  • observabilidade


☕🔥 13. EXPRESSION EVALUATION — O “COMPILADOR INTERNO”

Avaliação de expressões.


☕ Compiladores COBOL fazem isso constantemente.


☕ Exemplo:

COMPUTE TOTAL = A + B * C

☕ Existe parsing por trás.


☕🔥 14. STRING MANIPULATION — O IMPÉRIO DO COBOL

Mainframe ama texto estruturado.


☕ Exemplos:

  • EBCDIC

  • layouts

  • copybooks

  • parsing bancário


☕ COBOL virou mestre nisso.


☕🔥 15. HASHMAPS — O “CATÁLOGO RACF” MODERNO

Busca rápida por chave.


☕ Isso lembra:

  • tabelas de controle

  • catálogos

  • cache

  • diretórios RACF


☕ Extremamente eficiente.


☕🔥 16. TREES & BST — A HIERARQUIA CORPORATIVA

Estruturas hierárquicas.


☕ Mainframe usa isso em:

  • catálogos

  • RACF

  • hierarquias de storage

  • índices


☕🔥 17. PATH SUM — O “FLUXO TRANSACIONAL”

Analisar caminhos possíveis.


☕ Isso aparece em:

  • antifraude

  • IA

  • workflows

  • análise financeira


☕🔥 18. HEAPS — O “TOP N” CORPORATIVO

Excelente para encontrar:

  • maiores

  • menores

  • prioridades


☕ Exemplo bancário

🔥 TOP clientes por volume.


☕🔥 19. TOP K FREQUENT — O “RMF ANALYTICS”

Análise estatística frequente.


☕ Muito usado em:

  • observabilidade

  • logs

  • IA

  • SIEM


☕🔥 20. MERGE K SORTED LISTS — O “INTEGRADOR CORPORATIVO”

Combinar múltiplas listas ordenadas.


☕ Isso é MUITO Mainframe.


☕ Exemplo:

  • consolidar filiais

  • processamento distribuído

  • múltiplos datasets


☕🔥 21. DYNAMIC PROGRAMMING — O “OTIMIZADOR MATEMÁTICO”

Agora entramos na elite.


☕ DP resolve problemas reutilizando resultados anteriores.


☕ Isso reduz explosão computacional.


☕ Bellacosa Mainframe Analysis™

DP lembra:

🔥 cache inteligente corporativo.


☕🔥 22. GREEDY — O “DECIDA AGORA”

Escolha local imediata.


☕ Funciona muito bem em:

  • scheduling

  • roteamento

  • alocação


☕🔥 23. BFS & DFS — O “NAVEGADOR” DAS ESTRUTURAS

Traversal em grafos.


☕ Muito usado em:

  • redes

  • IA

  • dependências

  • análise de infraestrutura


☕🔥 24. GRAPH ALGORITHMS — O “MAPA DO MUNDO DIGITAL”

A internet inteira é um grafo.


☕ Sistemas corporativos modernos também.


☕ Isso impacta:

  • redes

  • supply chain

  • fraudes

  • relacionamentos


☕🔥 25. DESIGN PROBLEMS — O VERDADEIRO NÍVEL SENIOR

Aqui termina o tutorial…

e começa engenharia real.


☕ Porque agora o problema deixa de ser:

como codar

e passa a ser:

como arquitetar

☕🔥 O MAINFRAME SEMPRE FOI “PATTERN-DRIVEN”

Essa talvez seja a maior conclusão.


☕ Mainframe nunca foi apenas linguagem.

Sempre foi:

  • arquitetura

  • repetibilidade

  • previsibilidade

  • padrões operacionais


☕ Por isso sistemas z/OS sobrevivem décadas.


☕🔥 CONCLUSÃO — PROGRAMAR NÃO É ESCREVER CÓDIGO… É RECONHECER PADRÕES

Os melhores engenheiros não decoram respostas.

Eles identificam:

  • estruturas

  • comportamentos

  • padrões invisíveis

E talvez essa seja a maior ironia da computação moderna:

enquanto muita gente acha que esses Coding Patterns nasceram com entrevistas FAANG…

🔥 o Mainframe já resolvia muitos desses problemas silenciosamente há mais de 40 anos.