Translate

quinta-feira, 5 de maio de 2022

DSA para Programadores COBOL Padawan

 

Bellacosa Mainframe apresenta DSA para programadores

☕ Um Café no Bellacosa Mainframe

DSA para Programadores COBOL Padawan

Você Não Precisa Decorar 500 Problemas do LeetCode. Precisa Aprender a Reconhecer Padrões.

"Todo programador iniciante acredita que grandes desenvolvedores conhecem milhares de algoritmos. Depois de alguns anos de experiência, descobre que eles conhecem apenas algumas dezenas de padrões... e sabem exatamente quando utilizá-los."


Existe uma pergunta que aparece frequentemente entre jovens programadores COBOL que desejam migrar para o universo moderno da Engenharia de Software:

"Preciso aprender LeetCode para conseguir boas oportunidades?"

Minha resposta normalmente surpreende.

Não.

Você precisa aprender como pensar.

LeetCode é uma academia.

DSA (Data Structures and Algorithms) é aprender anatomia.

Um fisiculturista pode decorar todos os exercícios da academia.

Um médico entende músculos, ossos, tendões e articulações.

Quem entende anatomia consegue criar novos exercícios.

Quem entende DSA consegue resolver problemas que nunca viu antes.

Essa é exatamente a diferença entre decorar soluções e compreender padrões.

E essa diferença vale tanto para um desenvolvedor Java quanto para um veterano de COBOL com trinta anos de experiência em sistemas bancários.


O Programador COBOL Já Conhece DSA (Mesmo Sem Saber)

Essa talvez seja a maior surpresa.

Muitos profissionais de Mainframe acreditam que DSA é uma invenção recente.

Não é.

Na verdade, você trabalha com isso há décadas.

Veja alguns exemplos.

Quando você faz uma leitura sequencial de um arquivo VSAM...

...está explorando uma estrutura de dados.

Quando faz um SEARCH ALL...

...está utilizando Binary Search.

Quando usa tabelas OCCURS...

...está manipulando Arrays.

Quando organiza registros por chave...

...está trabalhando com algoritmos de ordenação.

Quando utiliza um índice alternativo no VSAM...

...está explorando conceitos semelhantes às árvores de busca.

O que mudou foi apenas a nomenclatura.


O Grande Erro de Quem Estuda LeetCode

Imagine que alguém queira aprender COBOL.

Então começa resolvendo programas aleatórios.

Um dia faz folha de pagamento.

No outro faz cálculo de imposto.

Depois processamento de boletos.

Na semana seguinte faz conciliação bancária.

Será que ele aprenderá COBOL?

Provavelmente não.

Porque cada programa utiliza conceitos diferentes.

Com DSA acontece exatamente o mesmo.

Resolver problemas aleatórios é uma forma extremamente lenta de aprender.

Muito melhor é dominar um padrão de cada vez.

Quando você aprende Sliding Window...

...de repente resolve cinquenta problemas diferentes.

Quando entende HashMap...

...mais cinquenta deixam de parecer difíceis.

É um efeito multiplicador.


Pensando Como um Analista de Sistemas

Um analista experiente nunca começa programando.

Ele começa fazendo perguntas.

Da mesma forma, um bom solucionador de problemas faz um diagnóstico antes de escrever uma linha de código.

Seu raciocínio deveria seguir algo parecido com isto:

Que tipo de dado eu possuo?

↓

Qual estrutura representa melhor esses dados?

↓

Existe um padrão conhecido?

↓

Qual algoritmo resolve isso?

↓

Quanto custa em tempo?

↓

Quanto custa em memória?

Perceba que programação é apenas o último passo.

O verdadeiro trabalho acontece antes.


Arrays: O Arquivo Sequencial da Programação

Se existe uma estrutura que todo programador COBOL domina intuitivamente, é o Array.

Em COBOL:

01 CLIENTES.
   05 CLIENTE OCCURS 1000 TIMES.
      10 NOME PIC X(30).

Isso é um Array.

Na maioria das linguagens modernas:

clientes[1000]

É exatamente o mesmo conceito.

O interessante é que vários algoritmos famosos trabalham exclusivamente sobre Arrays.

Entre eles:

  • Prefix Sum

  • Sliding Window

  • Kadane

  • Binary Search

Cada um resolve um tipo específico de problema.


Prefix Sum: Quando Somar Milhões de Registros Precisa Ser Rápido

Imagine um banco.

Existe um histórico diário de saldo.

O gerente pergunta:

"Qual foi a movimentação entre os dias 500 e 1800?"

A solução ingênua seria somar tudo novamente.

Mas isso custa:

O(n)

Prefix Sum cria uma tabela acumulada.

Depois disso qualquer consulta vira praticamente instantânea.

Essa ideia aparece em:

  • Data Warehouses

  • BI

  • Analytics

  • Processamento Financeiro

  • Mainframe Batch

Embora muitos profissionais não percebam, diversas rotinas históricas de fechamento utilizam exatamente esse princípio.


Sliding Window: Não Recalcule o Que Você Já Sabe

Imagine um programa que precisa descobrir os três maiores dias consecutivos de vendas.

Um iniciante faz isto:

Soma dia 1

Soma dia 2

Soma dia 3

Depois recomeça tudo.

Um desenvolvedor experiente pensa diferente.

"Já conheço dois dos três valores."

Então remove apenas o elemento que saiu da janela e adiciona o próximo.

É como acompanhar uma esteira rolante.

Você não desmonta a esteira inteira para observar o próximo objeto.

Apenas acompanha seu movimento.

Esse padrão reduz muitos problemas de O(n²) para O(n).


Binary Search: Muito Além de Procurar

Todo mundo conhece Binary Search como uma busca em listas ordenadas.

Mas existe um detalhe interessante.

Hoje ele é muito mais utilizado para responder perguntas como:

"Qual é o menor valor possível?"

"Qual é a menor capacidade de armazenamento?"

"Qual é a menor velocidade aceitável?"

Sempre que existe uma resposta monotônica, Binary Search pode aparecer.

É por isso que ele continua sendo um dos algoritmos preferidos em entrevistas.


Strings: O Mundo dos Textos

Mainframes trabalham intensamente com texto.

CPF.

Nome.

Código de Agência.

Número da Conta.

Mensagens.

Arquivos CNAB.

Tudo isso são Strings.

Existem alguns padrões clássicos.

Two Pointers

Muito útil para:

  • remover espaços

  • comparar extremos

  • detectar palíndromos

É simples.

Dois ponteiros caminham em velocidades diferentes ou em sentidos opostos.


KMP

Imagine procurar uma palavra dentro de um documento de centenas de megabytes.

Sem estratégia...

...você volta inúmeras vezes ao início.

KMP evita repetir trabalho.

Ele aprende durante a própria busca.

É um excelente exemplo de algoritmo inteligente.


HashMap: A Memória Instantânea

HashMap talvez seja a estrutura que mais transforma problemas difíceis em problemas simples.

Imagine a pergunta:

"Este CPF já apareceu?"

Sem HashMap:

Procure tudo novamente.

Com HashMap:

Consulte diretamente.

É praticamente um índice em memória.

Quem trabalhou com índices DB2 entende rapidamente essa ideia.

Não percorremos a tabela inteira.

Consultamos uma estrutura otimizada.


Pilhas (Stacks): A Forma Natural de Resolver Alguns Problemas

Uma Stack segue a regra:

Last In

First Out

Ou seja:

O último que entra é o primeiro que sai.

Pense numa pilha de JCLs impressos.

O último colocado em cima será retirado primeiro.

Stacks aparecem em:

  • compiladores

  • interpretadores

  • validação de parênteses

  • chamadas de funções

  • expressões matemáticas

Sempre que existir necessidade de "voltar" ao estado anterior, existe uma boa chance de uma Stack resolver o problema.


Filas: O Modelo Natural do Batch

Se existe uma estrutura familiar ao mundo Mainframe é a Queue.

Os Jobs entram.

Esperam.

São executados.

Saem.

JES2 e JES3 vivem exatamente desse conceito.

Fila.

Primeiro que entra.

Primeiro que sai.

O mesmo vale para sistemas de mensagens como IBM MQ.


Linked Lists: Quando a Ordem Importa Mais que a Posição

Em um Array sabemos exatamente onde cada elemento está.

Em uma Linked List sabemos apenas quem é o próximo.

Isso muda completamente a forma de navegar pelos dados.

Um algoritmo famoso utiliza dois ponteiros.

Um anda normalmente.

Outro corre duas posições.

É o famoso algoritmo da Tartaruga e da Lebre.

Ele consegue descobrir ciclos sem utilizar memória adicional.

Uma verdadeira obra de elegância.


Árvores: Muito Mais Presentes do Que Você Imagina

Quando pensamos em árvores normalmente lembramos da faculdade.

Mas elas aparecem diariamente.

Diretórios.

Menus.

JSON.

XML.

LDAP.

Catálogos.

Organogramas.

Até um Plano de Contas contábil é uma árvore.

Quando aprendemos percursos como:

  • Preorder

  • Inorder

  • Postorder

  • Level Order

Estamos aprendendo maneiras diferentes de visitar essa hierarquia.


Grafos: O Modelo Universal

