Você sabe quanto seu time consegue produzir com a capacidade atual e como fazer para calcular esse rendimento?
O objetivo deste texto é fazer uma provocação e colocar em discussão um assunto que está sempre em alta no dia a dia da gestão de desenvolvimento de software. Diversas vezes nos perguntamos ou somos indagados: “Seu time é produtivo, poderia entregar mais? Conseguiremos atingir as metas e o prazos? Precisamos aumentar a capacidade dos times?”.
Claro que produtividade não se resume a velocidade ou aumento de capacidade, tem a ver com melhorias de processo, ferramentas, maturidade e conhecimento das pessoas e temos vários indicadores para nos dar tal visibilidade.
O que desejo colocar em pauta é uma proposta para identificar o quanto um time consegue produzir com a sua capacidade atual, medir como está a evolução da equipe ao longo do tempo e, inclusive, comparar o rendimento entre times.
O assunto é polêmico e tem vários fatores influenciadores e, por isso, busquei equalizar estes fatores, baseado em fatos e dados que ocorreram nos últimos projetos em que atuei. Para começar a reflexão, explicarei a forma como planejamos, detalhamos e fazemos as estimativas das entregas.
Após análise prévia dos PO’s e do levantamento de informações sobre problemas e necessidades dos clientes, o time todo é envolvido para discutir, estimar e quebrar as tasks em tamanhos menores (usamos a prática do T-Shirt Size – P, M, G). Cada tamanho representa um número aproximado em horas 8, 16 e 24 horas, alguns times mais, outros menos.
Após detalhar e estimar as tasks, calculamos a capacidade produtiva deste time também em horas. Basicamente olhamos para o histórico do time, tanto de capacidade de entrega em tasks, quanto em volume de horas disponíveis, dentro de um período de tempo (time box de três meses que é a duração da nossa release).
Após isso, começamos a execução e utilizamos alguns indicadores e métricas para acompanhar a evolução das entregas, como, por exemplo, lead time, throughput e WIP.
Mesmo assim, ainda temos dificuldades em responder as perguntas iniciais sobre velocidade de execução, que neste momento se referem à duas questões: “As estimativas dadas previamente no planejamento estão coerentes? Estamos efetivamente conseguindo cumprir as estimativas dadas?”. Pois mesmo que elas estejam sendo cumpridas, podemos ter problemas com impedimentos e aumento de lead time. Consequentemente, o volume de entregas no final, considerando estes dois tópicos, pode ser prejudicado.
Para tentar ter um mecanismo de comparação ao longo do tempo, dando visibilidade de velocidade, calculamos uma métrica baseada no que foi realizado nas últimas releases.
Para cada tamanho P, M e G, em cada time, olhamos o volume de tasks entregues ao final da release e dividimos pelo total de horas produtivas realizadas (horas de análise/programação/teste), diferente do total de horas trabalhadas, exemplo: 8h30 por pessoa. Com isso temos um número de tasks / tempo produtivo investido.
Baseados nisso, observamos primeiramente dentro dos mesmos times se conseguimos manter e evoluir estes números, entregando mais tasks com o mesmo volume de horas empregado, analisando as diferenças entre os times, buscando aprimorar ferramentas, conhecimento e capacidade, chegando a um número “ideal” de velocidade.
No início, a ideia é experimentar, avaliar e aprender. Não é algo milagroso, talvez não seja novo, mas gostaria de propor uma discussão sobre o tema e trocar ideias sobre o assunto, compartilhando o que estamos praticando.
Por Leonardo Denardi – coordenador de desenvolvimento ERP da Senior.