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

Translate

sexta-feira, 3 de fevereiro de 2023

🧀 WALLACE & GROMIT E A MÁQUINA QUE FABRICAVA AMBIENTES DE MAINFRAME

 

Bellacosa Mainframe e o ambiente de testes em mainframe

☕ Um Café no Bellacosa Mainframe

🧀 WALLACE & GROMIT E A MÁQUINA QUE FABRICAVA AMBIENTES DE MAINFRAME

COBOL, Db2, IMS, CICS, test data, ambientes efêmeros, service virtualization, CI/CD, DevOps, shift-left, RACF — e o dia em que Wallace descobriu que automatizar o build não adiantava muito quando Gromit precisava esperar três dias pelo ambiente de testes.

Sob a tutela de Wallace & Gromit — porque, no mainframe, construir uma máquina gigantesca para economizar cinco minutos pode parecer absurdo... até descobrirmos que estamos perdendo três dias esperando um DBA.


 



🎬 PRÓLOGO — UMA MANHÃ TRANQUILA EM WEST WALLABY STREET

Wallace acordou com uma ideia brilhante.

Isso normalmente era perigoso.

Ele levantou da cama, apertou alguns botões e anunciou:

— Gromit! Precisamos modernizar o mainframe!

Gromit abaixou o jornal lentamente.

Sobre a mesa havia um programa COBOL.

Nada particularmente assustador.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CRD001.

       PROCEDURE DIVISION.

           EXEC SQL
              SELECT LIMITE_CREDITO,
                     STATUS_CLIENTE
                INTO :WS-LIMITE,
                     :WS-STATUS
                FROM CLIENTE
               WHERE CLIENTE_ID = :WS-ID
           END-EXEC.

Wallace explicou:

— Só precisamos alterar uma regra!

Gromit olhou novamente para o programa.

Parecia simples.

Alterar.

Compilar.

Testar.

Entregar.

Wallace então abriu outro papel.

Para testar aquela pequena alteração seriam necessários:

  • uma região CICS;

  • um subsistema Db2;

  • tabelas atualizadas;

  • dados de clientes;

  • packages;

  • plans;

  • permissões RACF;

  • filas MQ;

  • datasets;

  • programas dependentes;

  • eventualmente IMS;

  • talvez uma API externa;

  • e um ambiente que não estivesse sendo usado por outro projeto.

Gromit fechou os olhos.

A alteração levaria talvez duas horas.

Conseguir tudo necessário para testá-la poderia levar dois dias.

E aqui começa nossa história.

Porque um dos grandes problemas do desenvolvimento moderno no mainframe não está necessariamente no COBOL.

Está no tempo entre:

EU TERMINEI O PROGRAMA

e:

EU CONSIGO TESTAR O PROGRAMA

Pegue seu café.

Wallace já está construindo uma máquina.

Isso nunca termina de maneira simples.



🧀 CAPÍTULO 1 — O COBOL NÃO É NECESSARIAMENTE O GARGALO

Existe uma ideia curiosa no mercado:

Sistemas mainframe são lentos para mudar porque COBOL é antigo.

Isso é uma simplificação perigosa.

Um programador experiente pode fazer rapidamente uma alteração COBOL relativamente pequena.

O verdadeiro fluxo pode ser:

REQUISITO
   ↓
COBOL
   ↓
COMPILE
   ↓
LINK
   ↓
DEPLOY
   ↓
CICS
   ↓
Db2
   ↓
DADOS
   ↓
INTEGRAÇÕES
   ↓
TESTE

Agora imagine que cada seta possa envolver outra equipe.

O programador termina.

Precisa do DBA.

O DBA precisa preparar alguma coisa.

Depois precisa do administrador CICS.

Depois segurança.

Depois alguém precisa restaurar dados.

Depois descobrem que SIT está ocupado.

A aplicação levou duas horas para mudar.

O processo levou quatro dias.

Wallace olharia para isso e imediatamente construiria uma máquina com 47 engrenagens, três chaleiras, duas correias transportadoras e provavelmente um dispensador automático de queijo.

Gromit faria algo melhor:

mediria onde está o tempo perdido.



⏱️ CAPÍTULO 2 — O TEMPO QUE NINGUÉM COLOCA NO DASHBOARD

Suponha que uma mudança tenha este lead time:

Programação ................  4 h
Build ......................  1 h
Teste ......................  3 h

Esperando ambiente ......... 18 h
Esperando dados ............ 10 h
Esperando deploy ........... 12 h
Esperando aprovação ........  8 h

Temos:

TRABALHO EFETIVO ...........  8 h
ESPERA ..................... 48 h

A empresa poderia comprar uma ferramenta que faça o programador produzir código 25% mais rapidamente.

Fantástico.

Talvez economize uma hora.

Ou poderia reduzir pela metade as filas.

Economizaria 24 horas.

É por isso que uma métrica interessante para DevOps é:

Developer Waiting Time

Quanto tempo um desenvolvedor passa esperando alguma coisa necessária para continuar?

Isso pode revelar gargalos invisíveis.

É quase como aplicar conceitos de filas e workload management ao próprio processo de desenvolvimento.

Wallace quer melhorar a máquina.

Gromit primeiro observa onde a máquina está parada.



🏭 CAPÍTULO 3 — DEV, SIT, UAT E A ÚNICA REGIÃO CICS DA VILA

Imagine uma organização com:

DEV
 ↓
SIT
 ↓
UAT
 ↓
PRE-PROD
 ↓
PROD

Parece organizado.

Até descobrirmos que dezenas de desenvolvedores compartilham os mesmos ambientes.

Na segunda-feira:

SIT reservado para Projeto A.

Terça:

indisponível para manutenção.

Quarta:

Projeto B executando regressão.

Quinta:

dados inconsistentes.

Sexta:

release freeze.

Nosso programador COBOL pensa:

Posso testar na próxima semana?

Aqui surge um princípio fundamental:

Ambiente de teste também é recurso computacional.

E recurso computacional pode ser provisionado, configurado, versionado e automatizado.

Essa mudança de pensamento é enorme.



🗄️ CAPÍTULO 4 — Db2: TER O BANCO NÃO SIGNIFICA TER O TESTE

Wallace consegue finalmente um ambiente Db2.

Ele comemora.

Gromit aponta para a tabela CLIENTE.

Há três clientes.

Todos ativos.

Nosso programa precisa testar:

CLIENTE NORMAL
CLIENTE BLOQUEADO
CLIENTE INEXISTENTE
CLIENTE VIP
CONTA ENCERRADA
LIMITE EXCEDIDO
SALDO NEGATIVO
CARTÃO EXPIRADO
CARTÃO ROUBADO
TRANSAÇÃO DUPLICADA

Temos ambiente.

Não temos dados úteis.

Essa diferença é fundamental.

Um banco de desenvolvimento com milhões de registros inúteis pode ser pior para QA do que alguns milhares cuidadosamente preparados.

E simplesmente copiar produção cria outro conjunto de problemas:

LGPD
PCI DSS
dados pessoais
dados financeiros
segredos
volume
permissões
mascaramento
retenção
auditoria

Portanto surge uma disciplina importantíssima:

Test Data Management


🧩 CAPÍTULO 5 — NÃO COPIE APENAS A TABELA CUSTOMER

Suponha:

CUSTOMER
   │
   ├── ACCOUNT
   │      ├── TRANSACTION
   │      └── PAYMENT
   │
   └── CARD
          └── AUTHORIZATION

Você seleciona 100 clientes.

Excelente.

Mas se copiar somente CUSTOMER, sua aplicação pode procurar contas que não existem.

Se copiar ACCOUNT, mas esquecer TRANSACTION, outro teste quebra.

Se copiar CARD, talvez precise preservar relações com autorizações.

Portanto um bom subconjunto de dados precisa manter consistência referencial e semântica.

Não queremos apenas dados.

Queremos uma pequena representação coerente do mundo.


🌳 CAPÍTULO 6 — IMS: AGORA GROMIT DESCOBRIU UMA ÁRVORE

Db2 normalmente nos faz pensar em tabelas.

IMS DB introduz outro modelo mental.

Imagine:

CUSTOMER
│
├── ACCOUNT
│   ├── TRANSACTION
│   └── PAYMENT
│
└── ADDRESS

Aqui podemos estar lidando com estruturas hierárquicas.

