Translate

Mostrar mensagens com a etiqueta onboarding. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta onboarding. Mostrar todas as mensagens

domingo, 27 de setembro de 2020

Brooks's Law Rules: Quando um Programador COBOL Descobriu que Colocar Mais Pessoas na Matrix Não Fazia o Tempo Andar Mais Devagar

 

Bellacosa Mainframe e a brooks law rules

☕ Um Café no Bellacosa Mainframe

Brooks's Law Rules sem Mistérios

Quando um Programador COBOL Descobriu que Colocar Mais Pessoas na Matrix Não Fazia o Tempo Andar Mais Devagar

"Nove mulheres não fazem um bebê nascer em um mês. Da mesma forma, vinte programadores não entregam um projeto de seis meses em apenas duas semanas." — Inspirado em Frederick P. Brooks Jr.


Prólogo — A Reunião de Emergência na Nebuchadnezzar

A situação era crítica.

Faltavam apenas vinte dias para entregar a nova versão da Matrix.

Neo.

Trinity.

Morpheus.

Link.

Tank.

Todos trabalhavam sem parar.

Mesmo assim.

O cronograma continuava atrasado.

A reunião começou.

O Arquiteto entrou na sala.

Projetou um gráfico.

Prazo: 20 dias

Trabalho restante: 90 dias

Silêncio.

Então um executivo da Matrix levantou a mão.

Sorriu confiante.

— Tenho a solução.

Neo perguntou.

— Qual?

O executivo respondeu:

— Vamos contratar cinquenta programadores.

Todos ficaram olhando.

Morpheus fechou os olhos.

O Oráculo deu um leve sorriso.

Neo perguntou:

— Eles conhecem COBOL?

— Não.

— Conhecem CICS?

— Não.

— Conhecem Db2?

— Também não.

— Conhecem o negócio?

— Ainda não.

— Conhecem a arquitetura?

— Nunca viram.

Neo respirou profundamente.

O Oráculo então falou.

"Vocês não contrataram cinquenta programadores. Contrataram cinquenta aprendizes que precisarão aprender com aqueles que já estão atrasados."

Naquele instante, Neo compreendeu a Lei de Brooks.


O que é a Brooks's Law?

A Brooks's Law afirma:

"Adding manpower to a late software project makes it later."

Em português:

"Adicionar pessoas a um projeto atrasado fará com que ele atrase ainda mais."

Essa é uma das leis mais famosas da Engenharia de Software.

Ela parece contraintuitiva.

Mas faz completo sentido quando entendemos como projetos realmente funcionam.


A origem da Lei de Brooks

A frase foi criada por Frederick Phillips Brooks Jr., engenheiro da IBM e gerente do desenvolvimento do OS/360, um dos maiores e mais complexos sistemas operacionais da história dos mainframes.

Em 1975, Brooks publicou o livro clássico:

The Mythical Man-Month

Até hoje considerado uma das obras mais importantes da Engenharia de Software.

O livro nasceu da experiência prática.

Brooks percebeu que aumentar equipes durante crises normalmente piorava a situação.


Quem foi Frederick Brooks?

Frederick Brooks trabalhou na IBM durante um período decisivo da computação.

Entre suas contribuições estão:

  • liderança do projeto IBM System/360;

  • coordenação do desenvolvimento do OS/360;

  • estudos sobre arquitetura de computadores;

  • pesquisa em Engenharia de Software.

Seu trabalho moldou a forma como planejamos projetos até hoje.


Matrix explica perfeitamente

Imagine que Neo precisa salvar Zion.

Faltam dois dias.

Morpheus decide recrutar:

100 pessoas completamente novas.

Nenhuma conhece:

  • a Matrix;

  • os Sentinelas;

  • Zion;

  • a Nebuchadnezzar.

O que acontece?

Antes de ajudar...

essas pessoas precisarão aprender.

E quem ensinará?

Justamente Neo e Trinity.

Os dois que já estavam sem tempo.


O paradoxo da produtividade

Muitos gestores pensam:

10 pessoas

↓

10 meses

Logo.

20 pessoas

↓

5 meses

Infelizmente software não funciona assim.

Porque existe algo invisível.

Comunicação.


A matemática escondida

Imagine uma equipe.

2 pessoas.

Existem apenas:

1 canal de comunicação.

Agora.

5 pessoas.

Existem:

10 canais.

Agora.

10 pessoas.

45 canais.

Agora.

20 pessoas.