Existe uma frase famosa na Ciência da Computação:

"Tudo pode ser modelado como um grafo."

Internet.

Rotas.

Redes sociais.

Dependências.

Fluxos.

Microserviços.

Tudo isso pode ser representado por nós ligados entre si.

Os principais algoritmos são:

  • BFS

  • DFS

  • Dijkstra

  • Topological Sort

Se você entende esses quatro...

...já resolve uma enorme quantidade de problemas reais.


Programação Dinâmica: A Arte de Não Fazer o Mesmo Trabalho Duas Vezes

Esse talvez seja o assunto que mais assusta iniciantes.

Mas a ideia é incrivelmente simples.

Imagine calcular Fibonacci.

Sem memória:

Fib(40)

↓

Fib(39)

↓

Fib(38)

↓

...

Os mesmos cálculos aparecem centenas de milhares de vezes.

Programação Dinâmica guarda os resultados.

Quando precisar novamente...

...apenas consulta.

No Mainframe fazemos isso frequentemente.

Tabelas em memória.

Caches.

Arquivos temporários.

Tudo isso segue exatamente essa filosofia.


Greedy: A Melhor Decisão Agora

Alguns problemas permitem escolher sempre a melhor opção local.

Quando isso acontece...

...Greedy produz soluções extremamente rápidas.

Mas cuidado.

Nem todo problema aceita essa abordagem.

Saber reconhecer quando Greedy funciona é tão importante quanto conhecer o algoritmo.


Manipulação de Bits: O Poder Escondido do Hardware

Bits ainda são fundamentais.

Operações como:

AND

OR

XOR

SHIFT

São extremamente rápidas.

Mainframes utilizam instruções de hardware especializadas justamente para explorar esse tipo de operação.

Muitos algoritmos de criptografia, compressão e otimização dependem delas.


Estruturas Avançadas

Quando os problemas ficam maiores surgem novas ferramentas.

Segment Trees.

Fenwick Trees.

Sweep Line.

Meet in the Middle.

Essas técnicas aparecem menos no dia a dia, mas são muito comuns em competições de programação e entrevistas de empresas de tecnologia.

Elas demonstram que um mesmo problema pode ser atacado por diferentes estratégias, cada uma adequada a um cenário específico.


O Que Realmente Avaliam em uma Entrevista Técnica?

Muitos imaginam que a empresa quer saber se você decorou o algoritmo de Dijkstra.

Na realidade ela observa outra coisa.

Seu raciocínio.

Ela quer entender se você consegue:

  • Identificar a estrutura de dados correta.

  • Escolher o algoritmo adequado.

  • Explicar por que essa escolha é eficiente.

  • Comparar alternativas.

  • Analisar complexidade de tempo e memória.

  • Escrever um código claro e correto.

A implementação é importante, mas a capacidade de justificar as decisões costuma pesar ainda mais.


O Caminho de Estudos para um COBOL Padawan

Se eu estivesse orientando um jovem programador COBOL hoje, seguiria esta ordem:

  1. Arrays e Strings.

  2. Hash Maps.

  3. Stacks e Queues.

  4. Linked Lists.

  5. Árvores.

  6. Grafos.

  7. Recursão.

  8. Heaps.

  9. Programação Dinâmica.

  10. Técnicas avançadas.

Depois disso, sim, começaria a resolver problemas no LeetCode, HackerRank ou plataformas semelhantes.

Porque, nesse momento, cada exercício deixaria de ser um enigma e passaria a ser um reconhecimento de padrões.


Conclusão: O Verdadeiro Poder Está na Forma de Pensar

Existe um mito de que grandes programadores possuem uma memória extraordinária e conhecem milhares de algoritmos. A realidade é bem diferente. Eles desenvolveram um repertório de padrões e sabem identificar rapidamente qual deles se aplica a um problema.

O programador COBOL possui uma vantagem importante nessa jornada. Décadas trabalhando com arquivos sequenciais, VSAM, DB2, índices, tabelas OCCURS, processamento batch e transações CICS desenvolveram uma disciplina de raciocínio que continua extremamente valiosa. O desafio não é abandonar esse conhecimento, mas traduzi-lo para a linguagem moderna das Estruturas de Dados e Algoritmos.

Quando você perceber que um SEARCH ALL é uma busca binária, que uma tabela OCCURS é um array, que uma fila JES2 segue o princípio de uma queue, ou que um índice DB2 representa uma estrutura otimizada para acesso eficiente, verá que DSA não é um universo distante do Mainframe. É a formalização de conceitos que sempre estiveram presentes.

No fim das contas, programar bem nunca foi sobre decorar centenas de soluções. Sempre foi sobre observar, modelar e resolver problemas da forma mais elegante possível. É essa mentalidade que transforma um Padawan COBOL em um verdadeiro Arquiteto de Software, capaz de navegar tanto pelos sistemas legados que movem bancos e governos quanto pelas tecnologias modernas que definem o futuro da computação.


quarta-feira, 4 de maio de 2022

Engenharia de Dados para um Programador COBOL Padawan

 

Bellacosa Mainframe e a engenharia de dados

☕ Um Café no Bellacosa Mainframe

Engenharia de Dados para um Programador COBOL Padawan

Você Não Está Mudando de Profissão. Está Descobrindo que Sempre Trabalhou com Dados.

"Toda geração acredita que inventou a Engenharia de Dados. Quem passou décadas desenvolvendo em COBOL sabe que mover, transformar, validar e proteger dados sempre foi o coração do Mainframe."


Se existe uma palavra que domina o mercado de tecnologia atualmente, ela é Dados.

Data Engineer.

Data Lake.

Data Warehouse.

Data Mesh.

Data Fabric.

Big Data.

Analytics.

Machine Learning.

Inteligência Artificial.

Para quem acompanha as vagas do LinkedIn, parece que surgiu uma profissão completamente nova.

Mas será que surgiu mesmo?

Se você é um Programador COBOL Padawan, talvez esteja olhando para esse universo pensando:

"Isso não é para mim."

Ou talvez pior.

"Vou precisar esquecer tudo o que aprendi nos últimos anos."

Nada poderia estar mais distante da realidade.

Na verdade, existe uma notícia excelente.

Boa parte da Engenharia de Dados nasceu exatamente nos ambientes onde o COBOL reina há mais de sessenta anos.

Hoje vamos tomar um café e descobrir por que um programador COBOL possui muito mais vantagens para aprender Engenharia de Dados do que imagina.


O maior equívoco sobre Engenharia de Dados

Quando alguém fala "Data Engineer", muitas pessoas imaginam imediatamente alguém escrevendo Python.

Outros imaginam Spark.

Outros imaginam nuvem.

Outros imaginam Inteligência Artificial.

Tudo isso faz parte da profissão.

Mas nada disso explica sua essência.

A verdadeira Engenharia de Dados pode ser resumida em uma única pergunta:

Como garantir que a informação certa chegue ao lugar certo, no momento certo, com qualidade e segurança?

Perceba.

Não estamos falando de linguagem.

Não estamos falando de banco de dados.

Não estamos falando de cloud.

Estamos falando de engenharia.

E engenharia sempre existiu.


O COBOL sempre foi uma linguagem de dados

Vamos imaginar um programa extremamente simples.

READ CLIENTE

IF STATUS = "A"

   COMPUTE LIMITE = SALARIO * 3

   WRITE CLIENTE-APROVADO

END-IF

O que esse programa faz?

Não desenha telas.

Não cria animações.

Não faz gráficos.

Ele faz algo muito mais importante.

Transforma dados.

Exatamente o trabalho de um pipeline moderno.

Hoje essa transformação poderia estar escrita em:

Python.

Spark.

SQL.

Scala.

Mas o conceito permanece exatamente o mesmo.

Entrada.

Transformação.

Saída.


Um pipeline moderno não é muito diferente de um Job Batch

Vamos comparar.

No Mainframe

Arquivo VSAM

↓

Programa COBOL

↓

SORT

↓

IDCAMS

↓

DB2

↓

Relatório

Agora veja um ambiente moderno.

API

↓

Python

↓

Spark

↓

Data Lake

↓

Data Warehouse

↓

Dashboard

Mudaram as ferramentas.

O fluxo continua praticamente idêntico.

Receber.

Transformar.

Validar.

Persistir.

Consumir.

É por isso que muitos profissionais de Mainframe aprendem Engenharia de Dados com enorme facilidade.

Eles já entendem o processo.

Só precisam aprender novos nomes.


Nível 1 — SQL e Linux

Toda jornada começa aqui.

Algumas pessoas desprezam SQL.

Grave isto.

Quem domina SQL domina dados.

SQL continua sendo a língua universal da informação.

Não importa se você usa:

Oracle

SQL Server

PostgreSQL

MySQL

Db2

Snowflake

BigQuery

Databricks

Spark SQL

Todos conversam através de SQL.


No Linux acontece algo parecido.

Quem trabalha com z/OS talvez ache curioso.

Mas muitos comandos Linux lembram bastante utilitários clássicos do Mainframe.

Por exemplo.

Localizar informações.

Linux

grep CPF clientes.txt

Mainframe

SORT INCLUDE

Contar registros.

Linux