O programador COBOL pode encontrar operações DL/I como:

GU
GN
GNP

De maneira simplificada:

GU — Get Unique

Procure algo específico.

GN — Get Next

Continue navegando.

GNP — Get Next within Parent

Continue dentro de determinado contexto hierárquico.

Mas IMS não termina no banco.

Podemos encontrar:

IMS DB
IMS TM
DL/I
DBD
PSB
PCB
SSA
IMS Connect

Para um iniciante, isso parece uma sopa de siglas.

Wallace provavelmente tentaria resolver construindo uma máquina de sopa.

Gromit abriria o manual.

A lição é outra:

Quando virtualizamos ou reproduzimos um ambiente, precisamos compreender suas dependências.

Copiar alguns segmentos pode não reproduzir corretamente a situação necessária ao teste.


🏪 CAPÍTULO 7 — CICS: NENHUM PROGRAMA É UMA ILHA

Nosso programa executa:

EXEC CICS LINK
     PROGRAM('PGM002')
     COMMAREA(WS-COMMAREA)
END-EXEC.

Parece apenas uma chamada.

Mas PGM002 pode acessar Db2.

Depois MQ.

Depois outro programa.

Depois uma API.

Temos:

PGM001
   │
   ▼
PGM002
   │
   ├── Db2
   │
   ├── MQ
   │
   └── PGM003
          │
          ▼
        API

Para testar PGM001, precisamos realmente de tudo isso?

Às vezes sim.

Mas nem sempre.

E aí Wallace encontra uma nova caixa de ferramentas.


🎭 CAPÍTULO 8 — MOCKS, STUBS E SERVICE VIRTUALIZATION

Imagine que PGM001 precise chamar um serviço antifraude.

Em produção:

COBOL
  ↓
CICS
  ↓
MQ
  ↓
ANTIFRAUDE

Mas nosso objetivo atual é testar somente uma regra COBOL.

Podemos substituir temporariamente uma dependência por um comportamento controlado.

Por exemplo:

COBOL
  ↓
SERVIÇO VIRTUAL
  ↓
RESPOSTA CONTROLADA

O serviço virtual pode responder:

{
  "riskScore": 87,
  "decision": "REVIEW"
}

Agora conseguimos testar nosso programa sem depender do sistema antifraude real.

Melhor ainda.

Podemos ordenar:

Agora devolva timeout.

Depois:

Agora devolva erro.

Depois:

Agora envie resposta inválida.

Assim podemos criar:

SUCCESS
TIMEOUT
DENIED
INVALID
DUPLICATE
UNAVAILABLE

Isso é extraordinariamente útil.


💣 CAPÍTULO 9 — GROMIT DESCOBRE QUE QUEBRAR O SISTEMA TAMBÉM É TESTAR

Testar não significa verificar apenas:

ENTRADA CORRETA → RESULTADO CORRETO

Precisamos descobrir:

O QUE ACONTECE QUANDO ALGO DÁ ERRADO?

Imagine:

TRANSACTION
     │
     ▼
   CICS
     │
     ▼
   COBOL
     │
     ├── Db2 → SQLCODE -911
     │
     ├── MQ  → problema na fila
     │
     └── API → HTTP 503

Como o programa reage?

Faz rollback?

Tenta novamente?

Duplica uma transação?

Perde informação?

Produz mensagem compreensível?

Grava evidência suficiente?

Isso nos leva aos testes negativos.

Eles são particularmente valiosos porque muitos incidentes graves não acontecem durante o happy path.

Acontecem nas exceções.


🥚 EASTER EGG — 03:17

Wallace finalmente termina sua máquina.

Relógio:

03:17.

Gromit olha preocupado.

A API retorna timeout.

O MQ começa a acumular mensagens.

Db2 apresenta contenção.

CICS espera.

Wallace pergunta:

— Por que ninguém testou isso?

Porque todos testaram:

HTTP 200
SQLCODE 0
MQ OK
CICS OK

Ninguém perguntou:

E se três coisas falharem juntas?

O incidente das 03:17 nasceu exatamente no lugar onde terminava o happy path.


⚡ CAPÍTULO 10 — E SE O DESENVOLVEDOR PUDESSE PEDIR UM MAINFRAME?

Aqui chegamos a uma mudança conceitual enorme.

Modelo tradicional:

DEVELOPER
    ↓
TICKET
    ↓
SYSPROG
    ↓
DBA
    ↓
SECURITY
    ↓
CICS ADMIN
    ↓
WAIT
    ↓
ENVIRONMENT

Agora imagine:

DEVELOPER
    ↓
SELF-SERVICE
    ↓
TEMPLATE APROVADO
    ↓
PROVISION
    ↓
AMBIENTE DEV/TEST

Não estamos falando de entregar produção para o desenvolvedor.

Estamos falando de criar ambientes isolados e governados para desenvolvimento e testes.

O conceito pode incluir tecnologias de virtualização e ofertas destinadas a proporcionar ambientes z/OS de desenvolvimento e teste de maneira muito mais rápida.

A pergunta deixa de ser:

Qual LPAR está livre?

E passa a ser:

Qual configuração de ambiente eu preciso?

Essa mudança é gigantesca.


🧀 CAPÍTULO 11 — WALLACE INVENTA O MAINFRAME DESCARTÁVEL

Não descarte o IBM Z!

Calma.

Estamos falando do ambiente de desenvolvimento.

Imagine:

CREATE
  ↓
TEST
  ↓
COLLECT EVIDENCE
  ↓
DESTROY

Ou:

TEMPLATE
   ↓
ENVIRONMENT A
ENVIRONMENT B
ENVIRONMENT C

Cada squad pode trabalhar com isolamento muito maior.

Isso nos aproxima do conceito de ambientes efêmeros.

O ambiente nasce para cumprir determinada finalidade.

Executamos os testes.

Coletamos logs e evidências.

Depois ele pode ser removido.

Amanhã outro ambiente é criado novamente a partir de uma configuração conhecida.


🧬 CAPÍTULO 12 — INFRASTRUCTURE AS CODE ENCONTRA O COBOL

Wallace adora infraestrutura.

Especialmente se possuir alavancas.

DevOps prefere arquivos declarativos, APIs e automação.

Conceitualmente:

environment:
  zos: enabled
  cics: enabled
  db2: enabled
  ims: enabled
  mq: enabled

Não estou dizendo que essa configuração fictícia cria magicamente um ambiente real.

Ela ilustra a ideia.

A infraestrutura deixa de existir apenas como conhecimento informal:

Pergunte ao José porque ele sabe configurar.

E passa a ser descrita de maneira reproduzível.

Isso gera:

padronização
repetibilidade
auditabilidade
automação
velocidade

🚀 CAPÍTULO 13 — RAPID PROTOTYPING

Agora alguém propõe:

Vamos expor esta transação CICS através de REST.

Antes:

REUNIÃO
 ↓
TICKET
 ↓
AMBIENTE
 ↓
CONFIGURAÇÃO
 ↓
TESTE

Com um laboratório disponível:

CICS
 ↓
COBOL
 ↓
Db2
 ↓
API
 ↓
JSON
 ↓
POSTMAN

Podemos experimentar.

Não funcionou?

Reconfiguramos.

Quebrou?

Restauramos.

A ideia é importante porque experimentação precisa ser barata.

Quando cada tentativa exige uma semana de burocracia, as pessoas naturalmente experimentam menos.


🔬 CAPÍTULO 14 — SHIFT LEFT NÃO É EMPURRAR UMA CAIXINHA NO POWERPOINT

Você provavelmente já viu:

DEV → TEST → QA → UAT → PROD

E alguém desenhou uma seta enorme:

← SHIFT LEFT

Pronto.

Transformação digital concluída.

Não.

Shift left significa descobrir problemas mais cedo.

Idealmente:

DEV
 ↓
UNIT TEST
 ↓
INTEGRATION TEST
 ↓
SYSTEM TEST
 ↓
UAT
 ↓
PROD

Quanto mais cedo encontramos:

erro de lógica
SQL incorreto
dependência quebrada
contrato incompatível
timeout
problema de dados

menor tende a ser o custo de correção.

Encontrar um erro cinco minutos depois de escrevê-lo é muito diferente de encontrá-lo durante uma janela de implantação.

Ou às 03:17.


