Translate

Mostrar mensagens com a etiqueta Desenvolvimento de Software. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Desenvolvimento de Software. Mostrar todas as mensagens

sábado, 6 de julho de 2024

☕🚀 PADAWAN, YAML NÃO É LINGUAGEM DE PROGRAMAÇÃO. É A FICHA DE CADASTRO DO UNIVERSO DEVOPS!

 

Bellacosa Mainframe e a introdução a YAML

☕🚀 PADAWAN, YAML NÃO É LINGUAGEM DE PROGRAMAÇÃO. É A FICHA DE CADASTRO DO UNIVERSO DEVOPS!

Se você veio do mundo COBOL, JCL, PROC, PARMLIB, SYSIN, cartões perfurados, datasets sequenciais e arquivos de configuração gigantescos, provavelmente já esbarrou em um arquivo chamado:

application.yaml
docker-compose.yaml
kubernetes.yaml
pipeline.yaml

E talvez tenha pensado:

"Mas afinal... que diabos é YAML?"

Sente-se, pegue seu café e venha comigo.

Porque entender YAML hoje é quase tão importante para um desenvolvedor moderno quanto entender JCL era para um programador mainframe nos anos 80.


A HISTÓRIA DO YAML

YAML significa:

YAML Ain't Markup Language

Ou seja:

"YAML não é uma linguagem de marcação."

O nome é um trocadilho.

No início ele significava:

Yet Another Markup Language
(Mais uma linguagem de marcação)

Mas depois os criadores perceberam que YAML não era exatamente uma linguagem de marcação como XML.

Então mudaram para:

YAML Ain't Markup Language


QUANDO O YAML NASCEU?

O projeto surgiu em:

2001

Criado por:

  • Clark Evans

  • Ingy döt Net

  • Oren Ben-Kiki

O objetivo era simples:

Criar algo mais legível que XML.

Na época o XML dominava tudo.

Exemplo XML:

<cliente>
   <nome>João</nome>
   <idade>25</idade>
</cliente>

Os criadores pensaram:

"Por que tanta tag abrindo e fechando?"

Então nasceu YAML.


VERSÕES IMPORTANTES

YAML 1.0

2004

Primeira versão oficial.


YAML 1.1

2005

Mais recursos.

Maior adoção.


YAML 1.2

2009

Versão mais usada atualmente.

Compatibilidade melhor com JSON.


POR QUE O YAML FICOU TÃO POPULAR?

Porque ele resolveu um problema enorme:

Configurações.

Todo sistema precisa delas.

Antes tínhamos:

  • INI

  • XML

  • Properties

  • Arquivos texto

Mas YAML ficou muito mais fácil de ler.


PARA QUE SERVE O YAML?

Basicamente:

Armazenar configuração

Exemplo:

servidor:
  porta: 8080

banco:
  host: localhost

ONDE O YAML É UTILIZADO?

Hoje praticamente em todo lugar.


Kubernetes

Talvez o maior usuário de YAML do planeta.

apiVersion: v1
kind: Pod
metadata:
  name: meu-pod

Docker Compose

version: "3"

services:
  banco:
    image: mysql

Spring Boot

server:
  port: 8080

GitHub Actions

name: Build
on: push

GitLab CI

stages:
  - build
  - deploy

Ansible

- hosts: servidores

O YAML PARA UM COBOLISTA

Imagine um membro PARMLIB.

Por exemplo:

PORTA=8080
HOST=localhost

YAML faz algo semelhante.

Só que organizado hierarquicamente.

servidor:
  host: localhost
  porta: 8080

É como um PARMLIB muito mais moderno.


A REGRA MAIS IMPORTANTE DO YAML

Padawan...

A regra mais importante é:

ESPAÇOS

Não TAB.

Não misture.

Não invente.

Somente espaços.


EXEMPLO VÁLIDO

cliente:
  nome: João
  idade: 25

EXEMPLO INVÁLIDO

cliente:
<TAB>nome: João

Muitos erros acontecem por causa disso.


ESTRUTURA BÁSICA

Tudo gira em torno de:

chave : valor

nome: João

idade: 25

ativo: true

TIPOS DE DADOS

Texto

nome: Bellacosa

Número

idade: 50

Decimal

salario: 3500.99

Booleano

ativo: true

Nulo

valor: null

AGRUPAMENTOS

Podemos criar grupos.

cliente:
  nome: João
  idade: 25

Representa:

{
  "cliente":{
      "nome":"João",
      "idade":25
  }
}

LISTAS

Parecido com OCCURS.

linguagens:
  - COBOL
  - Java
  - Python

Equivale a:

[
 "COBOL",
 "Java",
 "Python"
]

LISTA DE OBJETOS

Muito usada.

funcionarios:

  - nome: João
    cargo: Programador

  - nome: Maria
    cargo: Analista

COMENTÁRIOS

Como no JCL usamos:

//*

No YAML usamos:

# comentário

Exemplo:

# porta da aplicação
porta: 8080

STRINGS

Pode ser:

nome: Bellacosa

Ou:

nome: "Bellacosa"

Ou:

nome: 'Bellacosa'

MULTILINHAS

Muito útil.

descricao: |
  Linha 1
  Linha 2
  Linha 3

Resultado:

Linha 1
Linha 2
Linha 3

EXEMPLO PRÁTICO SPRING BOOT

Imagine uma API Java.

Arquivo:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost/teste
    username: root
    password: 123

Quando a aplicação sobe:

  • Porta 8080

  • Banco MySQL

  • Usuário root

Tudo configurado via YAML.


EXEMPLO PRÁTICO DOCKER COMPOSE

version: '3'

services:

  mysql:
    image: mysql:8

  app:
    image: minha-api

Traduzindo:

"Suba dois containers"

  • MySQL

  • Aplicação


EXEMPLO PRÁTICO KUBERNETES

Aqui mora o YAML.

Praticamente tudo no Kubernetes é YAML.

apiVersion: v1

kind: Pod

metadata:
  name: bellacosa

spec:

  containers:
    - name: app
      image: nginx

Executa:

kubectl apply -f pod.yaml

E o cluster cria o pod.


COMANDOS IMPORTANTES

YAML em si não possui comandos.

Isso é importante.

Muitos iniciantes confundem.

YAML é apenas:

Estrutura de dados.

Os comandos pertencem à ferramenta.


Exemplo:

Docker:

docker compose up

Kubernetes:

kubectl apply -f arquivo.yaml

Ansible:

ansible-playbook playbook.yaml

GitHub:

Automaticamente lê:

.github/workflows/build.yaml

YAML E JSON

Você sabia?

Todo JSON válido pode ser convertido para YAML.


JSON:

{
  "nome":"João"
}

YAML:

nome: João

Muito mais limpo.


VANTAGENS

Legibilidade

A maior vantagem.


Fácil de aprender

Poucas regras.


Menos verboso

Muito menor que XML.


Hierarquia natural

A indentação mostra tudo.


Amplamente suportado

Praticamente todas as linguagens.


Excelente para DevOps

Docker

Kubernetes

GitHub

Ansible

Terraform

Tudo conversa com YAML.


DESVANTAGENS

Nem tudo são flores.


Sensível a espaços

Um espaço errado:

Tudo quebra.


Difícil para estruturas gigantes

Arquivos enormes viram labirintos.


Erros nem sempre claros

Às vezes o parser reclama na linha 200.

Mas o erro está na linha 30.


Não é ideal para dados complexos

JSON pode ser mais seguro.


ERROS CLÁSSICOS DE INICIANTES

Misturar TAB e espaço

Erro número 1.


Indentação incorreta

Errado:

cliente:
nome: João

Correto:

cliente:
  nome: João

Esquecer hífen em listas

Errado:

linguagens:
 COBOL
 JAVA

Correto:

linguagens:
 - COBOL
 - JAVA

LABORATÓRIO 1

Criar arquivo:

empresa:
  nome: Bellacosa Mainframe
  fundacao: 2024

Salvar:

empresa.yaml

LABORATÓRIO 2

Adicionar funcionários.

empresa:

  nome: Bellacosa Mainframe

  funcionarios:

    - nome: João
      cargo: Programador

    - nome: Maria
      cargo: Analista

LABORATÓRIO 3

Converter para JSON

Resultado:

{
  "empresa":{
    "nome":"Bellacosa Mainframe",
    "funcionarios":[
      {
        "nome":"João",
        "cargo":"Programador"
      },
      {
        "nome":"Maria",
        "cargo":"Analista"
      }
    ]
  }
}

YAML E COBOL

Imagine uma configuração externa.

Antes:

01 PARAMETROS.
   05 PORTA       PIC 9(4).
   05 HOST        PIC X(50).

Lendo de arquivo texto.

Hoje poderíamos ter:

aplicacao:
  host: localhost
  porta: 8080

Uma API Java poderia ler isso.

Uma aplicação Node.js também.

Um container Docker também.

Todos compartilhando o mesmo arquivo.


YAML NO MUNDO MAINFRAME

Muita gente acredita que YAML não tem relação com Mainframe.

Erro enorme.

Hoje encontramos YAML em:

  • OpenShift on Z

  • Kubernetes on IBM Z

  • z/OS Connect

  • IBM Cloud

  • Ansible Automation Platform

  • DevOps Enterprise


Imagine um pipeline CI/CD para COBOL:

stages:

  - build

  - test

  - deploy

Esse YAML pode controlar:

  • Compilação COBOL

  • Link Edit

  • Testes

  • Deploy

Tudo automaticamente.


ANALOGIA BELLACOSA MAINFRAME

Se eu tivesse que explicar YAML para um operador de mainframe dos anos 80, eu diria:

JCL diz O QUE EXECUTAR.

COBOL diz COMO PROCESSAR.

YAML diz COMO CONFIGURAR.

Ele é o formulário de configuração do ecossistema moderno.

Não executa lógica.

Não faz cálculo.

Não substitui COBOL.

Não substitui Java.

Não substitui Python.

Mas conecta todos eles.


CONCLUSÃO

Padawan...

Se nos anos 70 o profissional de tecnologia precisava entender:

  • JCL

  • PROCs

  • PARMLIB

  • SYSIN

Hoje o profissional moderno precisa entender:

  • YAML

  • Docker

  • Kubernetes

  • GitHub Actions

  • CI/CD

YAML tornou-se a linguagem universal da configuração.

Sua sintaxe minimalista, sua legibilidade e sua adoção massiva fizeram dele um dos formatos mais importantes da computação moderna.

E existe uma grande chance de que o próximo arquivo que você abrir em um projeto de nuvem, DevOps, containers, APIs ou automação tenha exatamente esta extensão:

.yaml

ou

.yml

Quando isso acontecer, não tenha medo.

Lembre-se desta regra:

"YAML é para o DevOps o que o PARMLIB foi para o Mainframe: um lugar onde a configuração mora para que o programa possa trabalhar."

E quando você dominar YAML, Kubernetes, Docker e automação, perceberá algo curioso:

O mercado mudou, as ferramentas mudaram, os nomes mudaram...

Mas a ideia continua a mesma desde os tempos do COBOL:

separar a configuração da lógica do programa.

Essa é uma das filosofias mais antigas, elegantes e duradouras da computação. 🚀☕💙


terça-feira, 2 de julho de 2024

☕💣 PADAWAN, O TERMINAL ACABOU DE GANHAR UMA CONSCIÊNCIA!

 

Bellacosa Mainframe o terminal acabou de ganhar consciencia

☕💣 PADAWAN, O TERMINAL ACABOU DE GANHAR UMA CONSCIÊNCIA!

A Evolução da IA Generativa Explicada para um Desenvolvedor COBOL

Se você é um desenvolvedor COBOL, provavelmente já viveu várias revoluções tecnológicas.

Você viu:

  • Cartões perfurados virarem JCL.

  • Terminais 3270 substituírem processos manuais.

  • CICS revolucionar o processamento online.

  • DB2 transformar o armazenamento corporativo.

  • Internet chegar ao mundo mainframe.

  • APIs REST invadirem ambientes z/OS.

  • Cloud tentar substituir tudo (e descobrir que o mainframe continua vivo).

Agora estamos diante de mais uma transformação:

A Inteligência Artificial Generativa.

E talvez você esteja se perguntando:

"Mas afinal, o que isso tem a ver comigo?"

A resposta é:

Muito mais do que parece.


