Gráfico CFD: conceitos e principais padrões - Softplan
Softplan > Tech Writers > Gráfico CFD: conceitos e principais padrões
Gráfico CFD: conceitos e principais padrões
Formando em Ciência da Computação pela UFSC, atua na Softplan como Desenvolvedor Fullstack Java desde 2014. Além do domínio técnico, tem interesse em assuntos relacionados à agilidade, boas práticas e processos.
Se você, ao longo de sua jornada, já trabalhou ou teve algum contato com Kanban, provavelmente já ouviu falar do gráfico CFD, certo? O CFD (Cumulative Flow Diagram) é um gráfico capaz de identificar, de forma visual, diferentes gargalos ou disfunções que o seu time possa estar enfrentando no dia-a-dia. Ele é considerado um dos mais importantes gráficos na gestão de fluxo.
Este gráfico fornece desde informações mais básicas sobre o fluxo de trabalho, como, por exemplo, quantidade de trabalho já concluída, quantidade de trabalho em andamento, o ritmo de entregas, etc, indo até a possibilidade de identificar problemas mais complexos. Um de seus principais objetivos é mostrar, de forma clara, o quão estável é seu fluxo de trabalho e onde você pode agir para torná-lo mais eficiente e previsível.
Apesar de bastante conhecido, o CFD é um gráfico cuja interpretação pode não ser trivial. Mas não desista! É importante entender os conceitos e praticar para que você possa extrair todo o seu potencial. Vale destacar aqui que o CFD costuma não trazer respostas, mas sim fornecer insights valiosos para que você possa se aprofundar na causa raiz dos problemas identificados.
Bora lá, vamos começar do início. Antes de partir para a análise de algumas situações cotidianas em projetos, vou apresentar o CFD e seus principais conceitos.
Abaixo, temos uma ilustração simplificada de um CFD.
Exemplo de Gráfico CFD — Créditos: Kanbanize
Como ler um CFD
A construção de um gráfico CFD é simples. No eixo horizontal, nós temos a linha do tempo, que você pode escolher representar em dias, semanas, sprints, etc. Já no eixo vertical, temos, de forma acumulada, a quantidade de tarefas no processo ao longo do tempo. Cada uma das curvas representa uma etapa do fluxo de trabalho conforme elas aparecem no próprio quadro kanban do time (backlog, em desenvolvimento, em testes, finalizado, etc).
Como o próprio nome já diz, o gráfico é cumulativo. Cada uma das curvas só pode aumentar ou, na pior das hipóteses, manter seu valor caso não esteja havendo movimentação naquele estágio. Se você observar alguma curva caindo no eixo Y, algo está errado.
A linha superior da curva irá representar o ponto de entradas das tarefas naquela etapa do fluxo, já a inferior mostra a saída da tarefa daquela etapa. Apenas com base nisso, já é possível a extração de algumas métricas bem interessantes. Por exemplo, traçando uma linha paralela entre a linha superior da curva do estágio "backlog" e a linha superior da curva do estágio "pronto", você terá a quantidade de tempo que um item demorou para ser concluído a partir do momento que entrou para o seu backlog. Ou seja, o seu lead time. Conforme ilustrado abaixo, fazendo uma análise muito semelhante, você chegará a outras métricas como cycle time, WIP, quantidade de trabalho ainda a ser feito, entre outras.
Visualização de Métricas no CFD — Créditos: Mauricio Fritsch
Cenários comuns de CFD
Uma maneira bastante simples e prática de analisar o quão estável é seu fluxo de trabalho através do CFD se dá pela análise da forma como as diferentes curvas do gráfico estão progredindo. Nesse ponto, existem alguns padrões bastante comuns que valem ser destacados:
Quando as curvas estão progredindo em paralelo
Padrão 1 — Curvas progredindo em paralelo — Créditos: Kanbanize
Esse cenário seria o considerado ideal para um fluxo de trabalho estável e fluído. O fato de as diferentes curvas estarem progredindo de forma paralela significa que você tem um fluxo de trabalho onde o time consegue produzir em velocidade estável nos diferentes estágios e novas tarefas entram nos estágios do fluxo na mesma proporção de tarefas que estão saindo dele.
Na prática, dificilmente você verá um gráfico CFD tão bonito e estável como esse no dia a dia. Mas isso também pode ser uma boa notícia, já que é quando as coisas não vão tão bem que você terá as maiores oportunidades de aprendizagem com o CFD.
Quando uma das curvas está se alargando rapidamente
Padrão 2 — Curvas se alargando rapidamente — Créditos: Kanbanize
Esse cenário representa uma situação típica em fluxos de trabalho. A faixa que está se alargando no CFD nos traz a informação de que a quantidade de itens sendo trabalhados simultaneamente naquele estágio está aumentando. Ou seja, os itens estão saindo do estágio numa velocidade menor do que a velocidade em que entram.
Mas o que está acontecendo no dia a dia do time pra que o gráfico tenha esse comportamento? O CFD é capaz de responder a perguntas como essa? A resposta é não. O CFD vai ajudar você a identificar que o seu fluxo de trabalho está com um problema, que, no caso em questão, pode estar sendo causado por diferentes razões. As tarefas podem estar se acumulando devido a bloqueios, trocas de contexto, pressão para mais tarefas serem executadas em paralelo, entre outros motivos. Você precisará de um trabalho de investigação mais profundo para chegar até a causa raiz.
No cenário em questão, uma boa abordagem seria promover uma redução no limite de WIP do estágio que está inchando, além de certificar-se de que o time está realmente focando os esforços na conclusão dos itens que já estão no estágio antes de iniciar outras tarefas. Quem nunca ouviu a clássica frase "pare de começar e comece a terminar"? É sobre isso.
Quando uma das curvas está rapidamente se estreitando
Padrão 3 — Curvas se estreitando rapidamente — Créditos: Kanbanize
Esta situação aponta um cenário oposto ao apresentado anteriormente. Quando uma curva aparece se estreitando no gráfico CFD, isso significa que a quantidade de atividades naquele estágio está diminuindo, ou seja, a quantidade de itens que estão saindo daquele estágio é maior do que a quantidade de itens entrantes. Uma possível abordagem para esse cenário seria pensar: será que o WIP do estágio em questão não está maior do que o necessário? O fluxo de trabalho não poderia ser otimizado se mais esforço estivesse sendo colocado em algum outro estágio?
Quando uma das curvas apresenta comportamento de escada
Padrão 4 — Escadas — Créditos: Pawel Brodzinski
Nesse cenário, é possível observar que a quantidade de itens no estágio de teste cresce continuamente, mas não estão sendo concluídos, pois a curva "done" não acompanha o mesmo crescimento. Quando você ver um gráfico CFD onde há curvas com esse comportamento de escada, isso, provavelmente, está ligado a itens muito grandes sendo trabalhados. Itens muito grandes passarão muito tempo sendo desenvolvidos e mais um tempo considerável sendo testados e validados para que, só então, possam ser considerados concluídos.
O mesmo cenário pode acontecer em situações onde o trabalho vai sendo acumulado para ser validado somente ao final de um ciclo ou próximo da data de entrega, ao invés de ser continuamente testado, validado e entregue. Outra hipótese seria ainda a de que os testadores estão levando muito mais tempo do que o previsto para concluir os testes por estarem encontrando grande quantidade de bugs, por exemplo. De novo, conforme mencionado outras vezes, podemos não saber a causa raiz, mas já sabemos por onde começar a investigar.
Quando todas as curvas apresentam linhas retas
Padrão 5 — Todas as Curvas com Linhas Retas — Créditos: Pawel Brodzinski
Bom, a interpretação dessa situação é um tanto quanto óbvia. Se existe uma curva estagnada em linha reta, isso significa que o trabalho está parado naquele estágio do fluxo de trabalho. Nesse cenário, temos três curvas diferentes estagnadas. Ou seja, todo o fluxo está estagnado. Novamente, a causa raiz do problema pode não ser uma, mas sim várias: a primeira e mais óbvia seria verificar se houveram feriados, desenvolvedores em férias ou outros eventos que impediram o trabalho do time. Outra hipótese é a existência de outras razões impedindo que o trabalho do time avance, como, por exemplo, itens muito grandes sendo trabalhados demorando muito tempo para serem concluídos.
Num cenário como esse, possíveis abordagens seriam investigar a existência de bloqueios que estejam travando o fluxo de trabalho e agir para removê-los ou ainda investigar se o time não está trabalhando em itens muito grandes. Nesse caso, o ideal seria quebrá-los, se possível, em itens menores.
No cenário em questão, independente de qual tenha sido a razão da estagnação, depois de um tempo a situação foi resolvida, pois é possível ver em seguida as curvas voltando a progredir.
Quando somente algumas curvas apresentam linhas retas
Padrão 6 — Algumas Curvas com Linhas Retas — Créditos: Pawel Brodzinski
Muito parecido com o cenário anterior, a diferença é que, neste caso, a estagnação está ocorrendo em somente parte do fluxo. Nesse caso, enquanto o estágio de desenvolvimento parece estar progredindo bem e dentro do esperado, o estágio de testes e a conclusão dos itens pararam de progredir num dado momento e não retomaram ao ritmo normal, sinalizando que o problema ainda não foi resolvido.
Tendo em vista que o ritmo de desenvolvimento segue normal, uma hipótese forte aqui seria estar acontecendo um problema especificamente na etapa de testes, com os testadores ou com o próprio ambiente de testes, por exemplo. Como os itens não estão podendo ser testados, por consequência, também não serão entregues, ficando a curva "done" também estagnada.
Ao se deparar com um CFD deste tipo, algumas coisas podem ser feitas. A primeira delas, seria, assim como no caso anterior, investigar o motivo do bloqueio no estágio em questão. Outra possibilidade seria analisar se as pessoas não estão trabalhando de forma muito isolada e se um melhor trabalho em equipe já seria eficiente pra destravar esse fluxo.
Quando as curvas apresentam descidas
Padrão 7 — Linhas Descendo — Créditos: Pawel Brodzinski
Chegamos ao nosso último cenário de exemplo. Aqui, temos uma situação clara de algo que, definitivamente, não deveria estar acontecendo dentro do seu projeto. As curvas descerem significa que existiam itens sendo trabalhados dentro do seu fluxo que voltaram no fluxo ou simplesmente desapareceram. É um exemplo clássico de quando há alguma disfunção acontecendo dentro do fluxo. A queda também poderia ser explicada por entregas/projetos que foram cancelados ou pela desistência de continuar trabalhando em determinado item, o que, provavelmente, significa que o time descobriu tardiamente que aquele item em questão não fazia mais sentido dentro do projeto.
Uma dica, nesse caso, seria avaliar se o seu time tem o hábito de voltar itens no fluxo e se essa é a melhor abordagem. Algumas pessoas podem fazer isso com boas intenções quando desejam, por exemplo, passar o item em questão para uma outra pessoa dentro do time. Um exemplo seria um testador que encontra um bug e deseja passar o item novamente para o estágio de desenvolvimento para que o bug seja corrigido. Esse tipo de abordagem pode não ser a ideal, pois, além de gerar esse tipo de disfunção, ao voltar o item para uma etapa anterior é possível que o item perca prioridade diante de outras tarefas já em desenvolvimento. A abordagem mais adequada, nesse caso, seria manter o item na etapa de testes e comunicar um desenvolvedor que foi um encontrado um bug o qual está impedindo a liberação do item e cuja correção precisa ser priorizada.
Conforme vimos, o CFD é uma ferramenta poderosa na gestão do fluxo de trabalho do time. Se a sua equipe tiver o hábito de regularmente analisá-lo com cautela, tenho certeza de que uma série de insights serão revelados sobre possíveis gargalos e deficiências no fluxo de trabalho do seu time, visando sempre um processo de melhoria contínua.
Se a interpretação de um gráfico CFD é novidade pra você e pareceu difícil, não desista. Para os novatos, leva um certo tempo até se acostumar com ele, mas os benefícios para você e seu time serão grandes.
Esperamos que o conteúdo deste artigo e os diferentes cenários apresentados tenham sido úteis, esclarecedores e que agora você possa ser capaz de fazer suas próprias análises e extrair o máximo do CFD do fluxo do seu time.
Fontes: http://brodzinski.com/2013/07/cumulative-flow-diagram.html
https://medium.com/@mauriciofritsch/aprenda-a-ler-o-cfd-cumulative-flow-diagram-de-uma-vez-por-todas-9172a8e85dad
https://kanbanize.com/pt/recursos-kanban/metricas-kanban-pt/diagrama-de-fluxo-cumulativo
3 respostas para "Gráfico CFD: conceitos e principais padrões"
Ricardo Dornelles Wolf disse:
16 de August de 2021 às 14:31 02Mon, 16 Aug 2021 14:31:33 +000033.
muito bem analisado, e a questão do comportamento dos gráficos, é excelente a descritiva que fazes!
16 de August de 2021 às 14:33 02Mon, 16 Aug 2021 14:33:21 +000021.
Muito bom o artigo Israel.
A parte que eu mais gostei foi dos cenários comuns, sendo explicado o formato do gráfico e a causa.
08 de September de 2021 às 17:08 05Wed, 08 Sep 2021 17:08:21 +000021.
O gráfico CFD não é mesmo trivial. É importante saber analisá-lo corretamente, daí teremos ótimos insights!