Menu
Esqueceu a senha? Fazer cadastro

::: Blog MPM

Cronogramas dinâmicos em Ágil

04 05 2014

Graças a postagem do Fábio Cruz, que fez uma excelente apresentação sobre Cronogramas Ágeis no Blog da MundoPM,  eu posso adiantar a publicação de um assunto que há tempos quero apresentar neste espaço: O Agendamento Dinâmico de Recursos para métodos Ágeis.

Para avançar com este tema, que exige uma introdução aos cronogramas convencionais e também as formas de se desenvolver cronogramas no mundo Ágil, vou contar com os exemplos do artigo do Fábio e a partir deles incrementar uma aplicação de outros conceitos em cronogramas para criarmos então “Cronogramas dinâmicos” para métodos Ágeis.

Parte 1: Introdução –

Parte 2:  Cronogramas dinâmicos a partir do Agendamento Dinâmico de Recursos (Dynamic Resource Scheduling)

Um agendamento dinâmico é baseado no aproveitamento de recursos computacionais e o detalhamento de cronogramas sem a necessidade de se manter centenas de relacionamentos entre atividades intermediárias.  Para os puristas da aplicação do Método do Caminho Crítico seria uma heresia, pois estamos falando sobre a manutenção de cronogramas sem a manutenção de relacionamentos lógicos (dependências entre atividades). Cronogramas são então desenvolvidos a partir da distribuição de cargas de trabalho entre recursos, utilizando algoritmos de nivelamento de recursos.

Qual o benefício?

Em métodos ágeis, nós vamos substituir a necessidade de desenvolver um longo cronograma para a identificação de datas de entrega por um método que já estabelece “datas fixas” para conjuntos de entrega e depois determina os elementos que compõe cada um destes conjuntos. Abaixo me utilizo de uma ilustração da postagem do Fábio Cruz:

2No entanto, a definição do que pode caber em cada um destas etapas de entrega (os Sprints) requer uma avaliação do conjunto de estorias necessárias, os recursos disponíveis, as prioridades e valor para o negócio de cada subconjunto de entregas. Este é um trabalho que – se bem elaborado – irá agregar valor ao produto rapidamente, já nas primeiras entregas e também vai estabelecer uma prioridade para componentes fundamentais do projeto que servirão para entregas futuras do projeto.

Em outras palavras, com uma equipe de 4 pessoas trabalhando 4 semanas eu tenho 640 horas de trabalho. Estas horas devem ser empregadas no desenvolvimento de estorias e na correção de bugs.  Mas quais estórias?

A seleção de estórias para cada conjunto de entregas ou para um “Sprint” devem atender um critério de utilidade (valor do negócio) para o cliente; no entanto, não basta apenas selecionar os itens classificados com a maior pontuação para o negócio , pois se não desenvolvermos uma relação lógica também entre as entregas, etapas futuras do projeto poderão ter uma produtividade reduzida.

O Agendamento Dinâmico de Recursos irá permitir uma rápida avaliação de “quantidades de trabalho” e prioridades para então auxiliar a equipe a decidir quais são os elementos que serão colocados em cada entrega.

Parte 3 – Exemplo Prático

A ordem dos tratores altera a construção da ponte.
Em muitos casos, a priorização adequada entre duas tarefas em uma estória pode favorecer a liberação da equipe para trabalhar em mais itens em um mesmo período.

2014-05-04 12_29_34-3.png (877×625)

Figura parcial retirada da postagem de Fábio Cruz, sobre Cronogramas Ágeis

Vamos imaginar 4 tarefas: 1.Ap, 1.Bp,1.At, 1.Bt – todas elas necessárias para cumprirmos com a “Estoria 1”.

  • 1.Ap e 1.Bp são atividades de programação e serão realizadas por Fábio Cruz, em 8 horas e 4 horas respectivamente.
  • 1.At e 1.Bt são atividades de testes e serão realizadas por Peter Mello, em 8 horas cada.
  • Há uma dependência lógica entre cada item de programação e seu respectivo teste.
  • O trabalho total previsto é de 28 horas (12 horas de programação do Fábio e 16 horas de testes do Peter).

Em um cronograma inicial Ágil, conforme exemplo do Fábio Cruz, teríamos algo como:

Projeto completo, com base ao exemplo de Fábio Cruz

Projeto completo, com base ao exemplo de Fábio Cruz

 Neste caso, a equipe estabelece o detalhamento da sequência entre as atividades durante as reuniões diárias e o “micro-planejamento” está sob controle integral da equipe. As tarefas em questão sequer aparecem no cronograma pois estão “contidas” na Estoria 1.

Ao adotarmos o Agendamento Dinâmico, a primeira grande alteração em nosso cronograma é que para cada Atividade nós iremos armazenar informações mais específicas sobre a carga de trabalho esperada e o “valor para o negócio” que é um mecanismo para se priorizar atividades e entregas em função do benefício que será dado ao usuário final.  Isso não é realmente um trabalho extra tendo em vista que estas estimativas também são necessárias para a própria definição do que é que “cabe” em uma entrega e sua priorização (muitas equipes ágeis usam ferramentas na WEB ou Excel para esta classificação).

Se utilizarmos o MS-Project, a “carga de trabalho” será aplicada no campo de  duração da atividade e o “Valor do Negócio” será aplicado no campo de “Prioridade”.  Também iremos dar o nome do recurso para cada atividade e – em alguns casos – criar alguns relacionamentos lógicos.

Precisamos então ampliar o detalhe de nosso cronograma, para algo parecido com:

