Professional Documents
Culture Documents
Artigo
MVP VSTS, MCT, MCP, MCSD, MCTS, MCPITP, MCPD, MSF Practitioner, Certified SCRUM Master,
Certified ITIL Foundations. Escreveu mais de 15 livros nesta última década. Atua como consultor
de produtividade em desenvolvimento de projetos e professor de disciplinas ágeis de engenharia
de software. Pode ser localizado no site http://www.fcamara.com.br.
Feed de artigos.
Introdução
Das muitas definições sobre agilidade que podemos encontrar em livros, revistas e na internet,
uma das que mais gosto é: _ "Agilidade é a habilidade de criar e responder a mudanças com
respeito ao resultado financeiro do projeto em um turbulento ambiente de negócios. Agilidade é
a habilidade de balancear flexibilidade com estabilidade". (Highsmith, Jim. Agile Project
Management, 2002)
A diferença entre caos e agilidade pode ser verificada nos produtos resultantes. Considerando o
mesmo cenário turbulento de negócios1, nas equipes que convivem com o caos verificamos
atrasos constantes, baixissíma qualidade dos sistemas, problemas com estimativas e estouro de
orçamento. Nas equipes que utilizam-se de métodos ágeis percebemos entregas parciais
constantes, interação com clientes para revisão de estimativas e orçamento conjuntamente com
antecedência salutar ao projeto e principalmente dois pontos fundamentais: compromisso com a
satisfação do cliente e responsabilidade com o resultado financeiro do projeto.
As metodologias ágeis estão disponíveis desde a década passada, porém foi no ano de 2001 que
houve a formalização com a assinatura do manifesto ágil (Manifesto for Agile Software
Development - http://agilemanifesto.org/).
Inicialmente houve uma desconfiança geral por parte da indústria de software, certamente
impulsionada pelas diferenças aos métodos tradicionais e as questões das dificuldades de
quebra de paradigmas por parte das pessoas. Nesta época tornou-se bastante famosa a
metodologia XP (eXtreme Programming), pois propunha sem hipocrisia uma série de métodos
polêmicos, muitos deles questionáveis até hoje como por exemplo a programação em pares e o
cliente ao lado do desenvolvedor durante o projeto.
A confusão entre confiável e repetível acontece porque muitos gestores de empresas gostam de
formalizar processos muito estruturados e precisos (repetíveis) no lugar de formalizar processos
suficientemente estruturados e flexíveis (confiáveis). Processos repetíveis focam na entrada das
atividades, processos confiáveis focam no resultado das atividades.
http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=2084 4/4/2011
Linha de Código - Uma metodologia ágil - SCRUM Page 2 of 3
A metodologia SCRUM está entrando na moda aqui no Brasil, após já haver conquistados
inúmeras empresas da indústria de software na América do Norte.
SCRUM, nome utilizado inicialmente pelos japoneses Hirotaka Takeuchi e Ikujiro Nonaka,
descrevia um tipo de processo de desenvolvimento de produto utilizado no Japão.Também o
nome SCRUM foi escolhido pela similaridade entre o jogo de Rugby e o tipo de desenvolvimento
de produto comentado. Ambos são adaptativos, rápidos e promovem a auto-organização.
3
Para explicar SCRUM, utilizarei uma estratégia que foi usada pelo Ken Schwaber em seu livro
chamado Agile Project Development with SCRUM. Na minha leitura, este é o melhor livro
disponível lançado até a presente data.
Iniciando um projeto, há uma formalização de todas as coisas que se pretende fazer ou que se
precisar construir no projeto. Cada item desta lista representa um requisito funcional, ou
requisito não funcional, ou questão de tecnologia / infra-estrutura. Esta lista é denominada
Product Backlog.
Podemos traduzir Product Backlog como uma lista de todos os requisitos de um produto
priorizados, ou, em outras palavras, é qualquer coisa que represente um trabalho que precisa
ser feito para o produto. Os itens com maior prioridade nesta lista são os requisitos mais
desejados pelo produto. No projeto real, o Product Backlog nunca é finalizado. Existe uma
natural evolução e maturidade dos requisitos nesta lista. Requisitos novos podem aparecer,
requisitos existentes podem perder prioridade e podem até serem eliminados. Apesar de se
permitir que áreas usuárias manifestem seus pedidos nesta lista, somente o Product Owner
pode priorizar o Backlog.
O SCRUM Team deve desenvolver os itens separados pelo Product Owner em um determinado
prazo previamente combinado. Este prazo é definido como Time Box e o trabalho de
desenvolver os itens separados neste time box é denominado SPRINT. Estes itens separados
do Product Backlog fazem parte de uma nova lista. Esta lista, chamada SPRINT Backlog, será
de total responsabilidade do SCRUM Team que deverá mantê-la e organizá-la de tal forma a
atender os objetivos do específico SPRINT.
É permitido ter mais de um SCRUM Team trabalhando no mesmo Product Backlog, por isso os
requisitos são devidamente separados em SPRINT Backlog distintos por equipe. Uma idéia deste
ciclo é verificada na imagem abaixo.
A liderança destas equipes é exercida por um papel denominado SCRUM Master. O SCRUM
Master é um facilitador da gestão dos requisitos e direcionador da gestão das equipes. Este
papel deve garantir a correta utilização das práticas de SCRUM, deve ajudar a equipe a tomar
decisões e apoiar a equipe para adquirir os recursos necessários para o desenvolvimento do
produto.
Este método de liderança é exercido através de 3 recorrentes tipos de reunião: SCRUM Daily
Meeting, SPRINT Review e Retrospective. Começando pelo SPRINT Review que é a reunião
típica de final de SPRINT (alguns SCRUM Team também a fazem no meio do SPRINT) para
validar o produto executável que a equipe conseguiu incrementar.
Explicando a Retrospective, é uma reunião que também acontece ao final do SPRINT com o
objetivo de fortalecer a unidade de ação da equipe. Três perguntas deverão ser respondidas
com seriedade por todos os membros do SCRUM Team:
http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=2084 4/4/2011
Linha de Código - Uma metodologia ágil - SCRUM Page 3 of 3
Todos os dias, obrigatoriamente, todo o SCRUM Team irá se reunir por 15 minutos
aproximadamente para responder a 3 importantes perguntas. Sugerimos que está reunião seja
de pé, pois temos verificado bons resultados em nossas práticas.
As perguntas são:
Figura 2 - Nossa implementação de KANBAN na empresa REPOM dirigida pelo SCRUM Master Marcelo Martins. As
cores amarela e laranja representam diferentes complexidades das atividades. A cor pink representa atividades
não planejadas no SPRINT que foram incluídas por motivo de força maior.
Por se tratar de um extenso assunto, abordaremos detalhes explicativos sobre o que é KANBAN
e como se utiliza em projetos de software no nosso próximo artigo técnico.
Considerações Finais
Nós, praticantes das metodologias ágeis, acreditamos que todos os projetos são diferentes. A
tecnologia destes projetos são diferentes. As pessoas, os requisitos idem. Nós não queremos ser
indivíduos críticos do que existe há muito tempo na engenharia de software, nós queremos
sugerir, proporcionar e fundamentar alternativas novas para resolver problemas antigos.
Na grande maioria das consultorias que ministro sob a titulação de "coaching" para fins de
crescimento dos resultados qualitativos e produtivos de equipes de desenvolvimento de
software, encontro pessoas que utilizando-se de métodos tradicionais ou simplesmente de
improviso diário (também denominado "ausência de métodos") revelam-me uma estranha e
frustante sensação - A Síndrome do Trabalho Vazio.
A STV é a sensação que ocorre depois de um intenso dia de trabalho repleto de aborrecimentos
e de atividades urgentes, quando percebe-se que no final todas as atividades planejadas para
aquele dia não puderam ser implementadas. É uma constatação que se é uma espécie de
marionete do tempo, da empresa e dos clientes.
As metodologias ágeis são uma positiva proposta para as empresas desgastadas com os
resultados proporcionados por "waterfall approach to software development" ou pela ausência
de métodos. Para iniciantes em metodologias ágeis, eu recomendo o SCRUM. Para praticantes
de métodos ágeis que não conhecem o SCRUM, permitam-se mais uma evolução.
http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=2084 4/4/2011