wc -l arquivo.txt

Mainframe

ICETOOL COUNT.

Filtrar.

Ordenar.

Mesclar.

Tudo isso já fazia parte do universo Batch décadas antes do Big Data existir.


Nível 2 — Programação

Aqui normalmente aparece Python.

Mas poderia ser Java.

Scala.

Go.

Até mesmo COBOL.

Sim.

COBOL continua sendo usado em pipelines modernos.

Principalmente quando o dado nasce no Mainframe.

O objetivo agora não é consultar dados.

É automatizar processos.

Imagine.

Você precisa:

baixar arquivos

consumir APIs

descompactar

validar

gerar logs

carregar banco

enviar e-mail

Tudo isso exige programação.

Não importa a linguagem.

O importante é pensar em automação.


O primeiro choque: APIs

Muitos programadores COBOL perguntam:

"O que é uma API?"

A resposta mais simples é:

Uma API é um programa conversando com outro programa.

Só isso.

Você já fazia isso.

CICS fazia isso.

MQ fazia isso.

IMS fazia isso.

A diferença é que hoje a conversa normalmente acontece usando:

HTTP

JSON

REST

GraphQL

gRPC

O conceito continua exatamente igual.


Nível 3 — Spark

Aqui começa a diversão.

Imagine que seu programa COBOL processa:

5 milhões de registros.

Funciona muito bem.

Agora imagine:

5 bilhões.

Não existe CPU suficiente.

Surge então o processamento distribuído.

Em vez de uma máquina.

Cem máquinas.

Ou mil.

Cada uma processando uma pequena parte.

Esse é o Spark.

Ele divide o problema.

Depois reúne os resultados.

É como um enorme SORT distribuído.


Spark não substitui SQL

Esse é outro mito.

Na prática.

Boa parte do Spark moderno utiliza SQL.

Ou Spark SQL.

Ou DataFrames.

Ou seja.

O conhecimento adquirido anteriormente continua sendo utilizado.

Nada é perdido.

Tudo evolui.


Nível 4 — Cloud

Aqui muita gente se assusta.

Parece outro universo.

Na verdade, não é.

Cloud é apenas um novo datacenter.

Só que alugado.

Imagine um CPD gigantesco.

Você liga um servidor.

Usa.

Desliga.

Paga apenas pelo tempo utilizado.

É isso.

Claro.

Existem centenas de serviços.

Mas a ideia continua simples.

Infraestrutura sob demanda.


O que muda para o Engenheiro de Dados?

Antes.

Você tinha um servidor.

Agora possui dezenas.

Centenas.

Tudo automatizado.

Surge então uma nova preocupação.

Escalabilidade.

Monitoramento.

Custos.

Segurança.


Nível 5 — Inteligência Artificial

Chegamos ao assunto da moda.

Todo mundo quer trabalhar com IA.

Mas poucos entendem uma verdade simples.

A IA depende completamente da Engenharia de Dados.

Imagine um modelo treinado com:

CPFs inválidos.

Datas erradas.

Valores duplicados.

Clientes repetidos.

O resultado será desastroso.

Existe uma frase muito antiga.

Garbage In.

Garbage Out.

Entrou lixo.

Sai lixo.


Por isso.

Antes da Inteligência Artificial.

Existe um profissional invisível.

O Engenheiro de Dados.

Ele garante que os dados sejam:

limpos

organizados

consistentes

históricos

auditáveis

confiáveis

Sem isso.

Nenhum ChatGPT.

Nenhum Copilot.

Nenhum modelo funciona adequadamente.


Mas existe algo ainda mais importante...

A imagem que inspirou este artigo mostra uma sequência de tecnologias.

Ela está correta.

Mas incompleta.

Porque existem conhecimentos que nunca saem de moda.


Modelagem de Dados

Se existe um superpoder do programador COBOL, é este.

Quem desenvolveu sistemas bancários conhece:

Cliente.

Conta.

Agência.

Contrato.

Movimentação.

Parcela.

Histórico.

Relacionamentos.

Tudo isso é modelagem.

Sem um bom modelo.

Nem Spark salva.

Nem IA resolve.

Nem Cloud ajuda.


Qualidade dos Dados

Imagine um cadastro onde o mesmo cliente aparece quinze vezes.

Ou um saldo negativo impossível.

Ou datas inexistentes.

Quem resolve?

Não é a IA.

É engenharia.

Validação.

Regras.

Auditoria.

Consistência.

Exatamente como fazemos há décadas em sistemas críticos.


Observabilidade

No Mainframe existe SDSF.

SMF.

RMF.

Logs.

Mensagens JES.

Abends.

Tudo isso existe para observar o ambiente.

Hoje fazemos exatamente a mesma coisa.

Só mudaram as ferramentas.

Monitoramos:

pipelines

latência

falhas

volumes

distribuição

anomalias

A filosofia continua igual.

Nunca confiar.

Sempre medir.


Governança

Poucos assuntos cresceram tanto.

Hoje toda empresa pergunta:

Quem alterou esse dado?

Quem acessou?

Quem apagou?

Quando?

Por quê?

No Mainframe isso sempre foi levado muito a sério.

RACF.

Auditoria.

Perfis.

Permissões.

Hoje apenas ampliamos esse conceito.


Versionamento

Você conhece Endevor?

ISPW?

ChangeMan?

Parabéns.

Você já trabalhou com gestão de versões antes mesmo do Git existir.

Hoje usamos GitHub.

GitLab.

Bitbucket.

Mas o princípio permanece.

Nunca alterar produção diretamente.

Sempre controlar mudanças.


DataOps

Assim como surgiu DevOps.

Hoje existe DataOps.

Automatizar testes.

Validar qualidade.

Executar pipelines.

Fazer deploy.

Documentar.

Monitorar.

Tudo automaticamente.

Isso reduz erros humanos.

Aumenta confiabilidade.

E acelera entregas.


O conhecimento mais importante continua sendo o negócio

Imagine dois profissionais.

O primeiro conhece:

Spark.

Kafka.

Snowflake.

Airflow.

Terraform.

Kubernetes.

Python.

Databricks.

O segundo conhece apenas SQL.

Mas entende perfeitamente:

crédito

seguros

contabilidade

tributação

previdência

Qual deles gera mais valor?

Na maioria das empresas.

O segundo.

Porque tecnologia resolve problemas.

Mas somente quem entende o negócio consegue resolver o problema correto.


O programador COBOL já possui metade da jornada concluída

Esse talvez seja o maior segredo da Engenharia de Dados.

Profissionais de Mainframe normalmente já dominam:

✔ Processamento Batch

✔ Integridade transacional

✔ Bancos relacionais

✔ Modelagem

✔ Performance

✔ Grandes volumes

✔ Segurança

✔ Auditoria

✔ Sistemas críticos

✔ Dados corporativos

O que falta aprender?

As ferramentas modernas.

E ferramentas podem ser aprendidas.

Princípios levam anos para serem construídos.


A verdadeira evolução

Muitos imaginam a carreira assim.

COBOL

↓

Python

↓

Spark

↓

Cloud

↓

IA

Na realidade.

Ela é muito mais parecida com isto.

                 Negócio
                     │
      ┌──────────────┼──────────────┐
      │              │              │
 Modelagem     Engenharia      Arquitetura
      │              │              │
      ├──────────────┼──────────────┤
      │              │              │
    SQL         Programação      Segurança
      │              │              │
      ├──────────────┼──────────────┤
      │              │              │
 Spark        Cloud         Observabilidade
      │              │              │
      └──────────────┼──────────────┘
                     │
                 DataOps
                     │
               Inteligência Artificial

Observe que a IA aparece quase no final.

Isso não é coincidência.

Ela depende de tudo o que veio antes.


Um café antes de voltar ao código...

Existe uma frase muito comum nas redes sociais:

"Aprenda IA."

Eu faria uma pequena correção.

Aprenda Engenharia.

Porque tecnologias mudam.

Spark um dia será substituído.

Novos bancos aparecerão.

Novas linguagens surgirão.

Novos frameworks nascerão.

Assim como Clipper deu lugar a outras soluções, e como muitas ferramentas de ETL evoluíram ao longo das décadas, o ecossistema continuará mudando.

Mas alguns princípios permanecem praticamente imutáveis desde os primeiros sistemas corporativos:

  • Dados precisam ser confiáveis.

  • Processos precisam ser previsíveis.

  • Sistemas precisam ser auditáveis.

  • Arquiteturas precisam ser sustentáveis.

  • Segurança nunca é opcional.

  • O negócio deve orientar a tecnologia, e não o contrário.

É exatamente por isso que um Programador COBOL não está começando do zero ao olhar para a Engenharia de Dados. Pelo contrário: ele já carrega uma bagagem construída em ambientes onde disponibilidade, consistência e integridade sempre foram requisitos inegociáveis.

No fim das contas, a maior transformação não é aprender Python, Spark ou Cloud. É perceber que o trabalho sempre foi o mesmo: transformar dados em informação confiável para apoiar decisões.

As ferramentas evoluem.

Os nomes mudam.

As interfaces ficam mais modernas.

Mas a boa engenharia continua sendo reconhecida pelos mesmos atributos de décadas atrás: simplicidade, clareza, desempenho, confiabilidade e foco no problema de negócio.