🏭 CAPÍTULO 15 — GROMIT CONSTRÓI UM PIPELINE

Agora tudo começa a se encaixar.

git push
   │
   ▼
BUILD
   │
   ▼
STATIC ANALYSIS
   │
   ▼
UNIT TEST
   │
   ▼
PROVISION ENVIRONMENT
   │
   ▼
DEPLOY
   │
   ▼
TEST DATA
   │
   ▼
INTEGRATION TEST
   │
   ▼
REGRESSION
   │
   ▼
EVIDENCE
   │
   ▼
PROMOTION

Perceba uma diferença importantíssima.

O ambiente entrou no pipeline.

Antes o pipeline dizia:

Aqui está o executável.

Agora ele pode dizer:

Aqui está o software, o ambiente onde foi validado, os testes executados e suas evidências.

Isso é muito mais poderoso.


🗃️ CAPÍTULO 16 — MAS E O Db2?

Aqui existe uma armadilha clássica.

Aplicação:

APP V1

Banco:

SCHEMA V1

Nova aplicação:

APP V2

Mas ela depende de:

SCHEMA V2

Portanto DevOps não pode cuidar apenas do .CBL.

Precisamos pensar em:

DDL
SQL
BIND
PACKAGE
PLAN
SCHEMA
TEST DATA
MIGRATION
ROLLBACK

Banco de dados também possui ciclo de vida.

Isso é Database DevOps.

E atenção:

automação não significa:

Todo mundo pode executar ALTER em produção.

É justamente o contrário.

Uma boa automação transforma regras em guardrails.


🔐 CAPÍTULO 17 — WALLACE QUASE REMOVE O RACF

Wallace vê todos esses processos automatizados.

— Excelente! Agora todo mundo pode fazer tudo!

Gromit olha horrorizado.

Não.

Self-service não significa ausência de controle.

Continuamos precisando de:

RACF
SAF
least privilege
segregation of duties
audit trail
approvals
data protection
logging
evidence

A diferença é:

Antes

controle = pessoas executando tarefas repetitivas

Depois

controle = políticas + automação + evidência

Esse é um ponto essencial.

DevOps não elimina governança.

DevOps pode transformar governança em código e processos repetíveis.


🧠 CAPÍTULO 18 — MODERNIZAR NÃO SIGNIFICA JOGAR O COBOL FORA

Talvez esta seja a maior lição da aventura.

Durante anos ouvimos modernização descrita assim:

COBOL
 ↓
LEGACY
 ↓
REWRITE
 ↓
CLOUD

Mas existe outra possibilidade:

COBOL
CICS
Db2
IMS
MQ
 ↓
MODERN DEVELOPMENT EXPERIENCE

Podemos manter aplicações extremamente valiosas e modernizar tudo ao redor:

Git
CI/CD
APIs
automated testing
test virtualization
observability
DevSecOps
Infrastructure as Code
automated provisioning
modern IDEs

Isso é modernização sem obrigatoriamente reescrever tudo.


🔭 CAPÍTULO 19 — O MAINFRAME NÃO É MAIS APENAS O DESTINO

Esta é uma mudança profunda.

No modelo antigo:

PIPELINE
   ↓
MAINFRAME

O mainframe era o lugar onde o resultado finalmente chegava.

No modelo moderno:

             PIPELINE
                │
     ┌──────────┼──────────┐
     ▼          ▼          ▼
   BUILD       TEST     ENVIRONMENT
     │          │          │
     └──────────┼──────────┘
                ▼
              z/OS

O próprio ambiente mainframe participa do ciclo.

Provisionamento.

Build.

Teste.

Deploy.

Validação.

Evidência.

Tudo pode integrar uma cadeia de automação.


📊 CAPÍTULO 20 — O DASHBOARD QUE WALLACE ESQUECEU

Estamos acostumados a observar:

CPU
MSU
I/O
latência
throughput
availability
response time

Tudo correto.

Mas DevOps precisa olhar também:

lead time
deployment frequency
change failure
recovery time
test execution time
environment provisioning time
developer waiting time

Imagine descobrir:

Lead time ............... 120 horas

Programando ............. 12
Testando ................ 10

Esperando ambiente ...... 38
Esperando dados ......... 20
Esperando deploy ........ 25
Esperando aprovação ..... 15

Temos:

TRABALHO = 22 horas
ESPERA   = 98 horas

Wallace estava tentando construir uma máquina para fazer COBOL 30% mais rápido.

Gromit apontou para as 98 horas.

Aí Wallace finalmente entendeu.


🛠️ CAPÍTULO 21 — PASSO A PASSO PARA COMEÇAR

Se você está começando em COBOL, não tente construir toda essa arquitetura amanhã.

Comece pequeno.

PASSO 1 — Mapeie uma aplicação

Descubra:

COBOL
 ↓
CICS?
 ↓
Db2?
 ↓
IMS?
 ↓
MQ?
 ↓
API?

PASSO 2 — Mapeie dependências

Pergunte:

Para testar este programa, do que realmente preciso?

PASSO 3 — Separe teste unitário de integração

Nem todo teste precisa do universo inteiro.

PASSO 4 — Identifique dados necessários

Crie casos:

NORMAL
BOUNDARY
INVALID
ERROR
TIMEOUT
DUPLICATE

PASSO 5 — Automatize o build

Compile sempre da mesma maneira.

PASSO 6 — Automatize testes repetitivos

Se alguém executa exatamente os mesmos passos diariamente, existe um ótimo candidato à automação.

PASSO 7 — Crie evidências

Guarde:

build
versão
logs
resultado
dados
timestamp

PASSO 8 — Meça espera

Talvez o maior gargalo não esteja onde todos imaginavam.

PASSO 9 — Virtualize dependências caras

Nem todo sistema externo precisa estar presente em todo teste.

PASSO 10 — Automatize ambientes gradualmente

Comece pelo que produz maior espera.


💡 CAPÍTULO 22 — CURIOSIDADES PARA O PADAWAN COBOL

Primeira curiosidade:

COBOL ser uma linguagem antiga não significa que todo processo ao redor dele precise continuar antigo.

Segunda:

Um programa de 200 linhas pode depender de uma arquitetura com dezenas de componentes.

Terceira:

Mais dados de teste não significa necessariamente melhores testes.

Quarta:

Conseguir provocar um erro propositalmente é uma habilidade extremamente valiosa de QA.

Quinta:

Automação não serve apenas para fazer alguma coisa mais rapidamente.

Ela também serve para fazer alguma coisa da mesma maneira todas as vezes.

Sexta:

Ambiente reproduzível é documentação executável.

Se conseguimos reconstruí-lo automaticamente, sabemos muito mais sobre ele do que quando sua configuração vive apenas na cabeça de algumas pessoas.


🧀 EPÍLOGO — WALLACE FINALMENTE APERTA O BOTÃO

Depois de dias trabalhando, Wallace apresenta sua nova invenção.

Uma máquina gigantesca ocupa toda a garagem.

Gromit observa.

Wallace aperta o botão.

Engrenagens começam a girar.

Git
 ↓
Build
 ↓
COBOL
 ↓
Test
 ↓
Environment
 ↓
CICS
 ↓
Db2
 ↓
IMS
 ↓
MQ
 ↓
Regression
 ↓
Evidence

Uma pequena luz verde acende.

Na tela:

BUILD SUCCESSFUL

UNIT TESTS:       PASS
INTEGRATION:      PASS
NEGATIVE TESTS:   PASS
REGRESSION:       PASS

ENVIRONMENT DESTROYED

Wallace sorri.

— Pronto, Gromit! Automatizamos o mainframe!

Gromit aponta para outra tela:

AVERAGE DEVELOPER WAITING TIME

BEFORE: 31 HOURS
AFTER:   47 MINUTES

Wallace finalmente percebe que aquela era a informação realmente importante.

Eles não tornaram o COBOL moderno.

O COBOL já estava fazendo aquilo para que havia sido criado.

Não substituíram Db2.

Não destruíram IMS.

Não aposentaram CICS.

Não migraram tudo para alguma tecnologia da moda apenas para poder colocar a palavra "modernização" num PowerPoint.

Eles fizeram algo talvez mais inteligente.

Modernizaram o caminho entre a ideia do programador e a evidência de que aquela ideia funciona.

