sábado, 5 de setembro de 2009

O SCRUM

SCRUM é um processo ágil e leve que pode ser utilizado para gerenciar e controlar o desenvolvimento de software utilizando práticas iterativas e incrementais.

Baseado em práticas de gerenciamento já fundamentadas no Extreme Programming e no RUP, o SCRUM produz os benefícios do desenvolvimento ágil com a vantagem de ser uma implementação bem simples.

O SCRUM aumenta significativamente a produtividade e reduz o tempo para obter resultados, pois facilita a adaptação a processos empíricos de desenvolvimento de sistemas.

Elementos do SCRUM


O SCRUM como qualquer outra metodologia é baseada em papéis e responsabilidades, porém, os papéis do SCRUM são bem abrangentes e direcionados para um propósito comum: O SUCESSO DO PROJETO.

Papeis

Product Owner
  • Define as funcionalidades do produto;
  • Concentra as informações vindas de usuários, stakeholders ou do mercado de maneira que se obtenha uma visão única dos requisitos do sistema;
  • Sua maior responsabilidade é o ROI do projeto
  • Prioriza o Product Backlog
  • Pode alterar as prioridades fora do Sprint
  • Aceita ou rejeita os resultados dos trabalhos
O Time (Team)

O Time é o grupo de pessoas diretamente ligadas ao trabalho a ser feito que garantirá que o projeto seja entregue com todas as funcionalidades necessárias. Suas características são:

  • Multi-functional 
  • Formado por até 7 pessoas 
  • Define o objetivo do Sprint e especifica os resultados dos trabalhos
  • Faz aquilo que é necessário dentro das diretrizes do projeto para alcançar o objetivo do Sprint 
  • Auto-organizável 
  • Demonstram o resultado do Sprint (ver definição abaixo) para o Product Owner e outros Stakeholders
A idéia por trás dos conceitos MULTI-FUNCIONAL e AUTO-ORGANIZÁVEL é que o time deve ter a capacidade e o conhecimento técnico sobre TODO o processo de desenvolvimento do produto. No caso de um projeto de desenvolvimento de software, o time deve ter pessoas capazes de analisar a solução, codificá-la e testá-la sem necessitar de outros times ou outras pessoas.

SCRUM Master

O SCRUM Master desempenha um papel de liderança, gerenciando os interesses do Product Owner mediante o Time. Numa abordagem tradicional de gerenciamento de projetos, o SCRUM Master seria um Gerente de Projetos, porém, essa nomenclatura foi substituída para diferenciar o foco de liderança necessário para que um processo empírico funcione. Um SCRUM Master eficiente deve:

  • Melhorar a vida e a produtividade do time de desenvolvimento promovendo a criatividade e o conhecimento
  • Estimular uma comunicação e cooperação muito próxima entre todas as pessoas do time
  • Proteger o time de interferências externas
  • Remover Impedimentos ("Impediments")
  • Garantir que o processo está sendo respeitado
  • Convidar pessoas apropriadas para as reuniões de acompanhamento (Daily SCRUM, Sprint Review e Sprint Retrospective)
  • Remover barreiras entre o desenvolvimento e o cliente para garantir que realmente é o cliente que está direcionando as funcionalidades desenvolvidas
  • Auxiliar o Product Owner a maximizar o ROI atingindo os seus objetivos com o SCRUM
  • Promover práticas de engenharia para que cada pedaço de funcionalidade seja potencialmente implantável.
Fases

O SCRUM também possui fases para definição da visão do projeto e também para um estudo de viabilidade.

Nível Estratégico (Product Owner)

1.Definir os problemas a serem resolvidos
2.Estabelecer a visão e um escopo de alto nível
3.Investigar a viabilidade do projeto
4.Fornecer esforço e prazo preliminares
5.Conseguir recursos como financiamento

Produto: visão e backlog inicial

Nível Tático (SCRUM Master)


1.Planejar Objetivos dos Sprints
2.Resolver Impedimentos
3.Liderar a Equipe
4.Promover a Comunicação