Então, Padawan, da próxima vez que ouvir alguém dizer que Engenharia de Dados é "uma profissão completamente nova", sorria, tome mais um gole do seu café e lembre-se: os mainframes já movimentavam bilhões de registros por dia quando muitos dos conceitos modernos ainda nem tinham nome.

terça-feira, 3 de maio de 2022

Genjitsu Shugi Yuusha no Oukoku Saikenki – Segunda Temporada Quando Reconstruir um Reino é Apenas o Primeiro Passo. Agora é Hora de Mantê-lo Funcionando.

 

Bellacosa Mainframe e a segunda temporada de genitsu shugi yuusga

☕ Um Café no Bellacosa Mainframe

Genjitsu Shugi Yuusha no Oukoku Saikenki – Segunda Temporada

Quando Reconstruir um Reino é Apenas o Primeiro Passo. Agora é Hora de Mantê-lo Funcionando.

"Construir um sistema é difícil. Mantê-lo disponível 24 horas por dia, durante décadas, é o verdadeiro desafio. A segunda temporada mostra exatamente essa diferença."


Ficha Técnica

ItemInformação
Título Original現実主義勇者の王国再建記 第二部 (Genjitsu Shugi Yuusha no Oukoku Saikenki Daini-bu)
Título InternacionalHow a Realist Hero Rebuilt the Kingdom – Part 2
Obra OriginalLight Novel de Dojyomaru
IlustraçõesFuyuyuki
EstúdioJ.C.Staff
DiretorTakashi Watanabe
ExibiçãoJaneiro a abril de 2022
Episódios13
Total da série26 episódios
DuraçãoAproximadamente 24 minutos por episódio
GêneroIsekai, Fantasia, Política, Administração, Romance, Estratégia, Aventura
Classificação Indicativa14 anos

Introdução

A primeira temporada mostrou como recuperar um reino em crise.

A segunda responde uma pergunta muito mais interessante:

Como manter um governo funcionando quando todos esperam resultados?

Agora Souma não é mais um administrador improvisado.

Ele é oficialmente o rei.

Isso muda tudo.

Os problemas deixam de ser internos.

Agora surgem conflitos internacionais, diplomacia, espionagem, alianças militares e equilíbrio econômico entre nações.

É exatamente a diferença entre implantar um novo sistema e administrar um ambiente IBM Z em produção.


Sinopse

Após estabilizar Elfrieden, Kazuya Souma precisa consolidar suas reformas enquanto enfrenta ameaças externas, negociações diplomáticas e disputas entre reinos. Ao mesmo tempo, fortalece alianças, amplia sua equipe e conduz mudanças capazes de transformar o equilíbrio político do continente.


Resumo

A segunda temporada amplia o mundo.

Enquanto a primeira era quase totalmente administrativa, esta passa a explorar:

  • relações internacionais;

  • economia continental;

  • inteligência militar;

  • sucessão política;

  • comércio;

  • casamentos diplomáticos;

  • alianças estratégicas;

  • expansão territorial.

O reino cresce.

E seus problemas também.


A História

Governar nunca foi apenas administrar dinheiro.

É administrar pessoas.

Na segunda temporada aparecem desafios como:

  • negociar sem demonstrar fraqueza;

  • evitar guerras desnecessárias;

  • proteger fronteiras;

  • integrar novos territórios;

  • administrar culturas diferentes;

  • preparar sucessores.

O foco deixa de ser "salvar um reino".

Agora é construir uma potência estável.


O Estúdio J.C.Staff

A J.C.Staff manteve a identidade da primeira temporada.

Não houve mudança significativa no estilo artístico.

O ritmo continua baseado em:

  • diálogos;

  • planejamento;

  • política;

  • desenvolvimento de personagens.

As batalhas continuam existindo.

Mas nunca são o centro da narrativa.


Os Personagens

Kazuya Souma

Evolui de administrador para estadista.

Aprende que liderar significa equilibrar interesses conflitantes.


Liscia Elfrieden

Assume papel muito mais ativo.

Participa das decisões de governo.

Mostra crescimento político.


Hakuya Kwonmin

Continua sendo o cérebro estratégico.

Praticamente um Primeiro-Ministro.

Sua capacidade analítica cresce ainda mais.


Aisha Udgard

Permanece como principal força militar.

Sua lealdade representa estabilidade institucional.


Juna Doma

Sua influência diplomática aumenta.

Atua em inteligência e comunicação.


Roroa Amidonia

Rouba diversas cenas.

Sua visão econômica demonstra que mercados podem ser tão importantes quanto exércitos.


Novos líderes e diplomatas

A segunda temporada amplia o elenco.

Cada governante representa um modelo diferente de liderança.


O Grande Diferencial

Na maioria dos isekais:

vencer o inimigo encerra a história.

Aqui...

É apenas o começo.

O foco está em:

  • consolidar instituições;

  • fortalecer economia;

  • administrar alianças;

  • evitar guerras;

  • desenvolver infraestrutura;

  • manter estabilidade.

É uma abordagem extremamente rara.


As Aventuras

Embora existam conflitos militares, o verdadeiro desafio acontece nas mesas de negociação.

Souma enfrenta:

  • conflitos diplomáticos;

  • casamentos políticos;

  • rebeliões;

  • anexações;

  • espionagem;

  • comércio internacional;

  • reformas administrativas;

  • planejamento militar.

Cada decisão produz consequências de longo prazo.


Temática

A segunda temporada trata principalmente de:

Governança

Não basta conquistar.

É preciso administrar.


Liderança

Grandes líderes desenvolvem novos líderes.


Economia

Dinheiro movimenta impérios.


Diplomacia

Uma guerra evitada vale mais que uma guerra vencida.


Planejamento

Toda decisão produz efeitos futuros.


Instituições

Pessoas passam.

As instituições permanecem.


As Mensagens Ocultas

1. Bons líderes formam sucessores

O protagonista distribui responsabilidades.

Não centraliza poder.


2. Especialistas fazem diferença

Cada ministro domina sua área.

Nenhum tenta saber tudo.


3. Informação reduz riscos

Espionagem.

Inteligência.

Análise.

Tudo baseado em dados.


4. Prosperidade reduz conflitos

Quanto melhor a economia...

Menor a necessidade de guerra.


5. Cooperação vence competição

Alianças duram mais do que conquistas militares.


6. A estabilidade é invisível

Quando tudo funciona...

Poucos percebem o esforço necessário.

Quem trabalha com sistemas críticos conhece bem essa realidade.


O Paralelo com IBM Mainframe

Na primeira temporada, Souma era como uma equipe assumindo um ambiente legado e iniciando um programa de modernização.

Na segunda temporada, ele se parece com um CIO responsável por uma plataforma IBM Z em plena produção.

Os desafios agora incluem:

  • alta disponibilidade;

  • continuidade do negócio;

  • integração entre sistemas;

  • governança;

  • segurança;

  • expansão controlada;

  • escalabilidade;

  • planejamento de capacidade.

Trocar tudo por algo "mais moderno" deixaria o reino vulnerável. Em vez disso, Souma fortalece processos, integra novos recursos e evolui gradualmente — exatamente como ocorre em programas bem-sucedidos de modernização de mainframe.


O Que Existe de Diferente?

Poucos animes dedicam tanto tempo às consequências das decisões.

Nesta temporada:

  • não existem soluções mágicas;

  • política importa;

  • economia importa;

  • logística importa;

  • diplomacia importa;

  • planejamento importa.

É um anime onde inteligência supera força bruta.


Impacto Cultural

A segunda parte consolidou a reputação da série como uma das principais referências do subgênero "kingdom building" ou "nation building", voltado à construção e administração de reinos. Embora tenha recebido críticas pelo ritmo mais lento e pelo grande volume de diálogos políticos, foi elogiada por mostrar liderança, economia e administração pública como elementos centrais da narrativa, algo incomum entre os isekais contemporâneos.


O Que Pode Ensinar para Profissionais de Tecnologia

Para quem trabalha com IBM Mainframe, DevOps ou arquitetura corporativa, a segunda temporada apresenta lições valiosas:

  • Modernização é contínua.

  • Governança evita o caos.

  • Especialistas são ativos estratégicos.

  • Documentação reduz riscos.

  • Processos são tão importantes quanto tecnologia.

  • Escalabilidade exige planejamento.

  • Disponibilidade nasce da disciplina operacional.

  • Liderança é coordenar talentos, não centralizar decisões.


Classificação Bellacosa Mainframe

CritérioNota
História⭐⭐⭐⭐⭐ (9,6/10)
Construção do Mundo⭐⭐⭐⭐⭐ (9,8/10)
Estratégia⭐⭐⭐⭐⭐ (10/10)
Política⭐⭐⭐⭐⭐ (10/10)
Economia⭐⭐⭐⭐⭐ (10/10)
Desenvolvimento dos Personagens⭐⭐⭐⭐☆ (9,0/10)
Ação⭐⭐⭐☆☆ (7,5/10)
Gestão e Liderança⭐⭐⭐⭐⭐ (10/10)
Reassistir⭐⭐⭐⭐⭐ (9,5/10)