Essa é uma das grandes fronteiras do DevOps no mainframe.

O problema não é necessariamente:

"Como fazemos COBOL parecer uma aplicação cloud?"

Talvez a pergunta correta seja:

"Como permitimos que uma aplicação COBOL, CICS, IMS ou Db2 participe de uma experiência moderna de desenvolvimento sem destruir as qualidades que fizeram esse ecossistema sobreviver por décadas?"

E a resposta passa por:

AUTOMAÇÃO
+
SELF-SERVICE
+
TEST DATA
+
SERVICE VIRTUALIZATION
+
SHIFT LEFT
+
CI/CD
+
AMBIENTES REPRODUZÍVEIS
+
SEGURANÇA
+
OBSERVABILIDADE
+
EVIDÊNCIA

Wallace guarda as ferramentas.

Gromit prepara o chá.

O programador COBOL faz um commit.

O pipeline começa a trabalhar.

Nenhum chamado precisa ser aberto apenas para descobrir se uma pequena alteração funciona.

E em algum lugar dentro do datacenter, silenciosamente, o relógio muda para:

03:16

Gromit olha para ele.

Espera.

03:17

Nada acontece.

Nenhum pager toca.

Nenhuma fila explode.

Nenhum operador corre.

Nenhum programador é acordado.

Gromit toma mais um gole de chá.

Talvez aquele tenha sido o melhor teste de todos.


☕ MORAL DO CAFÉ

Modernizar mainframe não significa necessariamente substituir aquilo que funciona.

Às vezes significa eliminar tudo aquilo que obriga pessoas altamente qualificadas a ficarem esperando.

Porque existe uma diferença enorme entre:

MAINFRAME LEGACY

e:

PROCESSO LEGACY

Não confunda os dois.

O IBM Z pode processar bilhões de transações.

CICS pode responder em frações de segundo.

Db2 pode atender workloads gigantescos.

IMS pode sustentar aplicações críticas durante décadas.

E mesmo assim...

o programador pode ficar três dias esperando um ambiente de teste.

Nesse caso, meu jovem padawan COBOL, talvez a coisa mais lenta do sistema não esteja rodando no mainframe.

Talvez esteja rodando no processo.

E é justamente aí que Wallace & Gromit começariam a construir a próxima máquina.

Welcome to the Mainframe. ☕🧀

quinta-feira, 2 de fevereiro de 2023

🧠 ALAN TURING E O CURRÍCULO INVISÍVEL DA COMPUTAÇÃO — QUANDO O PROGRAMADOR COBOL DESCOBRIU QUE PACIÊNCIA, SNAKE E CHATGPT ERAM PROFESSORES DISFARÇADOS

 

Bellacosa Mainframe e o UX na interface usuario

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🧠 ALAN TURING E O CURRÍCULO INVISÍVEL DA COMPUTAÇÃO — QUANDO O PROGRAMADOR COBOL DESCOBRIU QUE PACIÊNCIA, SNAKE E CHATGPT ERAM PROFESSORES DISFARÇADOS

CP/M, DOS, Windows, UX, Paciência, Campo Minado, Office, pirataria, Snake, smartphones, memória procedural, capital cognitivo, prompts, IA generativa, agentes — e o dia em que Alan Turing perguntou quanto da nossa inteligência desperdiçamos simplesmente procurando onde esconderam novamente o botão.



🎬 PRÓLOGO — ALAN TURING ESTAVA SENTADO DIANTE DO TERMINAL

Imagine entrar no CPD pela manhã.

O ar-condicionado está naquele nível clássico:

temperatura ideal para computadores e pinguins.

Há um terminal esperando.

Você se senta.

Na cadeira ao lado está ninguém menos que Alan Turing.

Ele olha para a tela.

Depois olha para você.

Na tela aparece:

C:\>

— Sabe o que isso significa? — pergunta Turing.

O jovem programador COBOL responde:

— Que o computador está esperando um comando.

Turing sorri.

— Exatamente. Mas existe algo ainda mais importante. Ele está esperando que você saiba como fazer aquilo que deseja fazer.

Então ele escreve:

DIR

ENTER.

A lista de arquivos aparece.

— Durante décadas — continua Turing — ensinamos humanos a falar a linguagem das máquinas. Depois ensinamos máquinas a apresentar opções aos humanos. Agora estamos tentando ensinar máquinas a compreender o que os humanos querem.

E talvez essa seja uma maneira bastante interessante de contar a história da computação.

Não através de processadores.

Não através de gigabytes.

Nem sequer através de sistemas operacionais.

Mas através de uma pergunta:

Quanto o ser humano precisa aprender para conseguir dizer à máquina aquilo que deseja?

Prepare o café.

Porque vamos voltar ao tempo em que não havia botão Iniciar, não havia touchscreen, ninguém dizia “prompt engineering” e uma pequena cobrinha monocromática estava silenciosamente preparando milhões de pessoas para o futuro.



💾 CAPÍTULO 1 — QUANDO O COMPUTADOR NÃO TENTAVA ADIVINHAR NADA

Nos tempos do CP/M e posteriormente do DOS, utilizar um computador significava conhecer alguma coisa sobre o computador.

No CP/M poderíamos encontrar:

A>

No DOS:

C:\>

A interface era essencialmente linguística.

Não existia uma coleção de ícones dizendo:

Talvez você queira isto.

Você precisava informar o que desejava.

Por exemplo:

DIR

listava arquivos.

COPY ARQUIVO.TXT A:

copiava um arquivo.

DEL TESTE.TXT

apagava.

REN VELHO.TXT NOVO.TXT

renomeava.

TYPE README.TXT

mostrava o conteúdo.

O modelo era aproximadamente:

INTENÇÃO
   ↓
CONHECIMENTO
   ↓
COMANDO
   ↓
SINTAXE
   ↓
EXECUÇÃO

Isso tinha um enorme problema:

a curva de aprendizado.

Se você não soubesse que determinado comando existia, dificilmente o descobriria olhando para:

C:\>

O prompt piscante não era exatamente um excelente vendedor.

Por outro lado, depois que você aprendia os comandos, acontecia algo maravilhoso:

velocidade.

Você pensava:

Quero descobrir meu endereço IP.

E escrevia:

ipconfig

Décadas depois, esse princípio continua vivo.



🦖 CAPÍTULO 2 — O DINOSSAURO QUE RECUSA A EXTINÇÃO

Precisamos fazer uma pequena correção arqueológica.

Quando alguém abre atualmente o Prompt de Comando do Windows e chama aquilo de “janela do DOS”, tecnicamente não está executando o velho MS-DOS.

É cmd.exe.

Mas para gerações que atravessaram DOS e Windows, a expressão ficou.

E existe uma razão pela qual terminais continuam sobrevivendo mesmo depois de décadas de interfaces gráficas.

Compare.

Na GUI:

INTENÇÃO
   ↓
PROCURAR CONFIGURAÇÕES
   ↓
ENCONTRAR A CATEGORIA
   ↓
ABRIR A JANELA
   ↓
PROCURAR SUBMENU
   ↓
ENCONTRAR OPÇÃO
   ↓
CLICAR

No terminal:

INTENÇÃO
   ↓
COMANDO
   ↓
ENTER

O terminal possui um problema enorme para iniciantes:

você precisa saber o comando.

Mas possui uma vantagem enorme para especialistas:

você já sabe o comando.

Alan Turing olha para nosso jovem COBOL e explica:

— Uma interface gráfica reduz o custo da descoberta. Uma interface de comandos reduz o custo da execução quando você já sabe exatamente o que deseja.

Essa distinção é fundamental.

A GUI não tornou a CLI inútil.

Elas resolvem problemas diferentes.

Até os princípios clássicos de usabilidade de Jakob Nielsen refletem essa tensão: interfaces devem favorecer reconhecimento em vez de exigir recordação, mas também oferecer flexibilidade e eficiência para usuários experientes.



📜 CAPÍTULO 3 — O .BAT, AVÔ DOS AGENTES DE IA

Agora nosso jovem programador encontra um arquivo:

BACKUP.BAT

Turing pergunta:

— O que você acha que aconteceu aqui?

Talvez alguém estivesse fazendo diariamente:

COPY C:\DADOS\*.TXT D:\BACKUP
COPY C:\RELAT\*.RPT D:\BACKUP
DIR D:\BACKUP