Produto: Backlog

Nível Operacional (team)


1.Realizar Objetivos dos Sprints
2.Aplicar Boas Práticas de Engenharia
3.Adequar mudanças
4.Garantir a Qualidade
Produto: Sprint Backlog e Software funcionando

Sprint (a iteração do SCRUM)

No SCRUM, a iteração é chamada de SPRINT. Durante esse período o TIME trabalha nos objetivos determinados para o SPRINT. Esse período de tempo pode variar, mas geralmente é um período de 30 dias.

Um projeto é composto por vários sprints do mesmo tamanho.

TIME-BOXING: Período Fechado de Tempo

Outro conceito importante para as práticas do SCRUM é o TIME-BOXING. Um SPRINT de 30dias é um TIME-BOX. O planejamento que ocorre no primeiro dia do SPRINT ocorre num TIME-BOX de 1 dia. As reuniões diárias com a equipe devem demorar no máximo 15 minutos. Tudo que acontece dentro da metodologia SCRUM tem o espaço de tempo definido e cronometrado.

Todos os Sprints possuem uma estrutura exatamente igual, o primeiro dia você planeja,durante o Sprint você cumpre o planejamento, no último dia você avalia o resultado e ajusta o processo buscando uma melhoria contínua. A simplicidade do modelo de papéis, artefatos e estrutura do processo SCRUM é uma das razões da sua eficácia.

O Planejamento do Sprint

No primeiro dia do Sprint é feito o planejamento do trabalho a ser desenvolvido. Esse planejamento é feito através de uma reunião composta de duas partes.

Na primeira parte da reunião de planejamento o SCRUM Master reúne-se com o Product Owner para verificar qual é o Product Backlog. O Product Backlog é um artefato do SCRUM, uma planilha onde constam todas as funcionalidades de alto nível do sistema. Lá estão todas as funcionalidades desejadas pelos Stakeholders ordenadas pela prioridade. Aquilo que é mais prioritário está no topo da lista, e aquilo que é menos prioritário vai para o fim da lista.

Abaixo um exemplo de Product Backlog.



Na segunda parte do dia do planejamento, o SCRUM Master se reúne com o time e com o Product Owner (opcionalmente) para planejar o Sprint baseado no Product Backlog criado ou atualizado. O trabalho nessa segunda parte é estabelecer e firmar os objetivos do Sprint, selecionando quais itens prioritários do Backlog serão implantados completamente até o fim do Sprint.

Para isso, métricas são adotadas para quantificar o esforço de cada item do Backlog a fim de estimar a velocidade da equipe.

Note que é importante ressaltar que o Product Owner e o SCRUM Master somente definiram a ordem das coisas, mas não cabe a eles definir os prazos. Os prazos, como boa prática de todas as metodologias de gerenciamento de projeto, são dados pelo Time que é responsável pela parte produtiva do projeto.

Após ter selecionado quais itens potencialmente implantáveis serão resolvidos neste Sprint, o Time quebra cada item selecionado em tarefas menores que podem ser cumpridas em um dia (desejável). Esta quebra de cada item é chamado SPRINT BACKLOG e o time define que cada uma dessas tarefas menores esclarece tudo que é necessário ser feito para implantar os itens do
PRODUCT BACKLOG selecionados para esse Sprint.

Abaixo o sprint backlog



Com o Sprint Backlog definido a idéia é que os integrantes do Time peguem tarefas para realizar. Isso consiste em retirar o post-it da coluna “Pendente” e colocá-lo na coluna “Alocado”,
conforme a figura a seguir:

Como os itens estão ordenados de acordo com a prioridade do Product Backlog, é importante que os itens no topo da lista sejam resolvidos primeiro. Se o foco é resolver os itens em ordem, seria estranho que um post-it do item “Integração com ERP” estivesse alocado no início do Sprint.