Tarefas: Carga & Recurso

Tarefas: Carga & Recurso

Este cronograma já é “assustador” para muitas equipes de projetos ágeis pois aparenta possuir um nível de controle que não gera benefícios à equipe pois ela é responsável pelo seu micro-planejamento. No entanto, A definição de cargas de trabalho por tarefa já é uma necessidade compreendida por estas equipes pois é através desta análise de carga que podemos verificar qual volume de trabalho realmente por ser entregue para cada estoria, iteração ou entrega.

Ao utilizarmos os recursos de nivelamento da ferramenta, nós temos então um cronograma resultante que servirá – no mínimo – para verificarmos se a quantidade de trabalho prevista para uma iteração é compatível com o tamanho da equipe. No exemplo abaixo, além do Fábio e Peter, a primeira Iteração teve o seu trabalho total distribuído também com a Ana e o José.

Tarefas: Distribuição por Carga e Recursos

Tarefas: Distribuição por Carga e Recursos

O nivelamento neste caso demonstra que o tempo previsto para a Iteração 1 (9 dias) é possível de ser realizado: A soma de toda a carga de trabalho prevista é compatível com a disponibilidade de horas da equipe.

Isso normalmente é feito no Excel ou a partir da sensibilidade da equipe, mas pode conter “vícios”  que impedem que o tempo total do projeto seja otimizado. Quando o tempo total é otimizado, temos maior disponibilidade para a realização de novas tarefas, estórias ou bug-fixes em uma mesma iteração.

Cronogramas dinâmicos podem nos apresentar oportunidades maravilhosas, cuja continuidade na sua aplicação irá permitir que a equipe descubra caminhos alternativos para a realização do trabalho.

No exemplo a seguir, a simples troca na ordem de execução das tarefas 1.A e 1.B permitem que a Estória 1 seja concluída em 2,5 dias no lugar de 3. Quando isso se repete em diversas outras estorias e iterações, equipes podem produzir resultados em casos já verificados entre 5% a 20% de redução no tempo para a realização de um mesmo trabalho.

Otimização de Resultados

Otimização de Resultados
(inversão da ordem de início entre a atividade 1.Ap e 1.Bp em relação ao cronograma anterior)

É muito comum equipes auto-gerenciadas perceberem pequenos ganhos locais com a inversão de certas prioridades entre atividades, completando assim um mesmo trabalho em uma duração menor (embora o trabalho permaneça o mesmo).

No entanto, uma administração dinâmica destes nivelamentos, sendo continuamente repetidos de tempos em tempos (em uma reunião semanal, por exemplo), podem garantir as equipes a identificação de tempos extras para a realização de bug-fixes necessários ou excepcionalmente até para a inclusão de estórias ainda não previstas em uma iteração.

A adoção de Cronogramas dinâmicos em Ágil, com maior detalhe no nível das tarefas, não significa abrir mão do auto-gerenciamento das equipes e sim a tomada de decisão de forma “mais científica ou matemática” em relação ao trabalho que deve ser realizado no dia-a-dia.  Um cronograma construído com alguns links principais e sempre utilizando a definição de “carga de trabalho” no lugar de “duração”, bem como o nivelamento de recursos pode se tornar um instrumento valioso para que a própria equipe tome decisões importantes em relação a continuidade do seu trabalho, além de permitir argumentos consistentes na hora de negociar com o “Scrum Master” ou “Product Owner” quais são os elementos que necessariamente devem entrar em uma iteração.

Parte 4 – Resumo

O Agendamento Dinâmico deve permitir:

1) Decisão rápida em relação ao que está no “backlog” ou lista de funções do sistema e a sua distribuição nas entregas (os “Sprints” no caso do Scrum);

– Para cada estória ou conjunto de tarefas, deve auxiliar a equipe na tomada de decisão em relação a distribuição no tempo, permitindo a identificação de conjuntos lógicos e sua respectiva carga de trabalho e valor do negócio para cada entrega.

2) Organização do trabalho para cada dia, semana ou período, favorecendo um sequenciamento lógico para atender uma entrega.

3) Ganhos de produtividade com a absorção de 5% a 20% de tarefas extras por iteração, simplesmente com a otimização da sequência lógica entre eles;

4) Manutenção de cronogramas com um grau de dificuldade muitas vezes inferior a adoção de um detalhamento com base ao Método do Caminho Crítico, visto que somente as dependências obrigatórias (programação > testes) precisam ser definidas e o restante do cronograma é desenvolvido a partir dos recursos de nivelamento presentes em diversas ferramentas.

Parte 5 – Agendamento Dinâmico Avançado

Para as equipes que vencerem o medo em relação ao desenvolvimento de cronogramas com um nível de detalhe maior do que o normalmente empregado em projetos ágeis, vale verificar as vantagens de se utilizar ferramentas que realizam o nivelamento de recursos baseado em habilidades, como é o caso do Spider Project e do Primavera.  Estas ferramentas poderão auxiliar a equipe a decidir qual programador ou testador deve ser utilizado em atividades similares, garantindo assim um resultado global na distribuição de tarefas mais uniforme, mais rápido e com redução de durações significativas em um projeto.

Métodos Ágeis quebraram paradigmas de Gestão para alcançarem resultados melhorados em relação ao emprego de técnicas tradicionais. Por que não quebrar mais um paradigma e desenvolver cronogramas dinâmicos?  Acredite: A ordem dos tratores altera a construção da ponte!

Escreva para petersmello@gmail.com

::: Autor do post