Até que pensou:

Raios, estou repetindo a mesma coisa todos os dias.

E criou um .BAT.

Parece banal.

Mas filosoficamente aconteceu algo importante.

Antes:

Eu executo cada passo.

Depois:

Eu descrevo os passos uma vez e mando a máquina repeti-los.

Nascia uma forma popular de automação pessoal.

Podemos desenhar uma linhagem:

.BAT
  ↓
MACRO
  ↓
SCRIPT
  ↓
AUTOMAÇÃO
  ↓
WORKFLOW
  ↓
RPA
  ↓
COPILOTO
  ↓
AGENTE DE IA

A tecnologia mudou enormemente.

O desejo humano mudou muito menos:

“Estou cansado de repetir isso. Computador, faça você.”

O que muda ao longo das décadas é quanto do COMO precisamos explicar.

Guarde isso.

Voltaremos ao assunto.



🪟 CAPÍTULO 4 — ENTÃO CHEGARAM AS JANELAS

A interface gráfica alterou radicalmente o contrato entre homem e computador.

Em vez de memorizar:

COPY
DEL
REN
DIR

o usuário passou a:

  • apontar;

  • clicar;

  • selecionar;

  • arrastar;

  • soltar;

  • abrir;

  • minimizar;

  • maximizar.

Agora as possibilidades estavam parcialmente visíveis.

O computador dizia:

“Aqui estão algumas coisas que você pode fazer.”

Isso foi revolucionário.

Mas apareceu um problema.

Milhões de pessoas não sabiam usar mouse.

Hoje parece absurdo.

Uma criança vê um mouse e rapidamente entende que existe uma relação entre movimento físico e ponteiro.

Mas alguém que nunca utilizou aquilo precisava aprender:

mão move
   ↓
mouse move
   ↓
ponteiro move

Depois:

apontar
clicar
duplo clique
arrastar
soltar

Como ensinar isso para milhões de pessoas?

Criar um curso?

Um manual de 300 páginas?

Alan Turing sorri.

— Tenho uma ideia melhor.


🃏 CAPÍTULO 5 — PACIÊNCIA ERA UM CURSO DE INFORMÁTICA DISFARÇADO

Abriu-se uma mesa verde.

Cartas apareceram.

Paciência.

O usuário pensava:

Vou jogar.

Mas enquanto tentava colocar o sete vermelho sobre o oito preto, estava aprendendo:

localizar objeto
      ↓
posicionar ponteiro
      ↓
pressionar botão
      ↓
manter pressionado
      ↓
arrastar
      ↓
localizar destino
      ↓
soltar

Ou seja:

drag-and-drop.

A retrospectiva oficial da Microsoft sobre Solitaire confirma justamente seu papel na familiarização dos usuários com o ambiente gráfico e com o mouse.

Aquilo era treinamento.

Só não parecia treinamento.

E aqui surge uma das grandes lições desta história:

Às vezes a ferramenta educacional mais eficiente é aquela que o aluno nem percebe que é uma aula.

Imagine a alternativa.

Curso corporativo

Módulo 4.2 — Técnicas de manipulação direta de objetos utilizando dispositivos apontadores.

Duração: três horas.

Coffee break às 15h30.

😂

Ou:

Paciência.

Escolha difícil.


💣 CAPÍTULO 6 — CAMPO MINADO E A DESCOBERTA DO ERRO BARATO

Outro professor estava esperando.

Campo Minado.

O jogo treinava precisão, posicionamento, interpretação visual e diferentes ações do mouse.

Mas havia algo ainda mais importante:

permissão para errar.

Imagine um funcionário começando a utilizar computador.

Ele encontra um documento importante.

Olha para uma opção desconhecida.

Pensa:

Se eu clicar nisso, será que apago alguma coisa?

Surge medo.

O medo reduz exploração.

Agora coloque o mesmo usuário no Campo Minado.

Clique.

💣

BOOM.

Morreu.

Terrível?

Não.

New Game

Começou novamente.

Temos:

AÇÃO
 ↓
FEEDBACK
 ↓
ERRO
 ↓
RECOMEÇO
 ↓
NOVA HIPÓTESE
 ↓
NOVA AÇÃO

O jogo cria uma espécie de sandbox cognitivo.

O erro custa quase nada.

Por isso jogos são extraordinários ambientes de aprendizado.

Eles permitem experimentar sem colocar a folha de pagamento da empresa em risco.


🧠 CAPÍTULO 7 — UM DIA VOCÊ PARA DE PENSAR NO MOUSE

Depois de milhares de cliques acontece algo curioso.

Você não pensa:

Preciso mover minha mão três centímetros para a direita.

Você simplesmente clica.

A habilidade tornou-se procedural.

É semelhante ao que acontece com um programador mainframe experiente diante do ISPF.

No início:

PF3 = END

Você precisa lembrar.

Algum tempo depois?

Seu dedo apertou PF3 antes de sua consciência terminar de formular:

Quero sair daqui.

Quem trabalha décadas com tecnologia acumula milhares dessas pequenas associações.

Atalhos.

Teclas.

Caminhos.

Comandos.

Gestos.

Convenções.

Isso possui valor.

Vamos dar um nome:

CAPITAL COGNITIVO.


💰 CAPÍTULO 8 — CONHECIMENTO DE INTERFACE TAMBÉM É INVESTIMENTO

Imagine que você gaste dez horas aprendendo uma ferramenta.

Depois passe anos utilizando-a.

Se determinado conhecimento economizar apenas trinta segundos numa operação realizada cinquenta vezes por dia:

30 segundos × 50
=
1.500 segundos
=
25 minutos/dia

Em 240 dias úteis:

25 × 240
=
6.000 minutos
=
100 horas

Você investiu dez horas.

Pode economizar cem horas por ano.

Existe enorme ROI no aprendizado.

Agora imagine que uma atualização chegue e decida:

Vamos reorganizar tudo!

Aquilo que era:

A → B → C

vira:

X → CONFIGURAÇÕES → AVANÇADO → Y → C

A tarefa continua sendo a mesma.

Você continua sabendo o que fazer.

Só não sabe mais onde esconderam aquilo.

Nasce o:

IMPOSTO DE REAPRENDIZADO.


😡 CAPÍTULO 9 — “EU SEI FAZER. SÓ NÃO SEI ONDE ESCONDERAM AGORA.”

Essa frase resume uma das frustrações mais interessantes da UX moderna.

O usuário não ficou incompetente.

A tarefa não mudou.

O conhecimento conceitual continua existindo.

O que foi destruído foi o mapeamento:

INTENÇÃO → INTERFACE

Imagine uma empresa com 100 mil funcionários.

Uma mudança aparentemente insignificante obriga cada funcionário a gastar vinte minutos reaprendendo alguma operação.

100.000 × 20 minutos
=
2.000.000 minutos

Mais de:

33.000 horas

de trabalho.

Repita pequenas mudanças assim diversas vezes.

Aquela reorganização “bonitinha” começa a possuir custo econômico.

Por isso precisamos acrescentar uma característica frequentemente esquecida da UX:

Estabilidade também é usabilidade.

Não significa congelar interfaces eternamente.

Significa perguntar:

Quanto do conhecimento anterior conseguimos preservar?


🏛️ CAPÍTULO 10 — O VELHO ISPF RI NO FUNDO DA SALA

Um programador jovem abre ISPF.

Olha.

Silêncio.

Depois pergunta:

— Isso veio junto com a tumba do Tutancâmon?

😂

Visualmente, algumas interfaces mainframe realmente carregam décadas de história.

Mas há um lado fascinante.

Conhecimentos adquiridos há muito tempo continuam produtivos.

Existe uma diferença entre:

FACILIDADE DE APRENDER

e:

LONGEVIDADE DO APRENDIZADO

Uma interface pode ser difícil inicialmente e extremamente estável.

Outra pode ser intuitiva inicialmente, porém constantemente reorganizada.

Não precisamos escolher um extremo.

A lição é:

UX deveria medir também quanto tempo o investimento cognitivo do usuário permanece útil.

Isso interessa especialmente ao mundo COBOL.

Sistemas corporativos não vivem seis meses.

Podem viver décadas.

Quando projetamos ferramentas para esses ambientes, conhecimento acumulado também é patrimônio.


🏴‍☠️ CAPÍTULO 11 — O ELEFANTE PIRATA NA SALA