Uma característica importante é que o membro do Time é quem seleciona a tarefa que ele vai fazer. Isso permite que as pessoas tenham um maior controle e comprometimento sobre o
próprio trabalho, sem que alguém esteja delegando tarefas repetidamente de uma maneira prescritiva. Um time multi-funcional e auto-organizável traz um ótimo ambiente de trabalho e uma melhor performance no desenvolvimento.

Reunião Diária (Daily SCRUM)

Um evento importante que ocorre todos os dias durante o Sprint é a REUNIÃO DIÁRIA. A reunião diária (Daily SCRUM) é um encontro entre o SCRUM Master, o Time e qualquer pessoa interessada no projeto. As reuniões diárias ocorrem num TIME-BOX de 15 minutos no máximo. É comum ocorrer algumas reuniões com menos de 5 minutos, porém, faça todos se concentrarem naquilo que realmente é importante para que esse encontro não dure 2 ou 3 horas comprometendo a produtividade da equipe.

A reunião diária são 15 minutos onde cada membro da equipe dará as suas impressões a respeito do projeto, respondendo a três perguntas importantes:
  1. O que eu fiz desde a última reunião diária?
  2. O que eu pretendo fazer até amanhã?
  3. Tem alguma coisa impedindo o meu trabalho?

É aconselhável que a reunião diária ocorra todo o dia no mesmo horário. Neste momento o SCRUM Master verifica o andamento do trabalho, observando problemas, verificando a continuidade do processo, resolvendo mal-entendidos e principalmente liderando as pessoas.

Esses 15 minutos diários são preciosos para manter a comunicação e a sincronização do status do projeto entre os membros da equipe. A reunião diária promove a auto-organização, um maior comprometimento das pessoas e um compartilhamento das responsabilidades.


O estado de pronto

Quando as tarefas constantes na coluna alocado passarem para a coluna pronto (ver figura abaixo), finalizamos aquele item do backlog.


A definição de “pronto” é um importante aspecto para avaliação no andamento do projeto, isso porque a metodologia SCRUM não considera as funcionalidades 50% realizadas como é comum nas abordagens tradicionais de gerenciamento de projeto. Para o SCRUM, um item só está pronto quando atende à definição de “pronto” do time e o projeto só avança quando itens são dados como completamente “prontos” no Product Backlog. No SCRUM, 20% da codificação feita não significa nada para o andamento do projeto.

Sprint Review


Ao final do Sprint é feito o Sprint Review. A Revisão é um importante ponto de inspeção da metodologia SCRUM. Esta reunião ocorre no último dia do Sprint e representa o momento que a equipe e o SCRUM Master demonstram as funcionalidades potencialmente implantáveis executadas para o Product Owner.

Sprint Retrospective

O SCRUM é um conjunto de práticas focadas em melhoria contínua do processo. O SCRUM, como um controle empírico, não prega uma rigidez do processo, ao invés, o SCRUM promove a constante adaptação das práticas mesmo durante o projeto. O processo pode mudar de um Sprint para o outro sempre buscando uma melhoria na produtividade ou qualidade do produto final. A retrospectiva do Sprint é uma reunião entre SCRUM Master e a equipe onde duas perguntas são feitas:
  1. O que foi bom durante o Sprint?
  2. O que pode ser melhorado?

Nessa reunião o objetivo é a transparência interna da equipe. O SCRUM Master deve avaliar friamente os pontos apresentados e prover os recursos necessários para que as mudanças ocorram.

Um dos problemas mais comuns é a equipe não buscar ou não se empenhar para que essas
mudanças no processo ocorram. A adaptação contínua é um fundamento importante para controlar
projetos críticos e esses pontos de melhorias devem ser valorizados.

As lições aprendidas é um fundamento em muitas metodologias de gerenciamento de projeto. Elas representam a memória corporativa e promovem uma maneira para que os projetos não sofram sempre dos mesmos problemas. Se sua empresa tem muitos projetos ou projetos
simultâneos essas lições aprendidas devem ser compartilhadas em toda a organização.

Neste post tentamos  mostrar a essência do SCRUM.

Até a próxima!

Nenhum comentário: