| Bellacosa Mainframe e as 20 leis secretas da Engenharia do Software |
☕ Um Café no Bellacosa Mainframe
As 20 Leis Secretas da Matrix da Engenharia de Software - Bizarres Rules
O Guia do Programador COBOL Padawan para Sobreviver ao Universo dos Sistemas Legados Sem Ser Absorvido pelo Agente Smith
"Existem duas maneiras de aprender Engenharia de Software. A primeira é passando vinte anos corrigindo bugs em produção. A segunda é ouvindo aqueles que já passaram por isso. Este artigo tenta economizar duas décadas da sua vida."
Bem-vindo à Matrix, Padawan
Imagine a seguinte cena.
Você acabou de conseguir seu primeiro emprego como Programador COBOL.
Recebe acesso ao ambiente.
TSO.
ISPF.
CICS.
Db2.
JCL.
Tudo parece misterioso.
Então seu líder aponta para um programa com 180 mil linhas de código.
Ele sorri.
— Pequena manutenção.
Você abre o código.
O ventilador do computador começa a girar mais rápido.
Sua expressão muda.
Você pergunta:
— Quem escreveu isso?
A resposta vem imediatamente.
— Ninguém sabe.
Naquele instante o telefone toca.
É Morpheus.
— Neo... digo... Padawan...
Bem-vindo à Matrix da Engenharia de Software.
Existe um lado oculto da programação
Quando começamos a estudar programação, aprendemos:
IF
PERFORM
LOOP
SQL
APIs
Arquivos
Variáveis
Mas ninguém ensina algo muito mais importante.
Os padrões invisíveis.
Os comportamentos humanos.
Os erros que se repetem geração após geração.
As armadilhas psicológicas.
As decisões arquiteturais.
Essas "leis" não pertencem ao COBOL.
Nem ao Java.
Nem ao Python.
Elas pertencem à natureza humana.
E é justamente por isso que continuam válidas há décadas.
A Matrix é feita de padrões
No filme Matrix, Neo acredita que tudo acontece por acaso.
Depois descobre que existem regras invisíveis governando aquele universo.
Na Engenharia de Software acontece exatamente a mesma coisa.
Você acha que aquele sistema virou um caos "do nada".
Não virou.
Ele seguiu um padrão.
Sempre segue.
O Oráculo chama isso de experiência
Imagine o Oráculo olhando para um jovem desenvolvedor.
Ela não pergunta:
— Você sabe COBOL?
Ela pergunta:
— Quantas vezes você já viu um sistema quebrar exatamente da mesma forma?
Porque experiência não é decorar comandos.
É reconhecer padrões.
Conheça as 20 Leis Secretas da Matrix da Engenharia de Software
Cada uma delas parece engraçada.
Algumas possuem nomes estranhos.
Outras parecem piadas.
Mas todas escondem décadas de aprendizado acumulado.
Vamos atravessar esse espelho.
1 — Bus Factor
"E se o único que entende o sistema for atropelado por um ônibus?"
Essa lei nos lembra que conhecimento concentrado é um enorme risco.
Se apenas uma pessoa entende o sistema...
...o sistema pertence a ela.
Não à empresa.
O verdadeiro Jedi documenta.
Compartilha.
Ensina.
https://eljefemidnightlunch.blogspot.com/2020/05/o-fator-onibus-o-dia-em-que-um.html
2 — Technical Debt
Toda gambiarra possui juros.
Às vezes ela resolve o problema hoje.
Mas cobra muito mais amanhã.
Como diria o Oráculo:
"A dívida técnica nunca esquece seu endereço."
https://eljefemidnightlunch.blogspot.com/2021/10/technical-debt-rules-quando-um.html
3 — Yak Shaving
Você abriu um chamado simples.
Cinco horas depois.
Está configurando Docker.
Atualizando certificado.
Mudando firewall.
Lendo RFC.
Esqueceu completamente o problema inicial.
Parabéns.
Você encontrou um Yak.
https://eljefemidnightlunch.blogspot.com/2021/09/yak-shaving-rules-quando-um-programador.html
4 — Bike Shedding
Reunião de duas horas.
Noventa minutos discutindo a cor do botão.
Cinco minutos falando da arquitetura.
O Agente Smith adora reuniões assim.
https://eljefemidnightlunch.blogspot.com/2021/08/bike-shedding-rules-quando-um.html
5 — Golden Hammer
Quando tudo parece prego...
...qualquer ferramenta vira martelo.
O Padawan aprende Java.
Quer resolver tudo com Java.
Aprende IA.
Agora tudo precisa de IA.
Aprende Kubernetes.
Até o bloco de notas vira microsserviço.
Calma.
Nem toda batalha precisa da Nebuchadnezzar.
https://eljefemidnightlunch.blogspot.com/2021/07/golden-hammer-rules-quando-um.html
6 — Cargo Cult Programming
CTRL+C.
CTRL+V.
Funcionou.
Mas...
Você sabe por quê?
Se não sabe.
Talvez esteja apenas repetindo um ritual.
Não programação.
https://eljefemidnightlunch.blogspot.com/2021/05/spaghetti-code-rules-quando-um.html
7 — Spaghetti Code
IF dentro de IF.
GO TO.
PERFORM.
Mais GO TO.
Mais IF.
O código parece um prato de macarrão.
Delicioso no almoço.
Horrível na manutenção.
https://eljefemidnightlunch.blogspot.com/2021/05/spaghetti-code-rules-quando-um.html
8 — Lasagna Code
Agora temos o problema contrário.
Camadas.
Mais camadas.
Mais camadas.
Mais uma camada.
No final.
Um IF precisa atravessar sete microsserviços para mudar um campo.
https://eljefemidnightlunch.blogspot.com/2021/03/lasagna-code-rules-quando-um.html
9 — Big Ball of Mud
É aquele sistema onde ninguém sabe explicar a arquitetura.
Funciona?
Funciona.
Como?
Boa pergunta.
https://eljefemidnightlunch.blogspot.com/2021/01/big-ball-of-mud-rules-quando-um.html
10 — God Object
Existe um programa chamado:
CLIENTE01.
Ele faz:
cadastro;
cobrança;
PIX;
cartão;
empréstimo;
café;
provavelmente também controla o clima.
Esse programa acredita ser o Escolhido.
Não é.
https://eljefemidnightlunch.blogspot.com/2020/11/god-object-rules-quando-um-programador.html
11 — Lava Flow
Código escrito em 1994.
Ninguém sabe para que serve.
Mas ninguém remove.
Vai que explode.
Então permanece.
Como lava endurecida.
https://eljefemidnightlunch.blogspot.com/2020/12/lava-flow-rules-quando-um-programador.html
12 — Boiling Frog
O sistema não piora de um dia para outro.
Vai ficando lentamente mais lento.
Mais complicado.
Mais difícil.
Quando percebemos.
Já estamos mergulhados na água fervendo.
https://eljefemidnightlunch.blogspot.com/2021/11/boiling-frog-rules-quando-um.html
13 — Death March
Prazo impossível.
Equipe pequena.
Escopo gigante.
Cliente ansioso.
Café infinito.
Dormir virou luxo.
Esse projeto nunca deveria ter começado assim.
https://eljefemidnightlunch.blogspot.com/2021/02/death-march-project-rules-quando-um.html
14 — Brooks's Law
O projeto está atrasado.
A solução?
Contratar vinte pessoas.
Resultado?
Agora existem vinte pessoas tentando entender o sistema.
E o atraso aumenta.
https://eljefemidnightlunch.blogspot.com/2020/09/brookss-law-rules-quando-um-programador.html
15 — Conway's Law
As equipes desenham software exatamente como se comunicam.
Se departamentos não conversam.
Os sistemas também não conversarão.
https://eljefemidnightlunch.blogspot.com/2020/08/conways-law-rules-quando-um-programador.html
16 — Murphy's Law
Tudo que pode falhar...
Vai falhar.
Especialmente sexta-feira.
Às 18h.
Cinco minutos antes da implantação.
Por isso existem testes.
https://eljefemidnightlunch.blogspot.com/2020/01/murphys-law-quando-um-programador-cobol.html
17 — KISS
Se ficou complicado demais...
Provavelmente existe uma solução mais simples.
Os melhores sistemas normalmente parecem óbvios.
Depois de prontos.
https://eljefemidnightlunch.blogspot.com/2020/02/kiss-rules-quando-um-programador-cobol.html
18 — YAGNI
"Vai que um dia precisamos..."
Essa frase já criou milhões de linhas de código inútil.
Implemente quando realmente precisar.
https://eljefemidnightlunch.blogspot.com/2020/07/yagni-rules-quando-um-programador-cobol.html
19 — DRY
Copiou.
Colou.
Copiou novamente.
Agora o bug existe em dezoito lugares diferentes.
Parabéns.
Você criou um exército de Agentes Smith.
https://eljefemidnightlunch.blogspot.com/2020/06/dry-rules-quando-um-programador-cobol.html
20 — SOLID
Os cinco pilares.
O alicerce.
A estrutura.
A arquitetura.
Sem eles.
O software continua funcionando.
Por algum tempo.
Depois...
A Matrix desaba.
https://eljefemidnightlunch.blogspot.com/2020/04/solid-roules-quando-um-programador.html
21 — Boy Scout Rule
Sim.
Ela veio depois.
Porque nenhum sistema melhora sozinho.
Toda vez que tocar em um programa.
Deixe-o um pouco melhor.
Nem que seja apenas renomeando uma variável.
https://eljefemidnightlunch.blogspot.com/2020/03/boy-scout-rule-quando-um-programador.html
O verdadeiro inimigo nunca foi a tecnologia
Perceba algo curioso.
Nenhuma dessas leis fala de:
COBOL.
Java.
Python.
Rust.
Go.
Todas falam sobre pessoas.
Porque software é uma atividade humana.
O Agente Smith mora dentro da nossa cabeça
Smith aparece quando pensamos:
"Depois eu arrumo."
"Só desta vez."
"Ninguém vai perceber."
"Pode copiar."
"Não precisa documentar."
"Vai funcionar."
É exatamente assim que grandes sistemas envelhecem.
Neo nunca venceu sozinho
Observe Matrix novamente.
Neo nunca salvou o mundo sozinho.
Precisou de:
Morpheus;
Trinity;
Oráculo;
Link;
Tank;
Niobe;
Sati;
Chaveiro.
Grandes sistemas também são construídos por equipes.
E onde entra o COBOL?
Em todos os lugares.
Os sistemas COBOL que movimentam bancos, seguradoras, bolsas de valores e governos não sobreviveram cinquenta anos porque alguém escreveu um código perfeito.
Eles sobreviveram porque milhares de engenheiros aplicaram — muitas vezes sem conhecer os nomes — esses princípios ao longo das décadas:
simplificaram;
documentaram;
removeram duplicações;
dividiram responsabilidades;
testaram;
compartilharam conhecimento;
fizeram pequenas melhorias contínuas.
É por isso que um programa COBOL de 1988 ainda pode estar processando milhões de transações diariamente.
O Convite do Oráculo
No final da jornada, o Oráculo entrega a Neo um pequeno caderno.
Na capa está escrito:
"As Leis Secretas da Engenharia de Software."
Neo pergunta:
— Depois que eu decorar todas elas, finalmente serei um grande programador?
Ela sorri.
— Não.
— Então para que servem?
Ela responde:
"Porque agora, quando encontrar um problema, você saberá dar um nome ao monstro. E quando um monstro tem nome, ele deixa de parecer invencível."
Continue Explorando a Matrix
Se este artigo despertou sua curiosidade, esta é apenas a porta de entrada.
Cada uma dessas vinte (e uma) regras esconde uma história fascinante, repleta de exemplos reais, armadilhas clássicas, curiosidades históricas e lições que moldaram a engenharia de software moderna.
Nos próximos artigos da série ☕ Um Café no Bellacosa Mainframe, vamos mergulhar em cada uma delas com profundidade, sempre sob a ótica de um Programador COBOL Padawan explorando os corredores da Matrix.
Você descobrirá por que projetos fracassam, como sistemas sobrevivem por décadas, o que diferencia arquiteturas elegantes de verdadeiros labirintos de código e, principalmente, como transformar conhecimento técnico em sabedoria prática.
A cada regra desvendada, você enxergará um pouco mais do código verde da Matrix.
Conclusão — A Matrix Sempre Esteve na Engenharia de Software
No primeiro filme, Morpheus diz a Neo que a Matrix está em toda parte.
Na Engenharia de Software acontece exatamente o mesmo.
Essas leis aparecem:
em pequenos scripts;
em APIs modernas;
em aplicações mobile;
em microsserviços;
em sistemas bancários;
em programas COBOL escritos há quarenta anos;
e até nas respostas geradas por Inteligências Artificiais.
Elas não são modismos.
São observações acumuladas por milhares de engenheiros que erraram, aprenderam, compartilharam e deixaram um mapa para quem veio depois.
Talvez você ainda não tenha encontrado todas essas situações.
Mas, acredite, se continuar programando, elas encontrarão você.
A boa notícia é que, agora, você já conhece seus nomes.
E isso faz toda a diferença.
No universo Bellacosa Mainframe, existe uma última frase escrita na parede da sala do Arquiteto:
"Todo Padawan começa aprendendo comandos. Todo Mestre termina reconhecendo padrões. Porque linguagens mudam, tecnologias envelhecem e frameworks desaparecem, mas as leis da Engenharia de Software continuam governando a Matrix muito depois que o último deploy termina."
Então pegue seu café.
Abra seu editor COBOL.
E venha explorar essas estranhas, divertidas e surpreendentemente verdadeiras regras da Engenharia de Software.
A Matrix está esperando por você.
Sem comentários:
Enviar um comentário