A métrica de eficiência de fluxo
Métrica de eficiência de fluxo: preparação, medição e técnicas de acompanhamento em desenvolvimento de software
Este é o segundo de uma série de textos sobre eficiência aplicada ao contexto de desenvolvimento de software. Para extrair o máximo deste conteúdo, recomendo ler o primeiro o texto, A busca pela eficiência em times de tecnologia. Se você já leu, ficou claro como a eficiência de fluxo é primordial para fatores tão importantes como a capacidade de entregar valor rápido e a identificação de fontes de desperdício.
Principais tópicos
Em direção ao entendimento prático da eficiência de fluxo, será abordado aqui tópicos como:
- Como preparar o fluxo
- Como metrificar a eficiência de fluxo
- Técnicas de acompanhamento da eficiência
A preparação do fluxo e as técnicas de acompanhamento são maneiras que encontramos de organizar o processo e monitorar a eficiência. Claro, estas maneiras devem ser adaptadas aos diferentes contextos.
Preparando o fluxo
Passo 1 — O processo
Para calcular a eficiência de fluxo, é preciso primeiro termos um processo estruturado, que representa as etapas de trabalho que uma demanda atravesse até completar sua missão de entregar valor para o cliente. Se ainda não existe este processo bem desenhado, é recomendado utilizar o STATIK, que é uma técnica baseada na visão sistêmica que ajuda no mapeamento do fluxo. Como exemplo aqui, vamos usar um fluxo que normalmente representa o ciclo de construção de uma funcionalidade de software:
Para simplificar a explicação, o exemplo engloba as etapas envolvidas durante o desenvolvimento e entrega, não cobre todo o ciclo de vida da demanda de software. Para se ter a visão completa do ciclo de vida, o que Mary e Tom Poppendieck chamam “do conceito ao dinheiro”, também é preciso considerar as etapas de análise e refinamento da demanda.
Outra questão a considerar é que, mesmo que raras, há situações que as etapas do processo podem ser “ajustadas” para aumentar a maior eficiência de fluxo. Isso não é correto, as etapas do processo precisam refletir a realidade como ela é e, por consequência, a eficiência de fluxo também. Nos últimos textos desta série, vamos discutir maneiras genuínas de melhorar a eficiência de fluxo.
Passo 2 — As etapas de trabalho
Num segundo passo, precisamos diferenciar quais são as etapas que agregam valor à unidade de fluxo, conhecidas como etapas de trabalho. São fases em que há alguém trabalhando no item, como por exemplo, desenvolvendo e validando.
Passo 3 — Determinar as etapas de espera
O terceiro passo é identificar as etapas de espera, também chamadas de filas. Nestas etapas, o item não está sendo trabalhado, está aguardando por algo. Em alguns casos, está aguardando para ser puxado para a etapa seguinte e aí sim ser trabalhado. É normal existir etapas de espera no fluxo, a questão mais relevante é o tempo que os itens ficam (aguardando) nestas etapas. Até o final desta série de textos você entenderá porque as filas são as piores inimigas da eficiência de fluxo.
No nosso fluxo de exemplo, vamos representar em azul as etapas de trabalho e em amarelo as etapas de espera:
Identificar as etapas de espera (filas) e deixá-las visíveis é um dos pontos mais importantes no entendimento da eficiência de fluxo. Diferente do setor de manufatura, onde o trabalho parcialmente completo no processo, é fácil de ser visto através de pilhas de estoque e quantificado, no contexto do trabalho do conhecimento nem sempre isso é tão evidente.
Manufacturing queues consist of physical things, and when inventory in a factory doubles, it’s obvious. That’s not the case in product development, where inventory largely consists of information, such as design documentation, test procedures and results, and instructions for building prototypes. When inventory doubles in an engineering process, there are no physical signs. (Stefan Thomke and Donald Reinertsen Six Myths of Product Development)
Passo 4 — Os bloqueios
O quarto passo é identificar os bloqueios que o item pode sofrer no decorrer do fluxo. É muito comum no desenvolvimento de software nos depararmos com situações em que se está “aguardando liberação de ambiente”, “aguardando uma definição”, ou mesmo, o item foi pausado para o time trabalhar em outro item urgente que surgiu.
Passo 5 — Tempo de ciclo
O tempo de ciclo pode ser calculado a partir da somatória do tempo de trabalho, espera e bloqueio.
Ele não contempla o tempo que o item ficou em Backlog aguardando alguma definição, priorização ou disponibilidade de capacidade para entrar no foco de desenvolvimento da equipe. Para termos também este tempo em Backlog, podemos olhar para o lead time:
Cálculo da eficiência de fluxo
Como você já deve ter percebido, é preciso registrar os momentos de cada movimentação do item e os tempos de bloqueio. Para isso, precisamos da ajuda de uma ferramenta¹ para registrar e calcular automaticamente a eficiência de fluxo.
Vamos utilizar o exemplo deste item trabalho (imagem acima) para demonstrar o cálculo da eficiência de fluxo. Este item teve tempo de ciclo de 28,4 dias e o tempo de trabalho é 11,9 dias.
Assim, podemos chegar ao valor de 42% de eficiência de fluxo deste item de trabalho.
Eficiência de fluxo do time
Uma vez que temos a eficiência de fluxo calculada automaticamente para cada item de trabalho, vamos buscar entender padrões e tendências ao analisar a eficiência de um conjunto de itens que uma equipe trabalhou por determinado período. Para analisar este conjunto, escolhemos agrupá-las por semanas (ou meses) que os itens foram finalizados. Por exemplo, ao longo de uma semana, a equipe finalizou cinco itens, dois na terça-feira e os outros três na sexta-feira. Para cada um deles precisamos do somatório (∑) do tempo por tipo de etapa (trabalho ou espera) e tempo de bloqueio:
Vale ressaltar que todas as cinco demandas foram iniciadas nas semanas anteriores, logo a eficiência de fluxo só será calculada no momento que o item é finalizado. Se um item passou 20 dias parado em etapas de espera e mais 3 dias em etapas de trabalho, essa baixa eficiência de fluxo (13%) só aparecerá no gráfico ao final da quinta semana. Por isso, o uso de gráficos (apresentados a seguir) para acompanhar a eficiência de fluxo não exclui a necessidade de acompanhar o andamento das demandas enquanto elas estão sendo trabalhadas.
Monitorando a eficiência
Gráfico de dispersão da eficiência de fluxo
Uma forma simples e direta de acompanhar a eficiência de fluxo de cada item é através do gráfico de dispersão.
Cada ponto é um item de trabalho já finalizado, com diferentes eficiências de fluxos indicadas no eixo esquerdo.
Dados consolidados por time
A tabela abaixo mostra uma visão resumida dos valores de eficiência de fluxo, obtidos a partir do somatório de tempo trabalho, espera e bloqueio de vários itens de trabalho finalizado em determinado período, cada linha mostra os dados de uma equipe.
Gráfico de barras empilhadas com eficiência
Também nos deparamos com a necessidade de entender como a eficiência aumenta ou diminui ao longo das semanas, na perspectiva de cada time.
No gráfico acima, as barras empilhadas representam o somatório de tempo (em dias) que os itens finalizados naquela semana (eixo horizontal) ficaram em cada tipo de coluna (trabalho, espera) e o tempo que ficaram bloqueados. Estas barras são orientadas pelo eixo vertical esquerdo, que representa a quantidade de dias. Com base nos números indicados nestas barras, a eficiência de fluxo é calculada (linha preta) seguindo o eixo vertical direto, este é representado em porcentagem. Por exemplo, todos os itens finalizados na semana de 5 de setembro, geraram eficiência de fluxo média de 23%.
Este gráfico mostra uma visão resumida da eficiência de fluxo, não mostra informações detalhadas sobre a saúde do fluxo e pode ofuscar itens de exceção. Ainda sim, ele é valioso para indicar a tendência geral de eficiência de fluxo do time. Além de funcionar como gatilho para análises sobre os motivos que estão levando as entregas a terem baixa eficiência de fluxo.
Para análise correta deste gráfico, é preciso considerar os seguintes fatores:
- Não misture no mesmo gráfico eficiência de fluxo proveniente de itens de trabalho de naturezas muito diferentes, por exemplo: bugs e user stories.
- Não inclua na mesma análise períodos nos quais houveram grandes diferenças no contexto da equipe. Se ocorreram mudanças significativas no sistema de trabalho ou na missão da equipe, é preciso analisar separadamente estes momentos.
- Não compare eficiência de fluxo entre diferentes equipes, cada equipe de desenvolvimento de software possui um conjunto de fatores únicos (pessoas, stakeholders, sistemas, legados, níveis de maturidade, etc.).
Final
A métrica de eficiência de fluxo é especialmente sensível a muitos fatores que compõem o sistema de trabalho, isso vai ficar mais tangível no próximo texto. Todos estes fatores são peculiares a cada time, a cada contexto. Logo, não faz sentido as discussões em torno de “padrões de mercado” e comparações das métricas de eficiência de fluxo de entre diferentes times. Não utilize a média de eficiência de fluxo de um time como um “score” de comparação com outros.
As métricas, seja em qual for o formato de visualização, devem expressar a realidade. Nunca devem ocorrer mobilizações “para melhorar a métrica” e sim para melhorar o sistema de trabalho e, por consequência, as métricas serão melhores.
A eficiência de fluxo é um valioso gatilho para a busca por melhorias que se desdobram em diferentes naturezas, como processos, pessoas, comunicação, ferramentas, engenharia de software, entre outras. Isso abre incontáveis conexões entre eficiência de fluxo e muitos outros assuntos. No Como melhorar a eficiência de fluxo — Parte 1 e Parte 2, algumas destas melhorias serão propostas.
Mas antes, mesmo com o processo estruturado de trabalho, metrificação ocorrendo e suporte de diferentes visualizações construídas, precisamos entender melhor como a força da variabilidade influencia na eficiência de fluxo. No próximo texto A influência da variabilidade na eficiência de fluxo, vamos adentrar neste assunto.
Referências
- Implementando o Desenvolvimento Lean de Software: do Conceito ao Dinheiro. Bookman Editora. — Poppendieck, M. e Poppendieck, T. (2011).
- Six Myths of Product Development. Harvard Business Review. — Reinertsen, D. e Thomke, S. (2012).
- STATIK Canvas — O melhor guia prático para começar com Kanban — Cleiton Mafra (2021).
Nota de Rodapé
[1]: No Luizalabs hoje, é utilizado uma ferramenta desenvolvida internamente chamada KanbanForce que foi projetada sob a influência de conceitos como a eficiência de fluxo. No passado, a ferramenta de mercado SwiftKanban contribuiu muito para a organização e consolidação dos fluxos de trabalho em modo digital.