Despertei para o assunto recentemente ao participar de um curso de Scrum oferecido pela empresa e ministrado por Boris Gloger, um dos papas no assunto. Em meu estudo percebo que todos os métodos de entrega ágil se apoiam em premissas básicas: entrega interativa e incremental, colaboração e melhoria contínua.
Na entrega interativa o projeto é dividido em pequenos pacotes com um cronograma de interações que dura em média 4 semanas. Algumas vantagens que a entrega interativa trás é a melhor visualização dos riscos do projeto e a impressão do cliente de que o projeto está “acontecendo”, conforme as releases são entregues.
Com a colaboração, todos os membros da equipe do projeto, principalmente o representante do cliente, participam de reuniões regulares e pontuais para facilitar a comunicação e cooperar nas interações. Importante neste quesito um espaço exclusivo e contínuo para os trabalhos regulares ( nada pior do que travar guerras por salas de reunião ).
Para melhoria contínua, são feitas reuniões ( retrospectivas ) com o projeto em andamento, onde ocorrem reflexões sobre sucessos e falhas. Valiosas informãções são trocadas na realização de ajustes do projeto.
Um passo para o fracasso é tentar aplicar a estratégia em múltiplos projetos sem ao menos dominar o conceito por completo. Por isso a escolha de um projeto piloto é essencial para o período experimental.
A equipe de projeto deve ter representantes de todas as áreas ( negócio, arquitetura, desenvolvimento, infra-estrutura, testes, etc. ). Esta equipe precisa estar 100% dedicada ao projeto ( dificil imaginar tal cenário ), e os membros com a cabeça “aberta” para aprender a metodologia.
Todos os representantes precisam estar próximos uns dos outros, de preferencia em uma sala exclusiva para a equipe com espaço individual privado e área comum para comunicação direta dos membros da equipe.
No planejamento da primeira interação o cliente do negócio escolhe os requerimentos que são de maior valor para o negócio, com detalhamento em alto nível de como o sistema deve funcionar ( histórias de usuário ou history points ).
Umas das principais caracteristicas da entrega ágil é a formação de equipes pequenas, porém cada membro com competência individual elevada, com alto nível técnico e comprometido a seguir o processo. Vale muito aqui a observação pessoal do gerente de projeto para manter a equipe ágil.
A colaboração intensa é nítida por exemplo em reuniões ( daily meetings ) onde o desenvolvedor define a estimativa de esforço e o cliente as prioridades.
O feedback e as decisões são imediatas ao passo que o cliente está disponível para a equipe de desenvolvimento para aprovar e validar a entrega ( adeus refactoring ).
Para as retrospectivas do projeto um facilitador neutro ( fora da equipe ) pode organizar a reflexão. Todos os membros do projeto estão em uma sala e em círculo, seguindo regras de reunião ( celular desligado, sem notebook, cada um com tempo limite de abordagem, etc ). Cada membro responde as seguintes questões: O que está funcionando bem ? Em que podemos melhorar ? Quais são os obstáculos ou problemas enfrentados pela equipe ?. Deve ser utilizado uma fatia de tempo para reflexão e resolução dos problemas indicados. A reunião termina com o facilitador registrando as ações.
Este post pode ser lido em meu blog:
http://ccasado.wordpress.com/2008/01/06/estrategias-de-entrega-agil