| Bellacosa Mainframe e a yak shaving rules |
☕ Um Café no Bellacosa Mainframe
Yak Shaving Rules sem Mistérios
Quando um Programador COBOL Entrou na Matrix para Corrigir um Bug... e Quase Reinventou Todo o Sistema
"Você entrou na Matrix para resolver um problema. Mas antes decidiu atualizar o compilador, reorganizar os COPYBOOKs, trocar o editor, renomear variáveis, revisar o JCL... e esqueceu qual era o problema."
Introdução — Bem-vindo ao Labirinto da Matrix
A chuva verde de caracteres desce lentamente pelas telas.
Neo observa uma pequena mensagem piscando em vermelho.
ABEND S0C7
— Morpheus, encontramos o problema?
Morpheus responde calmamente:
— Ainda não.
Neo estranha.
— Mas acabamos de passar oito horas trabalhando.
Morpheus sorri.
— Sim.
Você atualizou o ambiente.
Padronizou os comentários.
Organizou as bibliotecas.
Criou um novo padrão de nomenclatura.
Instalou uma versão mais nova do editor.
Revisou o JCL.
Atualizou o Git.
Refatorou um programa que nem estava relacionado.
Criou documentação.
Mudou o tema do ISPF.
...
Mas o ABEND continua acontecendo.
Neo olha assustado.
— Então o que aconteceu?
O Oráculo responde:
"Você começou a aparar um iaque."
Assim nasce um dos conceitos mais curiosos da Engenharia de Software.
O famoso Yak Shaving.
Ele parece engraçado.
Mas custa milhões de dólares por ano em produtividade desperdiçada.
O que é Yak Shaving?
Yak Shaving significa:
Executar uma longa sequência de tarefas secundárias antes de finalmente resolver o problema original.
Você começa tentando resolver um problema simples.
No caminho encontra outro.
Depois outro.
Depois outro.
Quando percebe...
esqueceu completamente o motivo inicial.
Uma definição divertida
Imagine que alguém diga:
"Preciso cortar o cabelo."
Mas para cortar o cabelo precisa:
pegar o carro
abastecer
trocar o óleo
lavar o carro
calibrar pneus
renovar o seguro
comprar um GPS novo
instalar aplicativo
atualizar o celular
No final do dia...
o cabelo continua igual.
Isso é Yak Shaving.
A origem do termo
O nome surgiu na década de 1990.
Foi popularizado por Carlin Vieri e posteriormente difundido por MIT AI Lab e por programadores da comunidade Unix.
A inspiração veio de uma piada do humorista Ren & Stimpy.
A ideia era mostrar uma sequência absurda de tarefas onde uma ação aparentemente simples leva a dezenas de outras completamente inesperadas.
Desde então, Yak Shaving virou um termo clássico na Engenharia de Software.
Por que "Yak"?
Porque um iaque é um enorme bovino peludo do Himalaia.
A piada consiste justamente em imaginar alguém que precisa raspar um iaque antes de conseguir fazer outra tarefa completamente diferente.
É uma imagem absurda.
E exatamente por isso funciona tão bem.
Matrix explica perfeitamente
Imagine que Neo recebe uma missão.
Corrigir um programa COBOL responsável pelo cálculo do imposto.
Parece simples.
Mas então...
Missão 1
"Vou abrir o programa."
Antes...
precisa atualizar o editor.
Missão 2
Editor atualizado.
Agora percebe que o compilador está antigo.
Missão 3
Atualiza o compilador.
Agora alguns COPYBOOKs ficaram incompatíveis.
Missão 4
Atualiza COPYBOOKs.
Agora resolve reorganizar toda a biblioteca.
Missão 5
Aproveita para mudar o padrão dos nomes.
Missão 6
Já que mudou nomes...
resolve atualizar a documentação.
Missão 7
Agora cria diagramas.
Missão 8
Descobre que seria interessante migrar para GitFlow.
Missão 9
Aproveita para atualizar Jenkins.
Missão 10
O dia termina.
O bug original?
Continua lá.
O Agente Smith agradece.
Como nasce o Yak Shaving?
Geralmente começa assim.
"Já que estou aqui..."
Essa talvez seja a frase mais perigosa da Engenharia de Software.
"Já que estou neste programa..."
"Já que estou nesta rotina..."
"Já que estou compilando..."
"Já que estou mexendo..."
...
Horas depois...
o objetivo inicial desapareceu.
Exemplo COBOL
O usuário informou:
Cliente não consegue emitir boleto.
Problema simples.
Mas o desenvolvedor pensa:
"Vou aproveitar."
Então decide:
reorganizar WORKING-STORAGE
padronizar comentários
alinhar colunas
renomear variáveis
trocar GO TO por PERFORM
atualizar COPYBOOK
reorganizar PROCEDURE DIVISION
alterar indentação
Resultado?
O boleto continua sem funcionar.
O cérebro gosta disso
Curiosamente...
Yak Shaving é confortável.
Resolver tarefas pequenas produz sensação de progresso.
É muito mais agradável organizar nomes de variáveis do que investigar um erro complexo.
Nosso cérebro adora pequenas vitórias.
Por isso caímos nessa armadilha.
O problema real continua esperando
Enquanto você reorganiza detalhes...
o cliente continua parado.
O banco continua sem processar pagamentos.
O lote continua falhando.
O incidente continua aberto.
A diferença entre Yak Shaving e Refatoração
Muita gente confunde.
Não são iguais.
Refatoração
Melhora código relacionado ao problema.
Tem objetivo claro.
Entrega valor.
Yak Shaving
Executa dezenas de tarefas paralelas sem necessidade imediata.
Aumenta tempo.
Não resolve o problema principal.
Existe Yak Shaving bom?
Sim.
Às vezes.
Imagine.
Você precisa alterar um programa.
Antes percebe:
biblioteca corrompida
ambiente quebrado
compilador incompatível
Corrigir isso não é Yak Shaving.
É pré-requisito.
O segredo está na pergunta:
Essa atividade aproxima ou afasta da solução?
Matrix Reloaded
Na Matrix existe um personagem fascinante.
O Arquiteto.
Ele entende toda a estrutura.
Um bom arquiteto de software também evita Yak Shaving.
Porque consegue separar:
necessário
de
interessante.
Nem tudo que é interessante precisa ser feito agora.
Como identificar Yak Shaving?
Faça uma pergunta simples.
"Estou fazendo isso porque resolve o problema ou porque surgiu oportunidade?"
Se a resposta for:
"Já que estou aqui..."
acenda um alerta.
O Programador Padawan
Todo iniciante passa por isso.
Recebe um pequeno chamado.
Vai investigar.
Três horas depois está lendo documentação sobre VSAM RLS.
Cinco horas depois aprende DFSORT.
Sete horas depois instala uma nova fonte no VS Code.
No dia seguinte...
descobre que o problema era:
IF CPF = SPACES
O efeito dominó
Yak Shaving possui um comportamento interessante.
Cada nova tarefa gera outra.
Por exemplo.
Corrigir documentação.
↓
Descobre padrão antigo.
↓
Atualiza modelo.
↓
Percebe que Wiki está desorganizada.
↓
Resolve reorganizar Wiki.
↓
Atualiza links.
↓
Cria templates.
↓
Muda identidade visual.
↓
...
O problema inicial desapareceu.
Os Agentes Smith adoram Yak Shaving
Na Matrix, Smith cresce distraindo Neo.
No desenvolvimento acontece igual.
Quanto mais tarefas paralelas surgem...
menos energia sobra para o problema verdadeiro.
Smith não precisa impedir você.
Basta manter você ocupado.
Gestão de Projetos
Em projetos grandes isso custa caro.
Imagine uma Sprint de duas semanas.
Uma tarefa estimada em:
8 horas.
Após Yak Shaving.
Consome:
32 horas.
Ninguém entende por quê.
Na verdade...
o desenvolvedor trabalhou bastante.
Só trabalhou nas coisas erradas.
Como gestores combatem isso?
Scrum Masters fazem perguntas importantes.
Qual é o objetivo?
Essa atividade agrega valor?
Está no escopo?
Quem pediu?
É prioridade?
Pode esperar?
Essas perguntas quebram o ciclo.
Técnicas para evitar Yak Shaving
Defina objetivo claro
Antes de abrir o editor escreva:
"Hoje vou corrigir o cálculo do IOF."
Nada além disso.
Use lista de estacionamento
Encontrou outra melhoria?
Anote.
Não faça agora.
Time Boxing
Reserve tempo.
Exemplo:
90 minutos.
Depois reavalie.
Trabalhe por prioridade
Cliente primeiro.
Curiosidade depois.
Faça pequenas entregas
Entregas frequentes diminuem distrações.
Atenção!
Existe uma diferença enorme entre:
Melhorar
e
Perfeccionismo.
Perfeccionismo muitas vezes é Yak Shaving disfarçado.
Os perigos
Atrasos
Cronograma explode.
Retrabalho
Mudanças desnecessárias geram novos bugs.
Escopo infinito
Projeto nunca termina.
Burnout
Equipe trabalha muito.
Entrega pouco.
Perda de foco
Objetivo desaparece.
Um exemplo clássico no Mainframe
Chamado:
Alterar mensagem do CICS.
Durante a alteração:
Atualiza BMS.
↓
Atualiza mapa.
↓
Padroniza cores.
↓
Renomeia campos.
↓
Refatora tratamento.
↓
Atualiza transações.
↓
Altera HELP.
↓
Reorganiza COPYBOOK.
↓
Atualiza manual.
↓
Muda nomenclatura.
↓
Novo teste.
↓
Novo Build.
↓
Nova homologação.
↓
Duas semanas depois...
A mensagem ainda não mudou.
Como o Oráculo resolveria?
Ela perguntaria apenas:
"O que realmente precisa acontecer?"
Essa pergunta elimina metade do Yak Shaving.
Aplicabilidade
Conhecer Yak Shaving ajuda em:
COBOL
CICS
Db2
DevOps
Cloud
IA
Engenharia de Dados
Projetos Ágeis
Infraestrutura
Segurança
Na verdade...
qualquer área técnica sofre com isso.
Curiosidades
Grandes empresas treinam desenvolvedores para reconhecer Yak Shaving.
Google possui diversas palestras internas sobre foco.
Microsoft fala sobre "Task Switching".
IBM enfatiza planejamento incremental.
Todas estão combatendo exatamente o mesmo problema.
O Checklist Anti-Yak
Antes de começar pergunte:
✅ Isso resolve o problema principal?
✅ O cliente percebe valor?
✅ Está dentro da Sprint?
✅ É realmente necessário agora?
✅ Posso anotar para depois?
Se respondeu "não" para a maioria...
provavelmente um iaque está esperando por você.
O Ensinamento de Morpheus
Morpheus entrega a Neo uma última mensagem.
"A Matrix não vence apenas pela força.
Ela vence pela distração."
Na Engenharia de Software acontece exatamente igual.
Poucos projetos fracassam porque seus desenvolvedores são incompetentes.
Muitos fracassam porque perderam o foco.
Lições para um Programador COBOL Padawan
Ao trabalhar em um sistema legado, é comum encontrar dezenas de oportunidades de melhoria. Um COPYBOOK poderia ser reorganizado, uma variável poderia ter um nome melhor, um programa poderia ser dividido em módulos menores, um JCL poderia ser simplificado. Tudo isso tem valor — mas nem tudo tem prioridade.
O verdadeiro profissional aprende a distinguir entre o trabalho importante e o trabalho interessante. Resolver o incidente que impede milhares de clientes de realizar uma transação é mais importante do que reorganizar comentários em um programa que funciona perfeitamente. As melhorias devem ser registradas, planejadas e executadas no momento adequado, não durante uma correção crítica.
Conclusão — Saindo da Matrix
No final de sua jornada, Neo compreende que a Matrix não era apenas um sistema de controle, mas também um sistema de distrações. Na Engenharia de Software, o Yak Shaving desempenha exatamente esse papel: cria uma sequência aparentemente lógica de tarefas secundárias que afastam a equipe do objetivo principal.
Para um Programador COBOL, especialmente em ambientes IBM Z onde cada alteração pode impactar processos críticos de bancos, seguradoras ou governos, manter o foco é uma habilidade tão importante quanto dominar a linguagem. Antes de iniciar qualquer atividade, pergunte a si mesmo:
Isso resolve o problema do cliente?
Isso agrega valor agora?
Estou caminhando em direção à solução ou apenas aparando um iaque?
Se a resposta indicar que você está entrando em um labirinto de tarefas paralelas, faça como Neo ao enxergar o código da Matrix: pare, respire, volte ao objetivo original e siga pelo caminho mais direto. Afinal, os melhores engenheiros não são aqueles que fazem mais coisas, mas aqueles que resolvem as coisas certas, no momento certo, com a menor complexidade possível. Esse é o verdadeiro caminho para escapar da Matrix do Yak Shaving e construir software que realmente faz diferença.