Nota Final Bellacosa Mainframe: 9,6/10


Conclusão

Se a primeira temporada ensina como recuperar um sistema legado, a segunda mostra como operar uma plataforma crítica em escala nacional.

A maior batalha de Kazuya Souma não é contra monstros, mas contra a complexidade inerente à gestão de pessoas, instituições e recursos. É uma metáfora poderosa para qualquer profissional de tecnologia que já precisou manter um ambiente crítico funcionando sem interrupções.

No universo Bellacosa Mainframe, a mensagem é clara: construir é um projeto; sustentar é uma disciplina. Assim como no IBM Z, o verdadeiro sucesso não está em mudanças espetaculares, mas na capacidade de evoluir continuamente sem comprometer a estabilidade. É essa visão de longo prazo que faz de Genjitsu Shugi Yuusha no Oukoku Saikenki um dos isekais mais singulares e intelectualmente estimulantes da última década.


segunda-feira, 2 de maio de 2022

Auditoria de Software em Mainframe Muito Além do Código: Como Descobrir a Saúde de um Sistema que Movimenta Bancos, Seguradoras e Governos

 

Bellacosa Mainframe e a auditoria de software

☕ Um Café no Bellacosa Mainframe

Auditoria de Software em Mainframe

Muito Além do Código: Como Descobrir a Saúde de um Sistema que Movimenta Bancos, Seguradoras e Governos

"O bom desenvolvedor faz o programa funcionar. O excelente desenvolvedor faz o programa continuar funcionando durante décadas. A auditoria existe justamente para descobrir a diferença."


Introdução

Quando alguém ouve a palavra auditoria, normalmente imagina alguém procurando erros, apontando culpados ou produzindo relatórios intermináveis.

No universo do IBM Mainframe, a realidade é completamente diferente.

A auditoria de software é uma disciplina de engenharia.

Ela mede qualidade.

Mede risco.

Mede maturidade.

Mede sustentabilidade.

Principalmente, mede algo extremamente valioso:

a capacidade de um sistema continuar funcionando daqui a vinte anos.

Poucas plataformas do mundo possuem aplicações executando continuamente há 30, 40 ou até 60 anos.

Isso muda completamente a forma de avaliar software.

Enquanto no mundo web normalmente pergunta-se:

"Está funcionando?"

No IBM Z pergunta-se:

"Continuará funcionando depois das próximas mil mudanças?"

Essa pequena diferença muda toda a filosofia de auditoria.


A origem da auditoria de software

Curiosamente, a auditoria de software nasceu praticamente junto com os primeiros computadores comerciais.

Na década de 1960, grandes bancos perceberam um problema.

Era impossível validar manualmente milhões de transações.

Foi necessário criar processos para responder perguntas como:

  • Quem alterou este programa?

  • Quando?

  • Por quê?

  • Quem autorizou?

  • Existe documentação?

  • Existe teste?

  • Existe rollback?

Foi aí que nasceram conceitos que hoje chamamos de:

  • Governança

  • Compliance

  • Rastreabilidade

  • Gestão de Configuração

  • Segregação de Funções

Muito antes de DevOps existir.


Auditoria não procura bugs

Esse talvez seja o maior mito.

Uma auditoria séria quase nunca começa olhando código.

Ela começa olhando processos.

Porque processos ruins inevitavelmente geram software ruim.


O grande tripé

Toda auditoria madura observa três pilares.

Pessoas

Quem desenvolve?

Quem revisa?

Quem aprova?

Existe segregação?

Existe treinamento?

Existe documentação?


Processo

Como mudanças acontecem?

Existe fluxo formal?

Existe versionamento?

Existe rollback?

Existe aprovação?


Produto

Como está o software?

É complexo?

É duplicado?

É documentado?

É testado?

É sustentável?


O que normalmente é auditado

Uma auditoria completa pode analisar dezenas de aspectos.

Entre eles:

Código-fonte

  • COBOL

  • PL/I

  • Assembler

  • JCL

  • REXX

  • Easytrieve


Banco de Dados

  • DB2

  • IMS DB

  • VSAM


Processamento Batch

  • Dependências

  • Restart

  • Checkpoint

  • Performance


Online

  • CICS

  • IMS DC

  • MQ

  • APIs


Segurança

  • RACF

  • Permissões

  • Criptografia

  • Auditoria


Operação

  • JES2

  • WLM

  • RMF

  • SMF


Indicadores clássicos

Uma auditoria profissional mede indicadores.

Não opiniões.


1. Complexidade Ciclomática

Criada por Thomas McCabe em 1976.

Ela mede quantos caminhos independentes existem no programa.

Quanto maior o número...

Maior o risco.

Exemplo

IF

ELSE

END-IF

Possui baixa complexidade.

Agora imagine dezenas de:

IF

EVALUATE

PERFORM

GO TO

ALTER

A complexidade explode.


Valores típicos

Até 10 → Excelente

10–20 → Bom

20–40 → Atenção

Acima de 50 → Alto risco


2. Tamanho do Programa

Nem sempre maior significa pior.

Mas programas enormes costumam esconder problemas.

Exemplo

COBOL com

40.000 linhas

é muito diferente de

40 módulos com 1.000 linhas.


3. Acoplamento

Quanto um programa depende dos outros.

Alto acoplamento significa:

qualquer mudança provoca efeito dominó.


4. Coesão

Quanto um módulo faz apenas uma responsabilidade.

Alta coesão

é excelente.

Baixa coesão

indica "programa faz tudo".


5. Duplicação

Quanto código repetido existe.

Ferramentas modernas conseguem localizar blocos duplicados automaticamente.


6. Cobertura de Testes

Quantos caminhos realmente foram testados.

No Mainframe isso inclui:

Batch

Online

Abends

Rollback

Recovery

Restart


7. Taxa de Mudanças

Quantas alterações um programa recebe por ano.

Programas alterados constantemente merecem atenção especial.


8. Taxa de Defeitos

Quantos defeitos aparecem após produção.

Pode ser medida por:

1000 linhas

100 mudanças

Sprint

Release

Aplicação


9. Tempo Médio para Correção

MTTR

Quanto tempo demora para corrigir um incidente.


10. Disponibilidade

Quanto tempo o sistema permanece disponível.

No IBM Z frequentemente encontramos:

99,99%

99,999%

ou superior.


Rácios importantes

Uma auditoria raramente olha números isolados.

Ela cruza informações.


Defeitos por KLOC

Quantidade de defeitos

/

1000 linhas


Alterações por Programa

Mudanças

/

Quantidade de módulos


Incidentes por Release

Muito usado em bancos.


Percentual de Reprocessamentos

Quanto batch precisou ser executado novamente.


Percentual de Abends

Número de abends

/

Número total de Jobs


Percentual de Rollback

Importante para CICS.


Percentual de Mudanças Emergenciais

Mudanças urgentes

/

Mudanças totais

Quanto maior esse índice...

Menor costuma ser a maturidade.


Indicadores específicos de COBOL

Existem métricas interessantes.

Número médio de:

IF

EVALUATE

PERFORM THRU

GO TO

COPYBOOKS

DECLARATIVES

SQL EMBEDDED

CALL

Dynamic CALL

Static CALL


Indicadores de JCL

Quantidade média de:

STEP

COND

IF/THEN

RESTART

GDG

Temporary Dataset

SORT

IDCAMS

IEFBR14

Quanto maior a padronização...

Melhor.


Indicadores de DB2

Número de:

Tablespaces

Indexes

Packages

RUNSTATS vencidos

REORG pendentes

Locks

Deadlocks

Escalation

Access Path alterado


Indicadores CICS

Número médio de

Transações

Abends

Pseudo-Conversational

Syncpoint

Threadsafe

Storage Violations

Temporary Storage

Transient Data


Indicadores Operacionais

SMF

CPU

MSU

zIIP

Tempo Batch

Janela Batch

Fila JES

Espera em Dataset

Tempo em DB2

Tempo em MQ

Tempo em VSAM


O que um auditor experiente enxerga rapidamente

Ele procura padrões.

Por exemplo.

Programa de 60 mil linhas.

Pouquíssimos comentários.

Mais de 200 GO TO.

Sem testes.

Última documentação em 1998.

Esse programa funciona?

Provavelmente.

É saudável?

Talvez não.


As melhores práticas do mercado

1. Revisão por pares

Nenhum código importante deve entrar em produção sem revisão.


2. Versionamento

Hoje Git já faz parte do universo IBM Z.


3. Integração Contínua

Build automático.

Testes automáticos.

Deploy controlado.


4. Padronização

Naming.

Layout.

Comentários.

Copybooks.

Macros.


5. Código pequeno

Programas menores.

Mais simples.

Mais reutilizáveis.


6. Automatização

Quanto menos atividade manual...

Menor chance de erro.


7. Documentação viva

Nunca documente apenas uma vez.

Documentação envelhece.


8. Métricas contínuas

Não espere auditoria anual.

Métricas devem ser diárias.


Ferramentas frequentemente utilizadas