Agora chegamos a uma questão histórica delicada.

Nos anos 1980 e início dos 1990 havia um ecossistema enorme de ferramentas.

Texto:

WordStar
WordPerfect

Planilhas:

Lotus 1-2-3
SuperCalc

Banco de dados:

dBASE III
dBASE IV

Apresentações:

Harvard Graphics

Posteriormente o ecossistema Microsoft integrou fortemente ferramentas como:

Word
Excel
PowerPoint
Access

E aconteceu um fenômeno interessante.

Muita gente passou a ter acesso doméstico a essas ferramentas — por canais legítimos e também, inegavelmente, através de cópias não licenciadas amplamente disseminadas naquela época.

Não devemos cometer o erro histórico de dizer:

“A Microsoft venceu por causa da pirataria.”

A história é muito mais complexa: integração, Windows, distribuição, formatos, contratos empresariais, compatibilidade, estratégia comercial e efeitos de rede também importam.

Mas existe uma hipótese muito interessante:

familiaridade doméstica reduzia o custo empresarial de adoção.


🏢 CAPÍTULO 12 — O FUNCIONÁRIO JÁ CHEGAVA TREINADO

Imagine duas soluções.

Produto A:

LICENÇA
+
TREINAMENTO
+
DOCUMENTAÇÃO
+
RESISTÊNCIA
+
SUPORTE

Produto B:

LICENÇA
+
“EU JÁ SEI USAR ISSO”

Qual possui uma vantagem escondida?

O segundo.

O usuário doméstico podia percorrer esta evolução:

USUÁRIO
   ↓
ALUNO INFORMAL
   ↓
USUÁRIO EXPERIENTE
   ↓
SUPORTE DO COLEGA
   ↓
EVANGELISTA
   ↓
AGENTE DE ADOÇÃO

Depois apareciam os formatos.

.DOC
.XLS

Quando fornecedores, colegas, clientes e parceiros começam a trocar arquivos, compatibilidade adquire valor próprio.

O produto deixa de ser simplesmente software.

Torna-se:

SOFTWARE
+
HABILIDADES
+
DOCUMENTOS
+
FORMATOS
+
USUÁRIOS
+
ECOSSISTEMA

Essa é uma lição importantíssima para qualquer programador COBOL:

tecnologia nunca existe isoladamente.


🐍 CAPÍTULO 13 — ENTÃO UMA COBRINHA ENTROU NO TELEFONE

Avançamos para 1997.

Nokia 6110.

Uma tela monocromática minúscula.

Surge Snake.

A ideia do jogo era muito anterior — jogos desse gênero remontam aos anos 1970 — mas Taneli Armanto projetou e programou a versão do Nokia 6110 em 1997. Ele descreve um ambiente com aproximadamente 84 × 48 pixels, memória medida em kilobytes e teclado numérico como controle.

Hoje isso parece arqueologia.

Na época era mágico.

Mais importante:

Snake vinha instalado.

O usuário não precisava compreender lojas de aplicativos, downloads ou instalação.

Jogava.

Enquanto jogava, aprendia que aquele objeto tinha:

TELEFONE
├── agenda
├── SMS
├── relógio
├── alarme
├── configurações
└── jogos

Isso modifica o modelo mental.

Antes:

telefone = falar

Depois:

telefone = plataforma

A cobrinha estava ajudando a domesticar a computação móvel.


🎮 CAPÍTULO 14 — O CURRÍCULO INVISÍVEL

Agora Alan Turing desenha uma linha no quadro:

PACIÊNCIA
↓
mouse / drag-and-drop

CAMPO MINADO
↓
precisão / experimentação

SNAKE
↓
interação móvel

TETRIS
↓
controle / orientação espacial

J2ME
↓
download / instalação

JOGOS TOUCH
↓
tap / swipe / multitouch

POKÉMON GO
↓
GPS / sensores / realidade aumentada

IA GENERATIVA
↓
prompt / contexto / iteração

Existe um padrão.

Quando aparece um paradigma novo de interação, diversão frequentemente ajuda as pessoas a aprenderem como manipulá-lo.

O usuário não pensa:

Estou realizando alfabetização tecnológica.

Pensa:

Só mais uma partida.


🤖 CAPÍTULO 15 — E A INTELIGÊNCIA ARTIFICIAL CHEGOU DISFARÇADA

Antes de milhões de pessoas conversarem com chatbots, já utilizávamos IA em várias funções:

filtro de spam
recomendação
correção automática
reconhecimento de voz
busca
tradução
classificação
fotografia computacional
assistentes digitais

A inteligência estava escondida atrás da função.

Você não precisava dizer:

Agora utilizarei inteligência artificial.

Simplesmente utilizava o aplicativo.

Então aconteceu outra transformação.

A IA saiu de trás do botão e apareceu diante do usuário.

Com uma caixa de texto.

Curiosamente...

voltamos à linguagem.


🔄 CAPÍTULO 16 — CLI → GUI → LINGUAGEM NATURAL

Turing retorna ao velho terminal:

C:\>

E escreve no quadro:

CLI
“DIGA COMO”

Depois:

GUI
“ESCOLHA COMO”

Finalmente:

IA
“DIGA O QUE”

Temos quase um círculo histórico:

LINGUAGEM FORMAL
      ↓
INTERFACE GRÁFICA
      ↓
LINGUAGEM NATURAL

Mas existe uma diferença gigantesca.

O terminal exige:

DIR

Se você escrever algo completamente diferente, não espera que o computador “entenda sua intenção”.

Já uma IA generativa recebe:

Mostre os arquivos importantes deste projeto e explique quais parecem relacionados ao faturamento.

Agora parte do COMO pode ser inferida.

Essa é uma mudança enorme de abstração.


⚠️ CAPÍTULO 17 — MAS DIR NÃO ALUCINA

Existe um preço.

DIR

é essencialmente determinístico dentro de seu ambiente e parâmetros.

Um modelo generativo trabalha probabilisticamente.

Podemos representar:

COMANDO
↓
REGRA
↓
RESULTADO

contra:

INTENÇÃO
↓
CONTEXTO
↓
INTERPRETAÇÃO
↓
INFERÊNCIA
↓
RESULTADO

A linguagem natural permite entradas muito mais flexíveis.

Mas exige algo novo do usuário:

VERIFICAÇÃO.

Quanto menos precisamos especificar exatamente a entrada, mais precisamos avaliar criticamente a saída.

Para um programador COBOL isso deveria soar familiar.

Nunca coloque algo em produção simplesmente porque:

“Pareceu funcionar.”

Teste.

Valide.

Compare.

Registre.

Observe.


🐱 CAPÍTULO 18 — O GATO CAVALEIRO É A NOVA PACIÊNCIA

Agora chegamos ao ponto delicioso.

Milhões de pessoas entram numa IA e pedem:

Transforme meu gato em um cavaleiro medieval.

Parece bobagem.

E frequentemente é.

Mas observe o processo:

PROMPT
↓
RESULTADO RUIM
↓
REFORMULAÇÃO
↓
MAIS CONTEXTO
↓
NOVO RESULTADO
↓
RESTRIÇÃO
↓
REFINAMENTO

Sem perceber, aquela pessoa aprende:

  • prompting;

  • contexto;

  • especificação;

  • iteração;

  • multimodalidade;

  • avaliação;

  • limitações;

  • delegação.

Hoje:

Faça meu gato usar armadura.

Amanhã:

Compare estes quatro contratos, encontre cláusulas divergentes e produza uma tabela.

Depois:

Analise estes programas COBOL e identifique onde determinado copybook é utilizado.

A brincadeira pode estar treinando uma habilidade profissional futura.

Exatamente como Paciência treinou mouse.


🏴‍☠️ CAPÍTULO 19 — O FENÔMENO OFFICE PODE ESTAR SE REPETINDO

Observe:

OFFICE EM CASA
↓
APRENDIZADO
↓
HABILIDADE
↓
TRABALHO
↓
PRESSÃO POR ADOÇÃO
↓
OFFICE CORPORATIVO

Agora:

IA GRATUITA/DOMÉSTICA
↓
EXPERIMENTAÇÃO
↓
PROMPTING
↓
EXPECTATIVA
↓
TRABALHO
↓
“POR QUE FAZEMOS ISSO MANUALMENTE?”
↓
ADOÇÃO CORPORATIVA

