No Scrum Gathering Brasil, Danilo Bardusco conta como foi para escalar Scrum na Globo.com, levantando alguns pontos interessantes a serem considerados
- A última coisa que você quer fazer é escalar Scrum - Martin Fowler
- De certa forma Scrum já é auto-escalável, porém necessita de Suporte e adaptação
- Scrum requer gerenciamento inteligente ... e mão na massa.
- Gerentes que não se envolvem e que só tomam decisões baseadas em relatórios não servem para Scrum
Danilo mencionou alguns requisitos básicos para que seja possível escalar Scrum em qualquer ambiente. Segundo ele, para escalar Scrum é necessário:
- Simplicidade
- Minimizar a quantidade de trabalho a ser feito
- Para isso, trabalhar com Iterações
- Pensar como artista/Artesão
- O artista rascunha o todo, inicia o todo e vai melhorando o todo
- Cliente e/ou usuário Colaborando
- Ter Senso de Urgência - Tudo deve ser feito o mais rápido possível
- Melhoria Contínua - Nunca tentar fazer o trabalho da mesma forma que foi feito ontem, buscando melhorar a cada dia
- Manter um ambiente de Confiança e aprendizado - Isso muda a visão do cliente em relação à equipe
- Estimular a confiança cada vez mais
- Esquecer contratos entre departamentos
- Eliminar a cultura de encontrar culpados pelos erros
- Entregar software funcionando a cada sprint
- Todos devem se responsabilizar pelo trabalho a ser feito - isso cria confiança entre o cliente e a equipe
- Alta direção da empresa deve trabalhar puxando a produção (Utilizando os conceitos de Lean)
- Saber que Scrum não é fácil
Danilo conta que iniciaram com 1 time gigante utilizando métodos tradicionais, implicando na impossibilidade de auto-gerenciamento e dificuldade de comunicação. Para aplicar Scrum, foram criados 6 times independentes, porém trabalhando em conjunto da seguinte forma:
- Sprint dos 6 times sincronizados
- Sprint planning individuais
- Daily Meeting as 09:30h
- Daily Scrum of Scrums as 09:50h
- Review com todos os times no auditórios
Ele acrescenta:
...É preciso definir a velocidade local antes de distribuir os times...
...as práticas ágeis de engenharia passam a ser obrigatórias devido aos diversos relacionamentos dos times...
...é fundamental integrar no mínimo diariamente (Integração Contínua)...
Do ponto de vista mais técnico, ele destaca:
..é preciso tomar cuidados com a automação de testes, pois pode gerar muito trabalho de manutenção. A gravação de testes via selenium é trabalhosa para projetos grandes.
Como solução ele aponta o uso de técnicas de Behavior Driven Development:
...uma solução encontrada na globo foi usar BDD, considerando o código de testes tão importante quanto o código de produção...
Em relação à coordenar os times ele afirma:
...cuidar para que o trabalho dos times seja isolado... e não paralelizar as estórias dentro do Sprint é fundamental para diminuir o estoque de produto não acabado. Isso também ajuda na auto-gestão, pois todos estão focados e tem que trabalhar no que precisar, pois não dá pra fazer o que não é necessário, além de regular o tamanho do time, pois não dá pra ter muitas pessoas se a quantidade de trabalho paralelo é limitada. Por fim, isso tira as pessoas da zona de conforto.
Segundo ele, neste momento é preciso ser preguiçoso, visando os seguintes benefícios:
- Fazer somente o que for absolutamente necessário para atingir o Objetivo do Sprint
- É necessário muita disciplina, confiança e postura da equipe
Com todos esses pontos levantados pelo Danilo, conseguimos ter uma idéia do que é necessário para escalar o Scrum. Isso inclui muita mudança de paradigma e adaptação cultural para que seja possível.
Você já escalou Scrum e tem alguma experiência para compartilhar conosco? E quanto à outros métodos ágeis, quais é sua experiência com equipes grandes?