190 canais.

Cada novo integrante aumenta exponencialmente a quantidade de comunicação necessária.


O COBOL conhece isso muito bem

Imagine um banco.

Projeto crítico.

Equipe original:

6 especialistas COBOL.

Prazo apertado.

Gestão decide contratar:

12 novos desenvolvedores Java.

Eles são excelentes profissionais.

Mas nunca viram:

  • JCL;

  • CICS;

  • Db2;

  • VSAM;

  • RACF;

  • IMS;

  • JES2.

Resultado.

Os seis especialistas passam semanas ensinando.

Quem desenvolve?

Quase ninguém.


Como nasce o problema?

Projeto atrasa.

Gestão entra em pânico.

Contrata mais pessoas.

Treinamento aumenta.

Reuniões aumentam.

Integração aumenta.

Produtividade cai.

Projeto atrasa ainda mais.


Matrix Reloaded

Neo pergunta ao Arquiteto.

— Quantos Escolhidos existiram?

O Arquiteto responde.

— Muitos.

Imagine se, em vez de treinar um Escolhido, resolvessem treinar mil simultaneamente.

O conhecimento seria distribuído.

Mas muito mais lentamente.


O efeito psicológico

Existe um fenômeno interessante.

Equipes pequenas criam ritmo.

Todos sabem quem faz o quê.

Quando a equipe cresce rapidamente.

Aparecem:

  • dúvidas;

  • alinhamentos;

  • reuniões;

  • conflitos;

  • dependências.

O trabalho deixa de ser apenas programação.

Passa a ser coordenação.


O Programador COBOL Padawan

Imagine.

Primeira semana.

Você entra em um projeto.

Recebe:

  • 8 milhões de linhas COBOL;

  • 1.200 JCLs;

  • centenas de COPYBOOKs.

Você pergunta:

— Por onde começo?

Alguém precisa responder.

Esse alguém interrompe o próprio trabalho.


O Agente Smith adora isso

Porque quanto maior a equipe desorganizada.

Maior:

  • ruído;

  • retrabalho;

  • conflitos;

  • inconsistências.

Smith não precisa criar bugs.

A comunicação cria sozinha.


Um exemplo inspirado na Matrix

Neo está lutando contra Smith.

No meio da batalha chegam cinquenta novos soldados.

Todos perguntam ao mesmo tempo:

  • Onde atiro?

  • Quem é Smith?

  • O que é Zion?

  • Onde fica a saída?

  • Como funciona a Matrix?

Neo para de lutar.

Começa a responder perguntas.

Smith agradece.


Quando Brooks NÃO se aplica?

Essa é uma pergunta importante.

A Lei de Brooks não é absoluta.

Adicionar pessoas pode funcionar quando:

  • o trabalho pode ser dividido facilmente;

  • existem módulos independentes;

  • a documentação é excelente;

  • a arquitetura é clara;

  • há tempo para treinamento;

  • o projeto ainda está no início.

Por isso compreender o contexto é essencial.


O impacto no Mainframe

Ambientes IBM Z possuem características particulares.

Conhecimento de:

  • COBOL;

  • CICS;

  • Db2;

  • MQ;

  • RACF;

  • JCL;

  • z/OS.

Não se aprende em dois dias.

Logo.

Projetos críticos dependem muito da experiência acumulada.


Curiosidade

Brooks também criou outra frase famosa.

"The bearing of a child takes nine months, no matter how many women are assigned."

Essa analogia mostra que algumas atividades possuem limites naturais.

Software também.


O custo invisível

Cada novo integrante precisa:

  • ambiente;

  • acessos;

  • documentação;

  • mentor;

  • revisão;

  • treinamento;

  • integração.

Tudo isso consome tempo da equipe experiente.


Atenção!

A Lei de Brooks não significa:

"Nunca contratar."

Ela significa:

"Contratar tarde demais não resolve problemas estruturais."


A diferença

Crescimento planejado

Equipe aumenta gradualmente.


Crescimento desesperado

Equipe dobra durante a crise.


Matrix e a Frota de Zion

Imagine construir cem naves.

Contratar cem pilotos no último dia não acelera a construção.

Talvez nem existam naves suficientes para treiná-los.


Ferramentas ajudam

Hoje temos recursos que reduzem parte desse problema.

  • Wikis técnicas.

  • IBM ADDI.

  • Diagramas automáticos.

  • Pair Programming.

  • IA.

  • Documentação viva.

  • Vídeos internos.

  • Onboarding estruturado.