Existe, porém, uma diferença perigosa.

No primeiro caso o funcionário levava principalmente habilidade para dentro da empresa.

Com IA pública, existe o risco de levar informação da empresa para fora.

Código-fonte.

Contratos.

Dados pessoais.

Planilhas.

Credenciais.

Documentação confidencial.

Por isso alfabetização em IA precisa incluir segurança.

A regra prática para o jovem programador é simples:

Nunca interprete facilidade de uso como autorização para fornecer dados.


🤖 CAPÍTULO 20 — DO PROMPT PARA O AGENTE

Agora chegamos à próxima etapa.

Um chatbot recebe:

Explique este programa COBOL.

Um copiloto pode ajudar enquanto você programa.

Um agente vai além.

Ele pode receber um objetivo, utilizar ferramentas, tomar decisões intermediárias e executar um workflow com certo grau de independência. Uma definição contemporânea de agentes destaca justamente sistemas que realizam tarefas em nome do usuário, controlando a execução do workflow e utilizando ferramentas externas quando necessário.

Veja a evolução:

1988
“EXECUTE ESTES COMANDOS.”

.BAT
2005
“EXECUTE ESTE SCRIPT.”
2015
“EXECUTE ESTE WORKFLOW.”
2026
“ALCANCE ESTE OBJETIVO.”

Isso é extraordinário.

Porque estamos transferindo cada vez mais HOW para a máquina.


🧙 CAPÍTULO 21 — TURING DESENHA A ESCADA DA ABSTRAÇÃO

No quadro:

COMANDO
   ↓
SCRIPT
   ↓
MACRO
   ↓
WORKFLOW
   ↓
RPA
   ↓
COPILOTO
   ↓
AGENTE

E ao lado:

QUANTIDADE DE “COMO”
QUE O HUMANO PRECISA INFORMAR

████████████  COMANDO
██████████    SCRIPT
████████      WORKFLOW
██████        RPA
████          COPILOTO
██            AGENTE

Quanto mais subimos, mais delegamos.

Mas cuidado.

Menos instrução operacional humana não significa necessariamente menos responsabilidade humana.

Pode significar exatamente o contrário.

Quando um sistema possui maior autonomia, precisamos pensar mais em:

permissões
guardrails
logs
auditoria
limites
observabilidade
rollback
aprovação humana
least privilege

O agente mais poderoso não deveria possuir automaticamente acesso irrestrito.

No mainframe ninguém deveria dizer:

“Ele parece simpático. Dá SPECIAL no RACF.”

😂

Com agentes vale a mesma filosofia.


🧩 CAPÍTULO 22 — A INTERFACE DO FUTURO SERÁ HÍBRIDA

Não espere que IA simplesmente mate GUI e CLI.

É muito mais provável termos:

LINGUAGEM NATURAL
        +
       GUI
        +
      CLI
        +
      API

Cada uma possui função.

Linguagem natural

Expressa intenção.

GUI

Permite descoberta, inspeção e visualização.

CLI

Oferece precisão e velocidade.

API

Permite integração determinística entre sistemas.

Imagine dizer:

Encontre todos os jobs que falharam durante a madrugada.

A IA interpreta.

Por baixo dela talvez existam consultas, APIs e comandos determinísticos.

Depois surge uma tabela gráfica.

Você seleciona três jobs.

A interface solicita confirmação.

Então executa a ação.

Não é:

IA OU GUI OU CLI

É:

IA
sobre
GUI/API/CLI

Uma nova camada de abstração.


🧠 CAPÍTULO 23 — A PRÓXIMA ALFABETIZAÇÃO SERÁ SABER DELEGAR

Quando computadores exigiam comandos, a habilidade era:

comandar.

Quando surgiram GUIs:

navegar.

Quando chegaram mecanismos de busca:

pesquisar.

Com IA generativa:

formular intenção e verificar resultado.

Com agentes:

delegar e supervisionar.

Isso muda profundamente o usuário competente.

Talvez o profissional digitalmente alfabetizado do futuro seja aquele capaz de dizer:

Este é o objetivo.

Estas são as restrições.

Estes dados podem ser utilizados.

Estes sistemas podem ser acessados.

Estas ações exigem minha aprovação.

Aqui estão os critérios de sucesso.

Se encontrar estas exceções, pare e me chame.

Percebeu?

Isso começa a parecer menos um comando e mais uma especificação de requisitos.

O velho analista de sistemas acabou de levantar a sobrancelha.

Talvez ele tenha mais futuro nesse mundo do que imaginava.


👨‍💻 CAPÍTULO 24 — O QUE O PROGRAMADOR COBOL DEVE APRENDER COM TUDO ISSO?

Primeiro:

1. Não despreze interfaces antigas.

Pergunte por que sobreviveram.

Segundo:

2. Não confunda novidade visual com melhoria de UX.

Uma mudança precisa justificar também o custo de reaprendizado.

Terceiro:

3. Automatize repetição.

Se você executa manualmente exatamente a mesma sequência todos os dias, existe provavelmente oportunidade de automação.

Quarto:

4. Preserve conhecimento operacional.

Documente comandos, atalhos, scripts, procedimentos e decisões.

Quinto:

5. Aprenda interfaces diferentes.

GUI.

CLI.

API.

Linguagem natural.

Cada uma possui vantagens.

Sexto:

6. Trate prompts como especificações, não encantamentos mágicos.

Explique objetivo, contexto, restrições e resultado esperado.

Sétimo:

7. Verifique IA.

Principalmente quando houver código, dinheiro, produção, segurança ou dados empresariais.

Oitavo:

8. Prepare-se para agentes.

Mas aprenda antes automação, APIs, segurança, observabilidade e controle de acesso.

Porque um agente não elimina engenharia.

Ele torna engenharia ainda mais necessária.


🥚 EASTER EGG — ALAN TURING ENCONTRA UM PROGRAMA COBOL

Antes de ir embora, Turing encontra um terminal.

Na tela:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. TURING01.

       PROCEDURE DIVISION.

           DISPLAY 'WHAT DO YOU WANT?'.

           STOP RUN.

Turing olha para o programa.

Depois olha para o chatbot aberto na outra tela.

O chatbot pergunta:

Como posso ajudar?

Ele fica alguns segundos em silêncio.

Sorri.

— Vocês levaram quase oitenta anos para voltar à minha pergunta.

O programador COBOL não entende.

Turing aponta para:

WHAT DO YOU WANT?

E vai embora.


☕ EPÍLOGO — TALVEZ NUNCA TENHA SIDO APENAS UM JOGO

Daqui a vinte anos alguém poderá encontrar uma captura de tela de um chatbot de 2026.

Talvez pergunte:

Vocês realmente precisavam digitar parágrafos para conversar com uma inteligência artificial?

E nós responderemos:

Sim.

Ele provavelmente achará primitivo.

Como hoje olhamos para:

C:\>

Ou para Paciência.

Ou para uma tela monocromática mostrando uma cobrinha.

Mas talvez os historiadores percebam alguma coisa que hoje ainda estamos próximos demais para enxergar.

Paciência nunca foi somente Paciência.

Enquanto milhões de pessoas jogavam cartas, aprendiam mouse.

Campo Minado nunca foi somente Campo Minado.

Enquanto explodíamos minas, aprendíamos precisão, feedback e que errar diante de um computador não precisava ser uma tragédia.

Snake nunca foi somente Snake.

Enquanto aquela cobrinha crescia, aprendíamos que o telefone podia ser algo muito maior que um telefone.

Office doméstico nunca foi apenas produtividade doméstica.

Ele ajudou a criar uma população que chegava às empresas carregando conhecimento tecnológico previamente adquirido.

E talvez os memes, gatos cavaleiros, imagens absurdas, perguntas idiotas e conversas aparentemente inúteis com inteligência artificial estejam fazendo algo parecido.

Estamos brincando.

Mas também estamos aprendendo:

contexto
intenção
prompt
iteração
avaliação
verificação
delegação
supervisão

Estamos construindo memória procedural para uma interface que ainda está nascendo.

Talvez daqui a vinte anos os agentes de IA sejam tão diferentes dos chatbots atuais quanto um smartphone é diferente de um Nokia 6110.

E alguém escreverá:

“No começo as pessoas entravam numa caixa de texto e conversavam manualmente com a IA.”

E outra pessoa responderá:

“Sério?”

Sim.

Sério.

Porque toda revolução computacional precisa resolver dois problemas.

Primeiro:

Construir a máquina.

Segundo:

Ensinar seres humanos a utilizá-la.

E esse segundo problema é frequentemente resolvido das maneiras mais improváveis.

Uma carta arrastada pela tela.

Uma mina explodindo.

Uma cobrinha procurando comida.

Um .BAT criado porque alguém estava cansado de digitar cinco comandos.

Um funcionário levando para a empresa aquilo que aprendeu em casa.

Um programador COBOL abrindo cmd.exe em 2026 porque sabe exatamente o que quer e não está com paciência para descobrir em qual submenu esconderam aquilo desta vez.

Ou alguém pedindo:

“Transforme meu gato em um paladino medieval.”

Parece brincadeira.

Talvez seja.

Mas o sujeito acaba de aprender a conversar com uma máquina probabilística.

Hoje ele pede um gato.

Amanhã pede análise de documentos.

Depois delega um workflow.

Finalmente entrega um objetivo.

E assim nossa velha linha evolutiva fica completa:

.BAT
 ↓
MACRO
 ↓
SCRIPT
 ↓
AUTOMAÇÃO
 ↓
RPA
 ↓
COPILOTO
 ↓
AGENTE
 ↓
?

O ponto de interrogação é importante.

Porque a história ainda não terminou.

Alan Turing provavelmente gostaria disso.

A grande pergunta para a próxima geração de UX talvez nem seja:

Como tornar a nova tecnologia mais fácil de aprender?

Talvez seja:

Quanto do conhecimento que o ser humano já conquistou nós temos o direito de jogar fora quando desenhamos a próxima interface?

Porque uma boa interface não deveria apenas ensinar o novo.

Ela deveria respeitar aquilo que o usuário levou anos para aprender.

E talvez essa seja a grande ironia de toda esta história:

Passamos décadas ensinando seres humanos a compreender computadores.

Agora estamos ensinando computadores a compreender seres humanos.

No meio do caminho havia uma Paciência, um Campo Minado, uma cobrinha...

...e um velho programador ainda digitando:

C:\>_

porque algumas interfaces simplesmente continuam funcionando.

Fim?

READY

Claro que não.

No mainframe sempre existe outro job esperando.

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🤖 Alan Turing entra no CPD

O mapa dos agentes de IA explicado por um mainframer

Esta série acompanha a evolução de uma ideia: compreender os problemas modernos dos agentes de inteligência artificial usando conceitos conhecidos por quem trabalha com mainframe, IBM Z e sistemas corporativos.

A viagem começa pelas pessoas e pela experiência de uso, passa por observabilidade, priorização e execução, chega às transações, estado e mensageria e termina na organização hierárquica do contexto.

01
FEV / 2023

🧠 O currículo invisível da inteligência artificial

Antes de construir agentes inteligentes precisamos preparar as pessoas que trabalharão com eles. Técnica, pensamento crítico, conhecimento de negócio, segurança, ética e responsabilidade formam o currículo que nem sempre aparece no certificado.

02
MAR / 2023

🤖 A UX dos agentes

Quando uma IA deixa de apenas responder e começa a executar ações, sua interface precisa mostrar objetivos, progresso, permissões e resultados. PF3, MAXCC e RACF tornam-se excelentes analogias para controle, retorno e privilégio mínimo.

04
MAI / 2023

⚖️ O WLM dos agentes

CPU, GPU, tokens, APIs e bancos de dados são recursos finitos. O Workload Manager inspira uma discussão sobre prioridades, objetivos de serviço, importância do trabalho e distribuição dinâmica de recursos entre agentes.

06
JUL / 2023

⚡ O CICS dos agentes

Uma coisa é uma IA produzir texto. Outra é permitir que ela execute operações reais de negócio. CICS introduz a conversa sobre processamento transacional, concorrência, segurança e integridade.

07
AGO / 2023

🗄️ O Db2 dos agentes

Agentes precisam manter estado, checkpoints, decisões e resultados. O Db2 fornece o ponto de partida para discutir unidade de trabalho, consistência, COMMIT, ROLLBACK e recuperação.

10
SET / 2026

☕ Alan Turing entra no CPD — O mapa completo

O artigo-âncora reúne toda a evolução da ideia: pessoas, UX, observabilidade, prioridade, orquestração, transações, estado, mensageria e contexto transformam artigos independentes em uma arquitetura conceitual para agentes de IA.

🖥️ Leitor da série

Selecione qualquer capítulo acima para abri-lo normalmente. O painel abaixo é apenas um recurso adicional de navegação.

quarta-feira, 1 de fevereiro de 2023

🕯️ Os Dias Depois do Caos — Brasília e o Silêncio do Concreto

 


🕯️ Os Dias Depois do Caos — Brasília e o Silêncio do Concreto
Por Bellacosa Mainframe | Pós-Tempestade da República


Passaram-se dias.
Mas Brasília ainda tinha cheiro de gás, poeira e espanto.
Os corredores do poder — antes feitos de mármore e eco — pareciam agora templos profanados.
As câmeras mostravam os vidros substituídos, os tapetes lavados, as cadeiras recolocadas no lugar.
Mas o país… o país não voltou para o ponto anterior.


🔻 O Eco do Dia Seguinte
O 8 de janeiro não terminou quando o último invasor foi preso.
Ele se espalhou nas conversas de bar, nos grupos de mensagem, nas orações, nas ironias.
O país descobriu que não existe “reconstrução institucional” sem reconstrução emocional.

As pessoas não sabiam o que sentir.
Alguns chamaram de vergonha, outros de justiça, outros de vingança.
Mas o sentimento mais presente foi o cansaço —
um cansaço nacional, quase metafísico, como se o Brasil inteiro tivesse perdido um pouco de ar.


⚖️ O Julgamento Invisível
Vieram as prisões, as audiências, as manchetes.
Homens e mulheres, que dias antes se viam como heróis da pátria, agora apareciam algemados, surpresos, chorando diante de câmeras.
A narrativa épica se dissolvia diante da realidade judicial.

E o país percebeu o quanto o fanatismo é silencioso antes de ser ensurdecedor.
Ninguém o vê crescer — até que já tomou a rua, a tela, o discurso, o coração.


🌪️ Curiosidades e Sintomas

  1. A Esplanada foi interditada, mas o caos migrou para o digital — hashtags viraram trincheiras.

  2. Museus e centros culturais começaram a discutir “a arte como resistência” — um renascimento simbólico após o choque.

  3. O turismo político cresceu: pessoas visitavam a Praça dos Três Poderes para “ver o lugar onde tudo caiu”.

  4. As universidades começaram a estudar o 8 de janeiro como um evento sociopsicológico — a “psicose coletiva do concreto”.

  5. E, curiosamente, aumentou o número de jovens interessados em política — talvez a geração que viu o abismo de perto.


🕊️ A Reconstrução Invisível
Os heróis dessa parte da história não estavam nas manchetes.
Eram os restauradores de obras rasgadas, os servidores que recolocaram arquivos no lugar,
os policiais que impediram o segundo ato,
os professores que transformaram a vergonha em lição,
e os jornalistas que contaram o que doía, mesmo sob insultos.

A reconstrução da democracia não veio com discurso.
Veio com mãos, com gestos, com paciência.
Como quem costura uma bandeira rasgada à luz de uma lamparina.


💭 Reflexão Bellacosa para o Padawan:
Toda nação tem um “8 de janeiro” guardado — o dia em que a ilusão da harmonia se quebra.
Mas é o que fazemos depois do espanto que define o futuro.
Não é o concreto que reconstrói o país.
É a memória.

“Os povos não aprendem com as ruínas — aprendem com o silêncio que vem depois.”


🌌 Epílogo: O Concreto Sonha
Brasília segue de pé, fria, geométrica, monumental.
Mas à noite, se você olhar bem, ainda verá algo no reflexo dos vidros:
não o fogo, nem a fumaça —
mas a lembrança do instante em que o país se olhou e não se reconheceu.


🕯️ Os dias depois do caos ensinaram que a democracia não é uma fortaleza —
é uma vela acesa no vento.
E cabe a cada um impedir que se apague.

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