A História Começou Muito Antes do ChatGPT

Quando as pessoas ouvem falar de IA Generativa, imaginam algo surgido em 2022.

Mas a história começou décadas atrás.


Década de 1950

Alan Turing propõe uma pergunta:

"As máquinas podem pensar?"

Nascia a computação moderna.

Enquanto isso, os ancestrais do mainframe já estavam surgindo.


Década de 1960

Pesquisadores começam a criar sistemas especialistas.

A ideia era simples:

SE condição
ENTÃO ação

Parece familiar?

Praticamente um IF COBOL.


Década de 1980

Surgem as primeiras redes neurais modernas.

O problema?

Faltava poder computacional.

Imagine executar um treinamento de IA num IBM 3090.

Não era impossível.

Era economicamente inviável.


O Mundo Mudou em Três Etapas

A IA moderna nasceu da combinação de três fatores.


1. Dados

Internet.

Redes sociais.

Documentos digitais.

Logs.

Vídeos.

Fotos.

PDFs.

Código-fonte.

O mundo passou a gerar dados em escala absurda.


2. Hardware

GPUs.

Inicialmente criadas para jogos.

Depois descobriram:

"Essas placas são excelentes para matemática paralela."

Foi um divisor de águas.


3. Algoritmos

A terceira peça surgiu em 2017.

Um artigo mudou tudo.

Chamava-se:

Attention Is All You Need

Ali nasceu o Transformer.

A arquitetura usada até hoje.


O Que é um LLM?

LLM significa:

Large Language Model

Modelo de Linguagem de Grande Escala.

Pense nele como um gigantesco programa que aprendeu padrões de linguagem.


Uma Analogia Mainframe

Imagine um programador COBOL com:

  • 50 anos de experiência

  • acesso a bilhões de livros

  • milhões de programas

  • milhões de manuais

Ele leu tudo.

Memorizou padrões.

Mas não decorou respostas.

Aprendeu relacionamentos.

É isso que um LLM faz.


Como um LLM Aprende?

Durante o treinamento ele recebe frases como:

O céu é azul.

Depois:

O céu é _____

Ele tenta prever.

azul

Acerta?

Ganha pontos.

Erra?

Ajusta os pesos internos.

Repete isso trilhões de vezes.


O Conceito de Tokens

Para um COBOLista, pense assim:

O computador não vê palavras.

Ele vê tokens.

Exemplo:

MAINFRAME

Pode virar:

MAIN
FRAME

ou

MAINFRAME

dependendo do modelo.

Tudo é quebrado em pedaços.


O Que é um Prompt?

Prompt é simplesmente a entrada.

Como um SYSIN.

Exemplo:

GERAR RELATORIO

é o equivalente moderno de:

//SYSIN DD *
GERAR RELATORIO
/*

A IA executa baseada no que você fornece.


A Evolução dos Prompts

No início as pessoas escreviam:

Faça uma newsletter.

Resultado ruim.

Depois descobriram:

Você é um especialista em comunicação interna.

Objetivo:
Criar uma newsletter.

Formato:
Resumo executivo
Benefícios
CTA

Resultado muito melhor.


O Nascimento da Engenharia de Prompt

Surge então uma nova disciplina:

Prompt Engineering.

Basicamente:

Como conversar corretamente com uma IA.


O Que é um Agente?

Aqui a coisa fica interessante.

Um LLM sozinho apenas responde.

Um Agente faz mais.


Exemplo

Você pede:

Faça um relatório de vendas.

O agente:

  1. Consulta banco.

  2. Busca arquivos.

  3. Faz cálculos.

  4. Gera gráficos.

  5. Cria PDF.

Tudo sozinho.


Analogia Mainframe

Pense num JOB.

STEP01 EXTRAI
STEP02 ORDENA
STEP03 CALCULA
STEP04 IMPRIME

Um agente é parecido.

Só que decide sozinho qual STEP executar.


O Que é RAG?

Outra sigla importante.

RAG:

Retrieval Augmented Generation

Sem RAG:

A IA responde usando o treinamento.


Com RAG:

A IA consulta documentos antes de responder.


Imagine:

Manual CICS
Manual DB2
Normas RACF

O sistema consulta esses documentos.

Depois responde.


Como Instalar Seu Ambiente

Hoje existem três caminhos.


Caminho 1 - Usar Serviços Prontos

Mais fácil.

Exemplos:

  • ChatGPT

  • Claude

  • Gemini

Nenhuma instalação.


Caminho 2 - Rodar Localmente

Você baixa um modelo.

Exemplos:

  • Llama

  • Mistral

  • Gemma

  • Qwen

Ferramentas:

  • Ollama

  • LM Studio


Instalação do Ollama

Windows:

winget install Ollama.Ollama

Linux:

curl -fsSL https://ollama.com/install.sh | sh

Executar:

ollama run llama3

Pronto.

Você já possui uma IA local.


Caminho 3 - APIs

Modelo mais usado por empresas.

Você envia:

{
 "prompt":"Explique COBOL"
}

Recebe:

{
 "resposta":"..."
}

Como Funciona Internamente?

Imagine um programa COBOL.


Entrada:

Explique VSAM.

O modelo transforma isso em números.

Milhares deles.


Esses números passam por centenas de camadas matemáticas.


Cada camada calcula probabilidades.


No final:

VSAM é...

surge token por token.


Por Que Parece Inteligente?

Porque o modelo aprendeu padrões absurdamente complexos.

Mas atenção.

Ele não pensa.

Ele prevê.


Da mesma forma que um SORT organiza registros.

O modelo organiza probabilidades.


Como Evoluir Como Desenvolvedor?

Primeiro erro:

Quero criar uma IA.

Não.

Comece usando IA.


Fase 1

Aprenda prompts.

Exercícios:

  • Resumos

  • Documentação

  • SQL

  • COBOL


Fase 2

Aprenda APIs.

Exemplo:

from openai import OpenAI

Fase 3

Aprenda RAG.

Conecte:

  • PDFs

  • Manuais

  • Wikis


Fase 4

Aprenda Agentes.

Ferramentas:

  • N8N

  • LangChain

  • CrewAI

  • OpenAI Agents


Fase 5

Crie Soluções Reais

Exemplos:

  • Assistente JCL

  • Assistente RACF

  • Assistente DB2

  • Gerador de documentação COBOL

  • Conversor COBOL → API


Oportunidades para Mainframe

Pouca gente percebe.

Mas o mercado precisa desesperadamente de IA para ambientes legados.


Exemplo 1

Análise automática de programas COBOL.


Exemplo 2

Documentação automática.


Exemplo 3

Mapeamento de dependências.


Exemplo 4

Explicação de JCL.


Exemplo 5

Geração de testes.


Como Criar Sua Própria Solução

Método simples.


Passo 1

Escolha um problema.

Exemplo:

Explicar programas COBOL antigos.

Passo 2

Colete conhecimento.

Exemplo:

Manuais
Normas
Fontes COBOL

Passo 3

Construa um RAG.


Passo 4

Crie prompts.


Passo 5

Automatize.

Use:

  • N8N

  • Python

  • APIs


O Futuro

Estamos apenas no começo.

A evolução foi:

Dados
↓
Informação
↓
Sistemas
↓
Internet
↓
Cloud
↓
IA Generativa
↓
Agentes
↓
Sistemas Autônomos

Da mesma forma que o COBOL não morreu porque resolve problemas reais, a IA também não substituirá tudo.

O que está acontecendo é a criação de uma nova camada de produtividade.


Conclusão

Para um desenvolvedor COBOL, a IA Generativa não é um inimigo.

Ela é semelhante ao que CICS foi para o processamento online, ao que DB2 foi para os bancos relacionais ou ao que o z/OS Connect é para APIs modernas.

A diferença é que agora a matéria-prima não são registros, arquivos VSAM ou tabelas DB2.

A matéria-prima é conhecimento.

Quem já entende processos corporativos, regras de negócio, integração de sistemas e décadas de experiência acumulada possui uma enorme vantagem. A IA sabe gerar texto, código e documentação. O profissional de mainframe sabe como as empresas realmente funcionam.

E essa combinação pode criar algo extremamente poderoso: agentes inteligentes capazes de conversar com sistemas legados, documentar aplicações, acelerar modernizações e preservar conhecimentos que hoje estão presos em milhões de linhas de COBOL espalhadas pelo mundo.

☕💣 O operador do futuro não será apenas quem executa jobs. Será quem ensinará agentes de IA a entender os jobs que mantêm o mundo funcionando.


sábado, 15 de fevereiro de 2014

🚀 Python Essencial em uma página: o “manual secreto” que transforma iniciantes em programadores perigosamente produtivos

Bellacosa Mainframe apresenta Python Essencial para Padawans


 🚀 Python Essencial em uma página: o “manual secreto” que transforma iniciantes em programadores perigosamente produtivos

Python é uma das linguagens de programação mais populares do mundo, amplamente utilizada em Inteligência Artificial, Data Science, automação e desenvolvimento de software. 

Seu sucesso se deve à sintaxe simples, legibilidade e poderosa coleção de bibliotecas que aceleram a criação de aplicações modernas. 

Um cheatsheet de Python essencial reúne os principais conceitos que todo iniciante ou profissional precisa dominar: variáveis, tipos de dados, listas, tuplas, dicionários, conjuntos, operadores, condicionais, loops, funções, tratamento de erros, orientação a objetos e manipulação de arquivos. 

Esses fundamentos permitem escrever código eficiente, reutilizável e fácil de manter. Python também é ideal para quem vem de linguagens tradicionais, pois reduz a complexidade e aumenta a produtividade. 

Presente em áreas como análise de dados, web, finanças, ciência e automação corporativa, aprender Python básico é o primeiro passo para construir soluções escaláveis e acompanhar as demandas do mercado tecnológico atual.

🐍 Python Essencial — Cheatsheet Visual

🧠 Variáveis e Tipos

x = 10 # int
y = 3.14 # float
nome = "Ana" # string
ativo = True # boolean

👉 Python é dinamicamente tipado (sem PIC, sem declaração).


📦 Estruturas de Dados

📚 List (mutável)

lista = [1, 2, 3]
lista.append(4)
lista[0] = 10

✔ Ordenada
✔ Permite duplicados
✔ Mutável


🔒 Tuple (imutável)

tupla = (1, 2, 3)
print(tupla[0])

✔ Ordenada
✔ Imutável
✔ Mais rápida que list


🗂️ Dictionary (chave → valor)

pessoa = {"nome": "Ana", "idade": 30}

print(pessoa["nome"])
pessoa["cidade"] = "SP"

✔ Similar a tabela indexada
✔ Chaves únicas


🎯 Set (valores únicos)

s = {1, 2, 2, 3}
print(s) # {1, 2, 3}

✔ Sem duplicatas
✔ Sem ordem


🔎 Indexação e Fatiamento

texto = "Python"

texto[0] # P
texto[-1] # n
texto[0:3] # Pyt

👉 Muito usado em Data Science.


⚖️ Operadores

Comparação

== != > < >= <=

Lógicos

and
or
not

🔀 Condições (Branching)

idade = 18

if idade >= 18:
print("Adulto")
elif idade >= 13:
print("Adolescente")
else:
print("Criança")

👉 Fluxo decisório do programa.


🔁 Loops

🔄 For

for i in range(3):
print(i)

Saída:

0
1
2

📦 For em coleção

for fruta in ["maçã", "banana"]:
print(fruta)

🔢 Enumerate (índice + valor)

for i, v in enumerate(["A", "B"]):
print(i, v)

⏳ While

x = 0

while x < 3:
print(x)
x += 1

🧩 Funções

def soma(a, b):
return a + b

print(soma(2, 3))

✔ Reutilização
✔ Modularidade


📏 Funções embutidas importantes

len([1,2,3]) # 3
sum([1,2,3]) # 6
sorted([3,1,2]) # [1,2,3]

⚠️ Tratamento de Erros

try:
x = int("abc")
except ValueError:
print("Erro de conversão")
else:
print("Tudo OK")
finally:
print("Fim")

👉 Evita crash do programa.


🧱 Classes e Objetos

class Pessoa:
def __init__(self, nome):
self.nome = nome

p = Pessoa("Ana")
print(p.nome)

✔ OOP
✔ Encapsulamento


🔧 Métodos

class Conta:
def __init__(self, saldo):
self.saldo = saldo

def depositar(self, valor):
self.saldo += valor

📂 Manipulação de Arquivos

with open("dados.txt", "r") as f:
conteudo = f.read()

🚀 Comandos extremamente úteis

Converter tipos

int("10")
float("3.5")
str(100)

Ver tipo

type(x)

Ajuda

help(len)

💻 Mentalidade Mainframe → Python

COBOL

DATA DIVISION + PROCEDURE DIVISION

Python

Dados + Lógica + Scripts + Objetos

👉 Muito mais direto.


🧠 Regra de Ouro

Python favorece legibilidade > complexidade

🔥 Frase lendária

👉 Python é a linguagem que transforma ideias em software antes do café esfriar. ☕


quarta-feira, 7 de janeiro de 2009

🧠 Agile e Scrum : Do batch noturno ao sprint quinzenal

 

Bellacosa Mainframe em um projeto Agile Scrum 

🧠 Agile e Scrum

Do batch noturno ao sprint quinzenal — uma conversa franca de mainframeiro

“Agile não nasceu para matar o mainframe.
Nasceu para sobreviver ao mundo fora dele.”

— Bellacosa (provavelmente reclamando de um status meeting)


📜 Origem: quando o Waterfall começou a dar abend

Antes de Agile virar buzzword em slide corporativo, o mundo vivia sob o Waterfall:
analisa tudo → projeta tudo → codifica tudo → testa tudo → entrega tudo.

Funcionava…
👉 até o requisito mudar no meio do caminho.

No mainframe, isso era tolerável porque:

  • sistemas eram estáveis

  • mudanças eram raras

  • o batch rodava à noite e ninguém mexia

Fora do CPD, o mundo começou a mudar rápido demais.

📅 2001 – O nascimento oficial do Agile

Em fevereiro de 2001, 17 desenvolvedores se reuniram em Utah (EUA) e escreveram o Manifesto Ágil.

📌 Easter egg histórico:
Nenhum deles falava em ferramenta, framework ou certificado.
Falavam de pessoas, colaboração e adaptação.


🔁 Scrum: o JES2 do Agile

Scrum não é metodologia.
Scrum é framework.

Assim como:

  • JCL não é aplicação

  • JES não é programa

  • ISPF não escreve código

Scrum organiza o fluxo, mas não faz o trabalho por você.

📅 Scrum “oficial”

  • Conceito inicial: 1986 (Takeuchi & Nonaka)

  • Consolidação moderna: anos 1990

  • Popularização absurda: 2010+ (quando começaram a estragar)


👥 Papéis do Scrum (tradução para mainframeiro)

  • Product Owner
    👉 Dono do requisito, como o usuário que assina o change

  • Scrum Master
    👉 Um misto de operador experiente + analista que tira impedimento do caminho

  • Time
    👉 Quem realmente faz o sistema funcionar (igual sempre foi)

📌 Fofoquinha:
Em muitas empresas, o Scrum Master vira “chefe disfarçado”.
Isso quebra o Scrum mais rápido que DELETE sem backup.


🧩 User Story: o novo requisito funcional

User Story é simples:

Como <usuário>, quero <objetivo>, para <valor>.

Se você já escreveu:

  • especificação funcional

  • descrição de programa

  • comentário de COBOL bem feito

👉 você já sabe escrever user story.

💡 Dica Bellacosa

User story grande demais é como JOB com 200 steps:
ninguém entende, ninguém testa, ninguém confia.


📊 Story Points: estimar sem mentir

Story Point não é hora, não é dia, não é prazo.

É:

  • complexidade

  • risco

  • esforço relativo

📌 Easter egg Agile:
Times ruins transformam story point em hora escondida.
Times bons usam para prever, não para cobrar.


🗂️ Backlog e Kanban: o SDSF do projeto

O Product Backlog é a fila do sistema.
O Kanban Board é o painel:

  • To Do

  • In Progress

  • Done

👉 Igual SDSF:

  • você vê o que está rodando

  • o que está esperando

  • o que terminou

💡 Dica prática

Se tudo fica em “In Progress”, o problema não é Agile.
É falta de limite de WIP (Work in Progress).


📉 Burndown Chart: o SMF do Sprint

Burndown chart mostra:

  • quanto trabalho falta

  • se o sprint fecha

  • se alguém mentiu na estimativa

📌 Curiosidade:
Scrum não manda “bater meta”.
Ele apenas mostra a realidade.
Quem não gosta do gráfico geralmente não gosta da verdade.


🧪 Execução diária: o batch agora é contínuo

Daily Stand-up

  • Não é reunião de status

  • Não é para gerente

  • Não passa de 15 minutos

👉 É para sincronizar o time, como um checkpoint lógico.

Sprint Review

  • Mostra o que foi entregue

  • Não é teatro

Retrospective

  • Onde o time melhora

  • Onde a política costuma atrapalhar


🛠️ Ferramentas modernas (com cheiro de CPD)

  • GitHub
    Versionamento, issues, colaboração
    👉 o novo Librarian/Endevor

  • ZenHub
    Agile sobre o GitHub
    👉 backlog, sprint, burndown

  • Boards nativos do GitHub
    Simples, mas funcionais

📌 Fofoquinha de bastidor:
Empresa que compra ferramenta antes de mudar cultura
só troca Waterfall por Agile fake.


🎓 Curso IBM – Quando a teoria encontra a prática

O curso Introduction to Agile Development and Scrum (IBM):

📅 Lançamento: década de 2020
🎯 Público: iniciantes
🧠 Abordagem: prática, direta, sem romantismo

Inclui:

  • Agile

  • Scrum

  • Kanban

  • GitHub

  • ZenHub

  • Projeto final completo

Faz parte do IBM DevOps and Software Engineering Professional Certificate.


🧠 Dicas Bellacosa (aprendidas na dor)

✔ Agile não acelera time ruim
✔ Scrum não salva projeto sem dono
✔ Ferramenta não substitui disciplina
✔ Daily não resolve problema estrutural
✔ Retrospective ignorada vira reunião inútil


🥚 Easter Eggs para quem veio do mainframe

  • Agile é iterativo como release de sistema legado

  • Sprint é mini-release controlado

  • Burndown é SMF emocional do time

  • Kanban é SDSF com post-it

  • Waterfall é batch eterno sem restart


🎯 Conclusão: Agile não é moda, é sobrevivência

O mainframe sobreviveu porque:

  • era estável

  • era disciplinado

  • evoluía sem quebrar

Agile sobrevive pelo mesmo motivo.

👉 Quem entende mainframe entende Agile mais rápido do que imagina.

No fim, muda a ferramenta.
Muda o ritmo.
Mas a verdade continua a mesma:

Sistema bom é aquele que entrega valor
sem acordar ninguém de madrugada.

— Bellacosa Mainframe ☕💾


💾 Resumo Para ir mais longe

A evolução do desenvolvimento de software pode ser comparada à transição do tradicional batch noturno dos mainframes para os modernos ambientes de entrega contínua. Durante décadas, projetos eram conduzidos por modelos rígidos, com longos ciclos de análise, desenvolvimento, testes e implantação. Embora eficientes para sua época, essas abordagens tinham dificuldades para lidar com mudanças frequentes de requisitos.

Foi nesse cenário que surgiram os conceitos de Agile e, posteriormente, o framework Scrum. Baseados no Manifesto Ágil de 2001, esses métodos priorizam colaboração, adaptação, entregas frequentes e foco no valor para o cliente. Em vez de esperar meses ou anos por uma versão completa, as equipes passam a trabalhar em ciclos curtos chamados sprints, entregando incrementos funcionais do produto regularmente.

O Scrum organiza o trabalho por meio de elementos como Product Backlog, Sprint Backlog, Daily Meeting, Sprint Review e Retrospective, promovendo transparência e melhoria contínua. Curiosamente, muitos profissionais de mainframe percebem que conceitos como planejamento rigoroso, controle de mudanças e confiabilidade operacional continuam relevantes mesmo no universo ágil.

Hoje, Agile e Scrum são amplamente utilizados em empresas de todos os portes, integrando-se a práticas como DevOps, automação e cloud computing. O objetivo permanece o mesmo: entregar software de qualidade com rapidez, eficiência e capacidade de adaptação às necessidades do negócio.