Mesmo assim.

Aprendizado continua levando tempo.


O papel da IA

A IA pode acelerar bastante o onboarding.

Ela ajuda a:

  • explicar programas COBOL;

  • resumir COPYBOOKs;

  • gerar diagramas;

  • responder dúvidas;

  • localizar dependências.

Mas não substitui o conhecimento do negócio.

Nem a experiência adquirida durante anos.


Os riscos

Comunicação excessiva


Retrabalho


Treinamento insuficiente


Burnout dos especialistas


Mais reuniões


Mais conflitos


Decisões inconsistentes


Erros clássicos

  • Dobrar a equipe durante a crise.

  • Não investir em documentação.

  • Ignorar curva de aprendizado.

  • Acreditar que programação é totalmente paralelizável.

  • Subestimar o conhecimento do negócio.


Boas práticas

  • Planeje crescimento cedo.

  • Documente continuamente.

  • Faça onboarding estruturado.

  • Divida responsabilidades.

  • Automatize tarefas repetitivas.

  • Preserve tempo dos especialistas.

  • Desenvolva novos profissionais antes da emergência.


Aplicabilidade

A Brooks's Law aparece em:

  • COBOL;

  • Java;

  • C#;

  • Python;

  • Cloud;

  • DevOps;

  • IA;

  • ERP;

  • Mobile;

  • Sistemas Bancários.

Sempre que conhecimento especializado é necessário.


O ensinamento do Oráculo

O Oráculo entrega um quebra-cabeça de mil peças para Neo.

Depois coloca cinquenta pessoas ao redor da mesa.

Ela pergunta:

— Terminaremos mais rápido?

Neo pensa.

Algumas pessoas começam a procurar peças.

Outras perguntam onde ficam as bordas.

Outras discutem a estratégia.

Depois de alguns minutos.

Neo sorri.

— Primeiro precisamos aprender a trabalhar juntos.

Ela responde:

"Exatamente. O tempo investido em coordenação cresce junto com a equipe."


Lições para um Programador COBOL Padawan

Se você ingressar em um grande projeto IBM Z, não se preocupe por não produzir imediatamente como os profissionais mais experientes.

Existe uma curva natural de aprendizado.

Você precisará conhecer:

  • a arquitetura;

  • o negócio;

  • os padrões da empresa;

  • os ambientes;

  • as ferramentas;

  • a cultura da equipe.

Ao mesmo tempo, quando você se tornar experiente, lembre-se de documentar e compartilhar conhecimento.

Essa atitude reduz o impacto descrito pela Lei de Brooks e torna o crescimento da equipe muito mais saudável.


Curiosidades

O livro The Mythical Man-Month também apresentou conceitos que continuam atuais:

  • No Silver Bullet (não existe solução mágica para produtividade).

  • Conceitualização é mais difícil que codificação.

  • Comunicação é um dos maiores custos invisíveis de projetos.

  • A importância de arquiteturas consistentes.

Mesmo cinquenta anos depois, essas ideias permanecem extremamente relevantes.


Conclusão — Nem Mesmo Neo Poderia Ensinar Toda Zion em Dois Dias

Na Matrix, Neo tornou-se poderoso porque teve tempo para aprender.

Treinou.

Errou.

Praticou.

Recebeu orientação de Morpheus, Trinity e do Oráculo.

Ninguém nasce especialista em COBOL, CICS ou Db2.

A Lei de Brooks nos lembra justamente disso.

Projetos atrasados raramente precisam apenas de mais pessoas.

Frequentemente precisam de:

  • planejamento melhor;

  • documentação adequada;

  • arquitetura clara;

  • prioridades bem definidas;

  • comunicação eficiente.

Para um Programador COBOL, essa talvez seja uma das lições mais importantes da carreira.

Conhecimento leva tempo para ser construído.

E tempo não pode ser multiplicado simplesmente aumentando o número de cadeiras na sala.

No universo Bellacosa Mainframe existe uma máxima que certamente estaria gravada na porta da sala do Arquiteto:

"Programadores podem ser contratados em um dia. Experiência, confiança e entendimento do negócio não."

Porque, assim como Neo precisou aprender a enxergar o código verde da Matrix antes de transformá-la, toda equipe precisa de tempo para se tornar realmente produtiva. É exatamente essa realidade que Frederick Brooks transformou em uma das leis mais importantes da história da Engenharia de Software.