Taverna Taller #3 – Teoria das filas e o papel do fluxonomista
O Taverna Taller é um podcast criado para explorar um tema quente por mês. Cada programa contará com a presença de um integrante do time da Taller ou de algum convidado especial.
Coloque um fone de ouvido, dê o play e aproveite o passeio. Mas cuidado, nem tudo é o que parece Muahaha!
Veja a lista com todos os programas | Taverna Taller no iTunes
* * *
(Confira a seguir a versão transcrita e adaptada do podcast)
ø – A noite continua
Nosso viajante conversa com o cozinheiro e descobre que há mais um taller esta noite na taverna. Ele é o responsável pela “contenção de vazamentos” e trabalha para garantir um fluxo contínuo. O viajante volta ao salão de jantar para encontrá-lo. Em sua cabeça ressoa a fala do cozinheiro: “Entenda, meu jovem, tudo flui…”
[Viajante]
Rafael, é você, né? Ouvi falar muito de você. Mas antes, preciso saber se você não é um impostor. Você poderia se apresentar?
[Rafa]
Eu sou Rafael Caceres. Sou graduado em Computação e venho estudando Ágil há um bom tempo. Hoje sou um dos sócios da Taller que é uma empresa que desenvolve software. Meu papel hoje na Taller é a gestão do fluxo, o que também chamamos de fluxonomia.
[Viajante]
Você tem algum projeto paralelo?
[Rafa]
Eu trabalho como voluntário no Agile Brazil, na parte da organização, na divulgação, no site, e também na organização do Agile Floripa, então estou bem envolvido nas comunidades de ágil e um pouco também em comunidades open source, mas realmente focado em Ágil.
I – O papel do fluxonomista
[Viajante]
O que é um fluxonomista e qual o papel do gestor de fluxo dentro da Taller?
[Rafa]
Trabalhando com sistemas Kanban, temos o gestor de fluxo que é alguém que gerencia o fluxo de trabalho ou fluxo de produção. De acordo com pensadores como Donald Reinertsen, o fluxonomista pensa na visão econômica do fluxo, algo que muitas vezes é esquecido na gestão de projetos.
[Viajante]
O fluxonomista é a evolução do gerente de projetos?
[Rafa]
Eu poderia dizer que é uma evolução, dependendo do que vamos comparar. O fluxonomista é o gestor que não pensa mais só localmente, mas pensa globalmente na empresa. E pensa também quais os impactos econômicos que as decisões do time e dos clientes influenciam.
[Viajante]
Que tipo de conhecimento um fluxonomista precisa para poder atuar em uma empresa de TI?
[Rafa]
Eu acho que não tem uma regra, mas é preciso saber lidar com pessoas. É preciso entender essa visão global, ter uma visão empreendedora, não simplesmente a visão limitada de gestão e sim, a visão estratégica. Entender a teoria do fluxo, teoria das filas, entender que não é possível acabar com a variabilidade trabalhando com produtos. Existem esses paralelos, o lado mais racional e matemático que lida com métricas, que analisa dados e gráficos e o outro lado mais humano de saber conversar com pessoas e entender o que há de errado com cada uma delas e evoluir a partir disso, além claro de ter a visão global e empreendedora.
[Viajante]
A gestão de fluxo tem mais relação com a área comercial da empresa ou mais com a área de desenvolvimento?
[Rafa]
Acredito que os dois. Quando falamos do fluxo, tudo flui, tudo que entra na empresa está fluindo para algum lugar e às vezes as empresas tem vários fluxos acontecendo e eles não estão interligados, o que causa muito desperdício. Usando uma metáfora, podemos dizer que há muitos “vazamentos” no meio, impedindo de ter nossa total capacidade passando. Então, o fluxo ajuda desde a entrada de projetos no comercial até a saída deles na entrega com o cliente passando por todas as fases de análise, produção e entrega. Essa visão completa é o que o fluxo traz, ter essa integração. O fluxo não é uma parte da equipe, mas alguém que está olhando para as dinâmicas que acontecem e assim, tenta mostrar os melhores caminhos, tenta dar informação para que as pessoas tomem melhores decisões.
II – Como a Teoria das Filas se relaciona com a gestão de fluxo?
[Viajante]
De que forma a Teoria das Filas se relaciona com o fluxo e como isso acontece no dia-a-dia de uma empresa que trabalha com desenvolvimento ágil?
[Rafa]
Teoria das Filas são estudos da Matemática que surgiram no início da telefonia, quando começaram a haver muitas chamadas telefônicas ao mesmo tempo, gerando filas, a linha ocupada é um exemplo disso. A Teoria das Filas surgiu no princípio do século passado (1908), com A. K. Erlang. E dali evoluiu muito para ser aplicada em filas como a do banco e supermercado para melhor atender os clientes. E foi além disso, toda a nossa experiência com redes de computadores, internet, sistemas operacionais é baseada na Teoria das Filas que hoje é quase onipresente nas tecnologias que usamos e nos meios que observamos. Então, ter uma fila crescendo muito traz um impacto econômico significativo para todo o projeto, em toda a equipe, desde a entrada até a saída do fluxo. Filas aumentam o meu tempo de entrega, e aí preciso fazer mais coisas para agradar o cliente também. Muitas filas aumentam os Expedites que são os “fura fila”, colocando coisas urgentes e aí passo na frente da fila que já existe travando as outras coisas. Na medida que isso acontece, eu paro de entregar valor porque só entrego essas coisas urgentes que vão aparecendo, acabando com o planejamento. Observar as filas e entender o aspecto econômico delas é o que faz ela ser aplicada no nosso dia-a-dia.
Um exemplo: se eu tenho uma fila muito grande de homologação, normalmente o nosso primeiro pensamento é achar que está tudo bem, pois já desenvolvemos e agora é só o cliente aprovar. O problema dessa situação é que essa fila de homologação está demorando duas semanas para andar, quando ele homologar pode achar um bug ou inconsistência. Ele vai ter que travar essa história para alguém resolver ela. Se o desenvolvedor estiver trabalhando em outra coisa ele vai ter que parar voltar para a tarefa antiga. Esse aspecto de flutuação que a gente tenta prever no Fluxo, para não deixar acontecer.
Um aprendizado que vem da Teoria das Restrições é atacar os gargalos gerados pelas filas, seja tirando gente do desenvolvimento para ajudar o cliente a homologar ou alocando desenvolvedores para avançar os testes. Então é preciso lidar com essa mudança de capacidade em cada área para atender os gargalos ou aceito que vou entregar menos por conta disso e tento limitar o work in progress (trabalho em progresso).
[Viajante]
Em um cenário ideal a gente deve considerar a existência da fila ou deve trabalhar para que a fila não aconteça?
[Rafa]
Em um cenário ideal a gente tem que trabalhar para que a fila não aconteça. Mas isso é quase impossível porque a fila é inerente à variabilidade. Se formos pegar o exemplo de uma estrada, nos momentos de pico ela estará sendo usada no máximo da sua capacidade e vai criar filas. É preciso saber trabalhar com essa variabilidade. Em highways, nos EUA, o fluxo de entrada é limitado através de sinalizações de velocidade e semáforos. A ideia é controlar a quantidade de carros que estarão nas estradas sem causar congestionamento. Em muitas situações é preciso diminuir e limitar a capacidade para conseguir ter um fluxo melhor.
[Viajante]
Podemos afirmar que ter um conhecimento das filas melhora a percepção da qualidade do serviço que está sendo entregue pois o cliente percebe não apenas o código rodando mas também o tempo que ele ficou esperando por uma resposta, se o andamento do projeto como um todo teve num ritmo bacana.
[Rafa]
Sim, perfeitamente. A ideia é entregar mais valor mais rápido. Quando falamos em responder a mudanças significa ter essa mudança rápida. Uma métrica que é importante para nós é o lead time, o tempo que uma atividade leva para ser realizada, desde o momento da demanda. Se eu conseguir trabalhar com a redução das filas eu consigo diminuir o lead time. Recentemente o Juliano Ribeiro (chairman da Agile Brazil 2016) comentou no Agile Floripa que os melhores times de desenvolvimento estão trabalhando com a média de 80% de tempo em fila. Outros trabalham com 95% de tempo em fila. Trabalhar para que a fila diminua impacta de forma muito mais significativa do que forçar o desenvolvedor a entregar mais – ou mais rápido. Digamos que em um cenário bom eu tenho 20% do tempo entregando valor e 80% de fila, se reduzirmos o tempo de fila pela metade, eu tenho um impacto de 40% na minha performance. No entanto, se duplicarmos a produtividade, a minha capacidade de entrega de valor (o que é bastante difícil), estaremos impactando apenas 20% no resultado final. O impacto de produtividade versus o impacto da eficácia. É entregar a coisa certa mais rápido sem tentar aumentar minha capacidade.
III – Fluxonomia com método Kanban de fila única
[Viajante]
Um fluxonomista precisa trabalhar com o Kanban? Qual é a experiência que vocês estão tendo com o Kanban de fila única?
[Rafa]
O método Kanban, criado pelo David Anderson, é hoje um dos métodos mais eficientes para trabalharmos com fluxo. O Kanban é um modelo de filas que quando alcança a capacidade máxima, nada mais entra, essa é a limitação do trabalho em progresso (WIP). Podemos fazer um paralelo com a maneira que a telefonia funciona. A partir do momento que as linhas estão ocupadas é enviado um sinal de ocupado e a linha fica bloqueada. O pessoal que trabalha com redes já está em um nível de gerenciamento de fluxo e de filas muito avançado. É esse conhecimento que estamos tentando buscar para aplicar na criação de produtos digitais.
O Kanban foi baseado no Sistema Toyota de Produção, e traz alguns conceitos importantes pra gente, como, por exemplo, limitar o WIP e ter visibilidade do processo. A palavra kanban significa, em japonês, sinal visual. O método Kanban é baseado nessa premissa, incentiva a gestão visual. Isso é importante por que trabalhamos com coisas invisíveis – ideias, conceitos, códigos. Pra mostrar isso para todos, colocamos tudo que precisa ser feito em cartões colados a um quadro. Com isso damos visibilidade às filas e conseguimos analisar o desempenho do time, com gráficos como o Cumulative Flow, por exemplo.
A questão do fluxo único que é algo que estamos aplicando aqui, e que poucas empresas aplicam, é uma das maneiras mais eficientes para evitarmos filas. Quem já esteve em uma uma fila no supermercado quando o caixa da frente trava e você fica parado, enquanto todos os outros andam? Quando se trabalha com modelo de fila única, como no caixa-rápido, isso não acontece. Se um caixa fica travado, temos uma diminuição da vazão, mas todos continuam sendo atendidos com rapidez um pouco menor, mas não chegam ao ponto de parar. O Kanban de fila única não favorece projetos específicos em detrimento de outros.
[Viajante]
E quais são os riscos e principais vantagens para uma equipe que está pensando em adotar o Kanban de fila única?
[Rafa]
Um dos maiores riscos da fila única é a quantidade de projetos rodando ao mesmo tempo. Se tivermos cem projetos não será fácil saber o que puxar dele. Por isso é preciso ter um limite de projetos e trabalho em progresso para que as pessoas saibam a melhor forma de lidar com cada projeto. Outro dos riscos da implementação é os desenvolvedores não terem um conhecimento tão profundo de cada projeto porque não estão 100% focados naquele projeto. Em um projeto de SCRUM, ou algum que não use fila única, às vezes uma pessoa fica três, seis meses – até um ano – num projeto só, então ele tem um conhecimento absurdo do que está fazendo. O problema disso é que esse conhecimento ficará centralizado nessa pessoa. Se ficar doente ou sair da empresa esse conhecimento é perdido.
Outro risco é ter várias tecnologias diferentes rodando. Você pode ter um projeto com alguém que trabalha com Cobol e outra pessoa que trabalha com Node JS, e os dois estarem puxando histórias no Kanban de fila única seria algo muito complexo de gerenciar. Aqui na Taller os projeto usam tecnologias semelhantes – PHP, MySQL, Javascript… – o que nos força a ter equipe multifuncionais. Não temos tanto a separação do desenvolvedor back-end e front-end, para que todos possam lidar com as tarefas como um todo, e se não souber como fazer, estimulamos que faça pair com quem sabe. O conhecimento que fica para cada um de nós acaba sendo melhor distribuído.
Na Taller a gente trabalha com um modelo chamado servidor de alta capacidade, que é um grande time que puxa as histórias da fila única, ao invés de ter times menores puxando história. Isso é polêmico porque muita gente defende que equipes menores serão mais produtivas. Mas esse nosso modelo vem funcionando porque esse nosso grande time acaba se organizando organicamente em times menores ao redor da resolução de cada demanda. E o cliente sente um contato mais próximo, por ser atendido por mais gente, e isso gera um impacto positivo no andar do projeto.
IV – Onde buscar informações
[Viajante]
E que tipo de recomendação você deixa para quem está começando a estudar fluxonomia, teoria das filas e fluxo único no Kanban?
[Rafa]
Algumas dicas que eu deixo:
Estudar a Teoria das Filas. Material sobre o tema tem aos montes na internet. Um livro sensacional sobre o tema é o Principles of Development Flow do Donald Reinertsen que traz a lógica das telecomunicações aplicada no fluxo de desenvolvimento de produtos.
Recomendo ler o livro de Kanban do David Anderson.
Pesquisar temas relacionados ao gerenciamento de fluxo, como custo do atraso, variabilidade, impacto econômico das decisões… Isso dá pano pra muito estudo.
[Viajante]
Valeu Rafa, por toda a explicação. Foi praticamente uma aula. Eu continuo minha busca procurando outros talleres e outro assuntos para trazer para quem acompanha o podcast.
Já é madrugada, nosso viajante decide passar a noite na taverna. Deixa o salão e vai procurar por um lugar para descansar.