No ecossistema IBM Z encontramos soluções como:

  • IBM Application Discovery and Delivery Intelligence (ADDI)

  • IBM Developer for z/OS (IDz)

  • IBM Debug for z/OS

  • IBM File Manager

  • IBM Fault Analyzer

  • IBM Application Performance Analyzer

  • IBM z/OS Debugger

  • IBM Z IntelliMagic Vision

  • SonarQube (com plugins específicos para COBOL)

  • Micro Focus Enterprise Analyzer

  • BMC AMI DevX

  • Broadcom Endevor

  • IBM Engineering Workflow Management

Cada uma observa um aspecto diferente do ciclo de vida.


O que diferencia uma auditoria madura

Ela não gera apenas números.

Ela responde perguntas.

Como:

Onde está o maior risco?

Qual aplicação envelheceu?

Qual equipe produz menos defeitos?

Qual módulo merece refatoração?

Qual banco precisa reorganização?

Onde investir primeiro?


Um erro muito comum

Medir produtividade por linhas de código.

Isso é péssimo.

Um excelente desenvolvedor frequentemente reduz milhares de linhas.

Menos código.

Menos defeitos.

Menos manutenção.

Mais qualidade.


Outro erro clássico

Medir apenas velocidade.

Velocidade sem qualidade gera retrabalho.

Retrabalho custa caro.

Muito caro.


Curiosidade

Muitos bancos utilizam indicadores internos que jamais são divulgados.

Alguns acompanham centenas de métricas diariamente.

Não apenas software.

Também:

CPU

Storage

I/O

MSU

Licenciamento

Tempo de resposta

Custo por transação

Consumo energético

Capacidade futura


Easter Egg

Você sabia que um dos primeiros conceitos de métricas estruturadas para software surgiu antes mesmo da popularização da Engenharia de Software como disciplina?

Na década de 1970, organizações financeiras perceberam que um programa COBOL "que nunca dava problema" geralmente compartilhava características curiosas:

  • poucos desvios incondicionais (GO TO);

  • lógica de negócio bem dividida em parágrafos;

  • convenções de nomenclatura consistentes;

  • alterações pequenas e frequentes, em vez de grandes reescritas.

Décadas depois, muitos desses princípios foram formalizados em métricas de qualidade e continuam válidos até hoje.


Pontos de atenção

Nem toda dívida técnica aparece no código. Muitas vezes ela está na documentação ausente, nos processos informais ou na dependência de um único especialista.

Indicadores isolados enganam. Um programa grande pode ser excelente, enquanto um programa pequeno pode concentrar enorme risco. Sempre correlacione métricas.

Mudanças emergenciais recorrentes são um sinal de alerta. Se a exceção virou rotina, há problemas no planejamento, nos testes ou na governança.

Softwares críticos exigem histórico. Uma boa auditoria valoriza rastreabilidade: requisito, alteração, teste, aprovação e implantação devem formar uma cadeia verificável.

Ferramentas ajudam, mas não substituem experiência. Um relatório automatizado aponta sintomas; um auditor experiente identifica causas.


Como evoluir na carreira de Auditor de Software Mainframe

Se você deseja atuar nessa área, desenvolva competências em camadas:

Nível 1 — Fundamentos

  • COBOL

  • JCL

  • TSO/ISPF

  • SDSF

  • VSAM

  • DB2

  • CICS

Nível 2 — Operação

  • JES2

  • WLM

  • RMF

  • SMF

  • RACF

  • Catálogos

  • Performance

Nível 3 — Engenharia

  • Métricas de software

  • Refatoração

  • Arquitetura

  • Design de sistemas

  • Gestão de configuração

  • CI/CD para IBM Z

Nível 4 — Governança

  • ITIL

  • COBIT

  • ISO/IEC 25010 (qualidade de software)

  • ISO/IEC 12207 (ciclo de vida)

  • NIST Cybersecurity Framework

  • Auditoria baseada em risco

Nível 5 — Visão Estratégica

O diferencial dos grandes auditores não é conhecer todas as instruções do COBOL ou todos os parâmetros do JCL.

É conseguir responder perguntas como:

  • Onde estão os maiores riscos para o negócio?

  • Qual aplicação merece modernização primeiro?

  • Quanto custa manter esse sistema?

  • O risco de uma alteração é aceitável?

  • A arquitetura atual suporta o crescimento esperado?

Quando você conecta métricas técnicas aos objetivos do negócio, deixa de ser apenas um especialista em tecnologia e passa a atuar como um consultor estratégico.


Conclusão

A auditoria de software em Mainframe não é uma caça aos erros nem uma atividade burocrática. Ela é um processo contínuo de medição, análise e melhoria que transforma dados em decisões. Organizações que monitoram indicadores de qualidade, complexidade, desempenho, segurança e manutenção conseguem reduzir riscos, aumentar a estabilidade e prolongar a vida útil de aplicações que sustentam operações críticas há décadas.

No estilo Bellacosa Mainframe, vale lembrar uma última lição:

"Software não envelhece porque foi escrito em COBOL. Ele envelhece quando ninguém mais consegue entendê-lo, medi-lo ou evoluí-lo. A melhor auditoria não é a que encontra problemas; é a que cria um ambiente onde eles deixam de nascer."

Porque, no fim das contas, um sistema crítico não é aquele que nunca muda. É aquele que consegue mudar continuamente sem perder a confiança de milhões de usuários. Essa é a verdadeira medida de excelência em engenharia de software no IBM Z.

domingo, 1 de maio de 2022

De Go ao COBOL no IBM Z : Você Não Está Saindo da Programação Moderna. Está Descobrindo Onde Ela Aprendeu a Ser Confiável.

Bellacosa Mainframe do go ao cobol no zos

☕ Um Café no Bellacosa Mainframe

De Go ao COBOL no IBM Z

Você Não Está Saindo da Programação Moderna. Está Descobrindo Onde Ela Aprendeu a Ser Confiável.

"A velocidade impressiona. A estabilidade conquista. O IBM Z existe porque algumas aplicações simplesmente não podem parar."

Se você programa em Go (Golang), provavelmente já desenvolveu APIs REST, microsserviços, aplicações concorrentes, ferramentas de linha de comando, sistemas distribuídos ou soluções em nuvem.

Você conhece conceitos como:

  • goroutines

  • channels

  • interfaces

  • JSON

  • HTTP

  • testes automatizados

  • concorrência

  • Docker

  • Git

  • CI/CD

À primeira vista, aprender COBOL em IBM Z pode parecer um retorno aos anos 70.

Na realidade, acontece exatamente o contrário.

Você descobrirá uma plataforma que há décadas executa alguns dos sistemas mais críticos do planeta com níveis de disponibilidade, consistência e confiabilidade que poucas arquiteturas distribuídas conseguem igualar.

Não é trocar tecnologia.

É ampliar repertório.


A maior surpresa

Quem vem do universo Go normalmente acredita que COBOL seja apenas uma linguagem antiga.

Mas COBOL é apenas uma pequena parte do ecossistema.

Na prática você aprenderá uma arquitetura inteira composta por:

  • z/OS

  • JES2

  • TSO/ISPF

  • SDSF

  • JCL

  • VSAM

  • Db2

  • CICS

  • RACF

  • SMF

  • DFSMS

  • WLM

É parecido com alguém que conhece Go e pensa que Kubernetes é apenas um editor de YAML.

Não é.

Existe todo um ecossistema por trás.


Bellacosa Mainframe go versus cobol no zos

O que Go e COBOL têm em comum?

Muito mais do que parece.

Ambos valorizam simplicidade

Go ficou famoso por eliminar complexidade desnecessária.

COBOL nasceu com a mesma filosofia.

Um programa COBOL costuma ser extremamente legível.

Exemplo em Go

if saldo >= valor {
    saldo -= valor
}

COBOL

IF SALDO >= VALOR
    SUBTRACT VALOR FROM SALDO
END-IF

A sintaxe muda.

A lógica não.


Os dois gostam de código explícito

Go evita "mágicas".

COBOL também.

Você sempre sabe:

  • onde os dados estão

  • quem alterou

  • quando alterou

Essa previsibilidade explica por que bancos gostam tanto de COBOL.


Os dois valorizam estabilidade

Go prioriza compatibilidade.

IBM faz praticamente o mesmo.

Existe código COBOL escrito décadas atrás que continua compilando.

Poucas plataformas conseguem oferecer isso.


Ambos tratam processamento intensivo

Go costuma aparecer em:

  • gateways

  • APIs

  • proxies

  • observabilidade

  • streaming

COBOL aparece em:

  • compensação bancária

  • cartões

  • folha de pagamento

  • seguros

  • previdência

  • governo

Nos dois casos estamos falando de sistemas críticos.


Ambos processam grandes volumes

Go trabalha muito bem com milhares de conexões.

COBOL trabalha muito bem com bilhões de registros.

São desafios diferentes.

Mas ambos exigem eficiência.


Onde começam as diferenças?

Aqui começa a mudança de mentalidade.


Go nasceu na Internet

Go nasceu para:

  • cloud

  • containers

  • microsserviços

  • APIs

  • concorrência

O IBM Z nasceu décadas antes.

Seu foco sempre foi:

  • processamento massivo

  • consistência

  • segurança

  • disponibilidade

Isso muda completamente o modo de pensar.


Concorrência

Em Go você escreve:

go processar()

E cria uma goroutine.

No Mainframe a concorrência existe em outro nível.

Ela é administrada pelo sistema operacional.

Você aprenderá conceitos como:

  • Address Spaces

  • Dispatching

  • SRB

  • TCB

  • WLM

  • CICS Tasks

Ou seja:

menos código concorrente.

Mais gerenciamento sistêmico.


Persistência

Go normalmente conversa com:

  • PostgreSQL

  • MySQL

  • Redis

  • MongoDB

No Mainframe você encontrará:

  • Db2

  • VSAM

  • IMS

São tecnologias extremamente maduras.


Deploy

No Go:

go build

No IBM Z:

  • compilação

  • link-edit

  • geração de load module

  • execução via JCL

  • promoção entre ambientes

Existe um pipeline muito mais estruturado.


Arquitetura

Em Go:

API

Service

Repository

Banco

No Mainframe:

Tela CICS

Programa COBOL

Db2

VSAM

Mensageria

Batch

Relatórios

É outra arquitetura.


O que um programador Go já leva pronto?

Muito mais do que imagina.

Você já sabe:

Resolver problemas

Esta continua sendo a habilidade principal.


Estruturas de dados

Você entende:

  • registros

  • arrays

  • mapas

  • strings

COBOL apenas usa outra sintaxe.


Modularização

Você já separa responsabilidades.

COBOL também possui:

  • COPYBOOKS

  • SUBPROGRAMS

  • CALL


Testes

Go incentiva testes.

Hoje o Mainframe também.

Ferramentas modernas incluem:

  • zUnit

  • IBM Test Accelerator

  • COBOL Check


Git

Cada vez mais empresas utilizam:

  • GitHub

  • GitLab

  • Azure DevOps

inclusive para COBOL.


O que precisa aprender do zero?

Agora começa a verdadeira jornada.


1. COBOL

Primeiro aprenda apenas:

  • DATA DIVISION

  • PROCEDURE DIVISION

  • WORKING-STORAGE

  • PIC

  • MOVE

  • COMPUTE

  • IF

  • PERFORM

  • EVALUATE

  • FILE SECTION

Sem pressa.


2. Arquivos

Aprenda:

  • Sequential

  • VSAM KSDS

  • ESDS

  • RRDS

Entenda por que arquivos ainda são importantes.


3. JCL

Aqui muitos iniciantes desistem.

Não desista.

JCL é apenas uma forma de dizer ao z/OS:

"Execute este programa usando estes arquivos."

Pense nele como um YAML extremamente poderoso.


4. TSO/ISPF

Você aprenderá:

  • editar

  • copiar datasets

  • compilar

  • navegar

É seu novo ambiente de desenvolvimento.


5. SDSF

Imagine um painel onde você acompanha:

  • jobs

  • logs

  • spool

  • mensagens

É isso.


6. JES2

Depois descubra quem realmente executa tudo.

Esse é o papel do JES2.


7. Db2

Depois do COBOL, estude SQL embarcado.

Você verá:

EXEC SQL

END-EXEC

Não é muito diferente de usar database/sql em Go.


8. CICS

Aqui o Mainframe ganha vida.

Você aprenderá:

  • transações

  • telas

  • COMMAREA

  • CHANNEL

  • CONTAINER

É como desenvolver um servidor de aplicações extremamente otimizado.


9. RACF

Segurança.

Autorização.

Perfis.

Permissões.

O equivalente ao IAM do mundo IBM Z.


10. Monitoramento

Aprenda a ler:

  • mensagens

  • ABENDs

  • dumps

  • logs

Essa habilidade vale ouro.


O que deve praticar?

Não apenas estudar.

Praticar.

Muito.


Semana 1

Escrever pequenos programas COBOL.

Somar.

Subtrair.

Calcular médias.

Ler teclado.

Formatar saída.


Semana 2

Arquivos.

Criar.

Ler.

Atualizar.

Excluir.


Semana 3

JCL.

Executar programas.

Ler SYSOUT.

Entender retorno.


Semana 4

VSAM.

Inserções.

Pesquisa.

Atualizações.


Semana 5

Db2.

CRUD.

Cursores.

SQLCODE.


Semana 6

CICS.

Primeira tela.

Primeira transação.

Primeiro programa online.


Semana 7

Debug.

ABEND.

S0C7.

S806.

S222.

S322.

Aprenda a gostar deles.

Eles serão seus professores.


Semana 8

Projeto completo.

Cadastro.

Consulta.

Alteração.

Relatório Batch.

Tela CICS.

Db2.

JCL.

Git.

Você finalmente entenderá como um sistema corporativo funciona.


A mudança de mentalidade

Quem vem do Go normalmente pensa:

"Como faço isso rapidamente?"

No Mainframe a pergunta costuma ser:

"Como faço isso para funcionar pelos próximos vinte anos?"

Essa diferença muda tudo.


O que estudar paralelamente?

Enquanto aprende COBOL, mantenha seus conhecimentos modernos.

Estude:

  • REST

  • JSON

  • XML

  • APIs

  • OpenAPI

  • Git

  • GitHub

  • Zowe

  • VS Code

  • DevOps

  • Jenkins

  • GitHub Actions

  • Docker

  • Kubernetes

  • OpenShift

O profissional mais valorizado hoje é aquele que conecta esses dois mundos.


Um roteiro de seis meses

Mês 1: Lógica em COBOL, DATA DIVISION, arquivos sequenciais, TSO/ISPF.

Mês 2: JCL, utilitários, SORT, IDCAMS, VSAM, SDSF.

Mês 3: Db2 para z/OS, SQL embarcado, cursores, tratamento de erros.

Mês 4: CICS, transações, BMS, COMMAREA, canais e containers.

Mês 5: Arquitetura IBM Z, RACF, desempenho, debugging, análise de ABENDs, Git, Zowe e VS Code.

Mês 6: Modernização: APIs REST, z/OS Connect, integração com aplicações Go, mensageria (IBM MQ), testes automatizados e DevOps para Mainframe.

Ao final desse período, desenvolva um projeto integrando uma API escrita em Go com um programa COBOL em CICS consumido via z/OS Connect. Essa experiência mostrará, na prática, que linguagens modernas e Mainframe não competem: elas cooperam.


O maior erro de quem vem do Go

Querer comparar cada comando.

Não faça isso.

COBOL não tenta ser Go.

Go não tenta ser COBOL.

Cada um resolve problemas diferentes.

Aprenda primeiro a pensar como um desenvolvedor Mainframe.

Depois faça as comparações.

Você compreenderá muito mais.


A maior vantagem competitiva

Existem milhares de excelentes desenvolvedores Go.

Mas poucos dominam Go e IBM Z.

Esse profissional consegue conversar com equipes de cloud, APIs, microsserviços e, ao mesmo tempo, entender os sistemas responsáveis por bilhões de transações financeiras diárias.

É justamente essa combinação que muitas organizações procuram em projetos de modernização.


Um conselho do Bellacosa

Não entre no universo Mainframe tentando provar que a tecnologia moderna é melhor.

Entre querendo entender por que tantas instituições continuam confiando nela depois de mais de seis décadas.

Você encontrará soluções elegantes para problemas complexos, uma disciplina de engenharia admirável e uma cultura de qualidade construída ao longo de gerações.

Depois de aprender COBOL, você continuará sendo um programador Go.

Mas será um programador Go que entende sistemas críticos, processamento em larga escala, arquitetura corporativa e confiabilidade de missão crítica.

E essa combinação abre portas que poucos profissionais conseguem atravessar.

Porque, no fim das contas, aprender Mainframe não é voltar ao passado.

É descobrir como o futuro continua sendo construído sobre uma base extremamente sólida.

Nos vemos no próximo café.

sábado, 16 de abril de 2022

🚀 Quer Começar uma Carreira em IBM Mainframe? Parte III

 

Bellacosa Mainframe uma jornada rumo ao mainframe parte iii 

☕ Um Café no Bellacosa Mainframe

🚀 Quer Começar uma Carreira em IBM Mainframe?

Parte III — Da Academia da Frota Estelar ao Convés da USS Enterprise: Como Construir sua Carreira no Universo IBM Z

"O conhecimento é a única riqueza que aumenta quando compartilhada."
— Inspirado na filosofia de Jornada nas Estrelas


Chegamos à Última Etapa da Missão

Ao longo desta série você descobriu que aprender Mainframe é muito mais do que dominar uma linguagem de programação.

Na Parte 1, conhecemos os melhores cursos gratuitos da IBM e da comunidade para iniciar a jornada.

Na Parte 2A, exploramos os pilares do IBM Z: z/OS, COBOL, JCL, QSAM, VSAM e TSO/ISPF.

Na Parte 2B, entendemos como Db2, CICS, IMS, RACF, APIs, Git, DevOps, Zowe e a modernização trabalham em conjunto.

Agora chega o momento mais importante.

Como transformar todo esse conhecimento em uma carreira?


O Maior Erro dos Iniciantes

Quase todo Programador COBOL Padawan acredita que precisa aprender tudo antes de procurar uma vaga.

Esse pensamento costuma gerar ansiedade e, muitas vezes, paralisa o aprendizado.

