Scrum? O que é? Como funciona?
O que é o Scrum?
O Scrum é um método ágil para gerenciamento de projetos de desenvolvimento de software. Porém, teoricamente, pode ser aplicado em qualquer contexto no qual um grupo de pessoas com conhecimentos multidisciplinares necessitem trabalhar juntas para atingir um objetivo comum, como iniciar uma escola pequena, projetos de pesquisa científica ou até mesmo o planejamento de um casamento.
O Scrum junta conceitos de Lean, desenvolvimento iterativo e do estudo de Hirotaka Takeuchi e Ikujiro Nonaka no artigo The New Product Development Game.
Como funciona? (em vídeo, em inglês)
O vídeo abaixo explica em menos de 10 minutos praticamente todo o funcionamento do Scrum (por alto obviamente) de uma maneira muito didática. O único “problema” é que é todo falado em inglês, não possuindo legenda em português nem em inglês (pra quem tem dificuldade em entender o que é dito).
Como funciona? (em slides, em português)
Segue uma apresentação utilizada aqui na MJV para apresentar o Scrum para os clientes.
Como funciona? (em texto, em português)
No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados de Sprints. O Sprint representa um tempo definido dentro do qual um conjunto de atividades deve ser executado. Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações, que no Scrum são chamadas de Sprints e geralmente duram de 2-4 semanas.
As funcionalidades a serem implementadas no projeto são mantidas em uma lista que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint Planning Meeting (uma reunião de planejamento), na qual o Product Owner (quem representa os stakeholders) prioriza todos os itens do Product Backlog e a equipe seleciona as funcionalidades que ela será capaz de implementar durante o Sprint que se inicia. As funcionalidades alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.
Diariamente, em uma Sprint, a equipe faz uma breve reunião de no máximo 15 minutos, com todos os participantes em pé, chamada Daily Scrum. O objetivo é cada integrante dizer o que fez no dia anterior, o que pretende fazer no dia que se inicia e se existe algum impedimento que está atrapalhando o seu trabalho.
Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting onde o time mostra o que foi alcançado neste sprint. Finalmente, faz-se uma Sprint Retrospective para identificar o que funcionou bem, o que pode ser melhorado e que ações serão tomadas para melhorar e a equipe parte para o planejamento do próximo Sprint.
Assim reinicia-se o ciclo como pode ser visto na ilustração abaixo:

Scrum Master
O Scrum é facilitado por um Scrum Master, que tem como função primária remover qualquer impedimento à habilidade de uma equipe de entregar o objetivo do sprint. O Scrum Master não é o líder da equipe (já que as equipes são auto-organizadas) mas atua como um firewall entre a equipe e qualquer influência desestabilizadora.
Outra função extremamente importante de um Scrum Master é o de assegurar que a equipe esteja utilizando corretamente as práticas de Scrum, motivando-os e mantendo o foco na meta da Sprint.
Outras características importantes do Scrum
- Clientes se tornam parte da equipe de desenvolvimento (os clientes devem estar genuinamente interessados na saída);
- Entregas freqüentes de funcionalidades 100% desenvolvidas;
- Planos freqüentes de mitigação de riscos desenvolvidos pela equipe;
- Problemas não são ignorados e ninguém é penalizado por reconhecer ou descrever qualquer problema não visto;
- Sprints para corrigir bugs são feitos de tempos em tempos;
- O Burn Down Chart é um dos artefatos mais importantes do Scrum;
Aprendendo mais
Existe um livro gratuito na web sobre Scrum que é muito bom: Scrum and XP from the Trenches que inclusive foi traduzido para o português.
A palestra do Guilherme Chapiewski sobre Desenvolvimento Ágil com XP e Scrum também é muito interessante. Alguns outros links úteis: Improve It e Wikipedia.




