Focus Light - copyright digitalart

Oi Pessoal! No post de hoje falarei sobre a forma como as equipes devem se organizar para a implementação das histórias em uma Sprint. Uma vez que o Sprint Backlog está montado e priorizado a equipe já pode começar os trabalhos de implementação das histórias selecionadas. Porém, como a equipe deve se dividir para a execução dos trabalhos? Cada membro deve “atacar” uma história diferente? Paralelizar é uma boa estratégia?

Em geral, existe uma tendência a pensarmos que paralelizando as implementações das histórias estamos ganhando tempo e sendo mais eficiente, o que não é verdade. Na metodologia ágil, ao adotar a estratégia de várias linhas de trabalho em paralelo, a equipe corre um grande risco de chegar ao final da Sprint com muitas histórias parcialmente implementadas, o que é indesejável. Ao final de cada Sprint a equipe deve possuir o maior número de histórias prontas, pois somente estas agregam valor ao produto.

O gráfico de burndown pode ser utilizado como uma ferramenta interessante para que a equipe perceba como ela está em relação ao objetivo final da Sprint. Nos casos em que a equipe ataca várias histórias em paralelo, o gráfico de burndown tende a ficar parecido com o da figura abaixo, que mostra que a equipe está bem distante (linha azul) do que deveria (linha tracejada vermelha) e correndo sério risco de terminar a Sprint sem incrementos “entregáveis” ao produto, como no gráfico abaixo:

Portanto é importante que a equipe busque “atacar” e finalizar uma história de cada vez, começando pelas mais prioritárias. Desta forma, o risco de chegar ao final da Sprint com poucas ou nenhuma história pronta é bem menor.

Neste post destaco duas estratégias que nossa equipe adota para organizar a divisão dos trabalhos e evitar os “meio-prontos”:

Pair Programming

O pair programming é uma técnica de desenvolvimento ágil de software em que dois programadores trabalham juntos em uma mesma estação de trabalho. Enquanto um programador mexe no código, o outro observa o que está sendo feito. Os dois programadores discutem e reveem o que foi feito a fim de prever problemas futuros e chegar à melhor solução. Os dois programadores também podem trocar de papel entre si, revezando entre quem mexe no código e quem observa.

Acredito que com o pair programming as melhores soluções podem ser atingidas mais rapidamente. Assim, ao adotar o pair programming na implementação de uma história, aloca-se mais esforço em um mesmo item de trabalho para que este seja logo concluído. Ou seja, os esforços que poderiam estar sendo utilizados em duas frentes de trabalho, passam a estar focados em uma mesma tarefa, buscando sempre finalizar as tarefas iniciadas.

Divisão adequada das tarefas no planejamento 2

A segunda estratégia trata da divisão das tarefas no Planejamento 2. Uma vez definido o Sprint Backlog, a equipe parte para o planejamento 2, onde cada história é dividida em tarefas menores. Esta estratégia tem por objetivo uma divisão das tarefas de forma que cada membro da equipe possa trabalhar em uma tarefa diferente na mesma história. Vejam que é diferente do pair programming, pois as tarefas são executadas individualmente, porém fazem parte da mesma história. O que se pretende com esta estratégia é organizar o trabalho de forma que todos os esforços da equipe possam ser alocados em tarefas da mesma história, para que esta seja logo concluída.

É bom lembrar que a escolha destas estratégias depende de cada história. Depende do quão divisível ela é. Nem sempre é possível dividir uma história em tantas tarefas quanto a quantidade de membros da equipe. Além disso, para certas tarefas o uso do pair programming pode não trazer grandes benefícios fazendo com que a equipe aloque mais esforço que o necessário para a execução de tarefas simples, que poderiam ser facilmente executadas por 1 membro. Portanto a escolha da estratégia deve estar alinhada ao perfil da equipe e ao nível de complexidade das histórias, para que se possa chegar ao final da Sprint com a maior quantidade possível de histórias prontas.

E você, como faz a divisão dos trabalhos em uma Sprint? Deixe seu comentário aqui para discussões!