A realidade é diferente.

Empresas esperam que profissionais em início de carreira tenham uma boa base técnica, curiosidade, capacidade de aprender e disposição para evoluir. Ninguém domina todo o ecossistema IBM Z logo no começo.


O Caminho do Padawan

Imagine que você entrou hoje na Academia da Frota Estelar.

No primeiro dia ninguém entrega a você o comando da Enterprise.

Primeiro você aprende:

  • disciplina;

  • fundamentos;

  • protocolos;

  • prática.

Depois vem a especialização.

Com Mainframe acontece exatamente a mesma coisa.


Um Plano de Estudos de 12 Meses

Não existe um único caminho, mas uma sequência progressiva ajuda bastante.

Meses 1 e 2 — Conhecendo a Nave

Objetivos:

  • Conceitos de Mainframe.

  • História do IBM Z.

  • Introdução ao z/OS.

  • IBM Mainframe Skills Depot.

  • IBM Z Xplore.

  • Learning COBOL Programming with VS Code.

O foco aqui é entender o ecossistema.


Meses 3 e 4 — Linguagem e Execução

Estude:

  • COBOL;

  • JCL;

  • datasets;

  • TSO/ISPF;

  • QSAM;

  • VSAM.

Comece a escrever pequenos programas.

Leia exemplos.

Altere códigos existentes.

Aprenda fazendo.


Meses 5 e 6 — Dados

Agora mergulhe em:

  • SQL;

  • Db2;

  • cursores;

  • índices;

  • joins;

  • normalização;

  • desempenho.

Uma boa base em SQL abre portas tanto no Mainframe quanto em outras plataformas.


Meses 7 e 8 — Processamento Online

Hora de estudar:

  • CICS;

  • COMMAREA;

  • transações;

  • mapas BMS;

  • integração entre COBOL e Db2.

É aqui que muitos sistemas bancários ganham vida.


Meses 9 e 10 — Segurança e Administração

Conheça:

  • RACF;

  • usuários;

  • grupos;

  • permissões;

  • logs;

  • auditoria;

  • conceitos de administração do z/OS.

Mesmo desenvolvedores se beneficiam ao entender como a segurança funciona.


Meses 11 e 12 — O Mainframe Moderno

Agora amplie seu horizonte:

  • Git;

  • DevOps;

  • Zowe;

  • APIs REST;

  • z/OS Connect;

  • automação;

  • conceitos de nuvem híbrida.

Você perceberá que o IBM Z está totalmente integrado ao desenvolvimento moderno.


O Poder dos Badges

Hoje, aprender não significa apenas concluir cursos.

Muitas plataformas oferecem badges digitais, que registram oficialmente suas conquistas.

Eles podem ser exibidos em:

  • LinkedIn;

  • currículo;

  • portfólio;

  • perfis profissionais.

Mais importante do que a quantidade é a coerência das trilhas concluídas.


Aprenda na Prática

Não espere conseguir um emprego para praticar.

Você pode:

  • resolver desafios do IBM Z Xplore;

  • acompanhar workshops;

  • ler IBM Redbooks;

  • estudar exemplos;

  • participar de comunidades;

  • reproduzir exercícios.

A prática constante transforma teoria em experiência.


O Valor da Comunidade

Uma das maiores riquezas do universo Mainframe é sua comunidade.

Participe de:

  • grupos técnicos;

  • eventos;

  • webinars;

  • encontros;

  • fóruns;

  • comunidades online.

Além de aprender, você amplia sua rede de contatos e conhece profissionais experientes.


Ensine o Que Você Aprende

Existe um segredo que poucos descobrem cedo:

Quando você explica um assunto para outra pessoa, também aprofunda o próprio entendimento.

Escreva artigos.

Compartilhe dicas.

Publique pequenos exemplos.

Responda dúvidas.

Você estará fortalecendo tanto a comunidade quanto seu próprio conhecimento.


Monte um Pequeno Portfólio

Mesmo sem experiência profissional, é possível criar um portfólio demonstrando sua evolução.

Inclua, por exemplo:

  • programas COBOL simples;

  • exercícios de SQL;

  • JCLs comentados;

  • pequenos projetos;

  • resumos de cursos;

  • badges conquistados.

Esse material mostra dedicação e interesse contínuo.


A Importância da Curiosidade

Os melhores profissionais raramente estudam apenas aquilo que foi solicitado.

Eles fazem perguntas como:

  • Como isso funciona internamente?

  • Por que essa tecnologia foi criada?

  • Existe outra forma de resolver o problema?

  • Como essa solução evoluiu ao longo do tempo?

Essa curiosidade constrói uma base sólida para decisões técnicas futuras.


Aprenda a Ler Documentação

Muitos iniciantes evitam a documentação oficial.

No entanto, ela costuma responder dúvidas com precisão e profundidade.

Comece por materiais introdutórios e avance gradualmente.

Ler documentação é uma habilidade tão importante quanto programar.


Curiosidades Bellacosa

  • Muitos profissionais que trabalham com IBM Z começaram em outras áreas da TI.

  • COBOL continua evoluindo e recebe novos recursos em suas versões atuais.

  • IDEs modernas convivem com a tradicional interface 3270.

  • Git, APIs, containers e práticas DevOps já fazem parte do cotidiano de muitos ambientes IBM Z.

  • Grandes instituições valorizam profissionais capazes de conectar conhecimento tradicional com tecnologias modernas.


Easter Egg da Série 🖖

Se esta jornada fosse um episódio de Star Trek, você provavelmente começou como um cadete chegando à Academia.

Na Parte 1, recebeu seu uniforme.

Na Parte 2, conheceu a engenharia da nave.

Agora, na Parte 3, finalmente entende que ninguém conduz uma missão sozinho.

A Enterprise depende do trabalho coordenado de toda a tripulação.

O IBM Z também.

Desenvolvedores, administradores, especialistas em banco de dados, segurança, operações e arquitetura colaboram para manter aplicações críticas funcionando com eficiência.


Conselhos do Sr. Spock para um Programador COBOL Padawan

  1. Estude um pouco todos os dias.

  2. Não compare seu início com a experiência de um veterano.

  3. Entenda os conceitos antes de decorar comandos.

  4. Leia código escrito por outras pessoas.

  5. Faça perguntas.

  6. Aprenda SQL cedo.

  7. Não tenha medo da tela verde.

  8. Conheça o ecossistema completo.

  9. Compartilhe conhecimento.

  10. Nunca pare de aprender.


Um Mapa para sua Jornada

Uma sequência de evolução pode ser:

Fundamentos
→ IBM Mainframe Skills Depot

Prática
→ IBM Z Xplore

Programação
→ COBOL + JCL

Dados
→ Db2 + SQL

Arquivos
→ VSAM + QSAM

Processamento Online
→ CICS

Segurança
→ RACF

Modernização
→ APIs + Git + Zowe + DevOps

Especialização
→ Performance, WLM, SMF, RMF, MQ, Resiliência, Observabilidade, IA.

Cada etapa prepara você para a seguinte.


O Futuro do Mainframe

Ao longo das últimas décadas, o IBM Z incorporou diversas tecnologias sem abandonar sua principal característica: confiabilidade.

Hoje é comum encontrar ambientes que combinam:

  • aplicações COBOL;

  • APIs REST;

  • microsserviços;

  • Linux on Z;

  • automação;

  • integração contínua;

  • Inteligência Artificial;

  • observabilidade.

Isso mostra que o Mainframe continua evoluindo para atender novas demandas do mercado.


Mensagem Final do Capitão Picard

Imagine que esta série termina com a Enterprise entrando em velocidade de dobra.

Você observa pela janela da ponte enquanto as estrelas se alongam.

Percebe então que o destino nunca foi o mais importante.

O verdadeiro aprendizado aconteceu durante a viagem.

Com o IBM Mainframe ocorre exatamente o mesmo.

Não tenha pressa para dominar todas as tecnologias.

Construa uma base sólida.

Pratique.

Compartilhe.

Aprenda continuamente.

Cada programa COBOL escrito, cada JCL executado, cada consulta SQL criada e cada problema resolvido representam mais um passo na construção da sua experiência.


Conclusão da Série

Parabéns! Você concluiu esta jornada introdutória pelo universo IBM Mainframe. Vimos que a carreira vai muito além do COBOL: envolve compreender o funcionamento do z/OS, dominar JCL, QSAM, VSAM, explorar Db2, CICS, IMS, conhecer RACF, utilizar Git, Zowe, APIs e adotar práticas de DevOps e modernização. Também aprendemos que a formação não termina ao concluir um curso — ela continua por meio da prática, da documentação, das comunidades técnicas e da troca constante de conhecimento.

O IBM Z continua sendo uma plataforma estratégica para organizações do mundo inteiro porque alia estabilidade, segurança e evolução contínua. Para o Programador COBOL Padawan, a missão é clara: estudar os fundamentos, praticar com consistência, manter a curiosidade viva e evoluir passo a passo. Assim como na Frota Estelar, grandes profissionais não surgem de um único treinamento, mas de uma sequência de missões bem executadas.

Vida longa e próspera na sua jornada pelo universo IBM Mainframe! 🖖☕


------------



 
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...