A busca pela eficiência em times de tecnologia

Teoria e prática da eficiência de fluxo: buscando a eficiência adequada e sua importância para melhores resultado

Vinícius Couto
luizalabs
14 min readJul 4, 2024

--

“Apesar do enorme esforço do time nos últimos meses, o projeto demorou muito para ficar pronto. Sou cobrado todos os dias, pois estamos perdendo vendas. Suspeito que a área de tecnologia está caindo em descrédito com as outras áreas. Eu não entendo! Nós fizemos enormes investimentos ao dobrar a quantidade de desenvolvedores e a entrega de novas funcionalidades não cresceu significativamente. Sua missão é melhorar a eficiência do time.” Em tom de desabafo, já orienta o diretor de tecnologia na primeira conversa após a sua contratação como gerente da área.

Você nem terminou o processo de onboarding do primeiro dia de trabalho na nova empresa e já surge uma voz de preocupação na sua cabeça, te questionando se você fez a escolha certa ao aceitar este novo desafio. Você foi contratado para liderar a equipe que é responsável por desenvolver e evoluir os sistemas de vendas da empresa.

Depois de refletir um pouco sobre o que o diretor te disse, a interrogação que surge é: o que exatamente ele quis dizer com “melhorar a eficiência do time”?

Esta é uma série de cinco textos sobre eficiência aplicada ao contexto de desenvolvimento de software. Na linha de buscarmos embasamento dos porquês das coisas e também obtermos insights para o dia-a-dia, vamos mesclar teoria e prática. Práticas estas discutidas, experimentadas e observadas no Luizalabs ao longo dos últimos anos.

Aqui, no primeiro texto, o objetivo é entender qual a eficiência mais adequada para este contexto e qual a importância disso na busca por resultados melhores. No segundo texto, A métrica de eficiência de fluxo (em breve), vamos dar um passo prático para preparar o processo e metrificar eficiência. No terceiro, A influência da variabilidade na eficiência de fluxo (em breve), vamos colocar a lupa na influência que a variabilidade tem no nosso sistema de trabalho. A última parte, Como melhorar a eficiência de fluxo — Parte 1 e Como melhorar a eficiência de fluxo — Parte 2 (em breve) buscam colocar luz nas ações práticas que ajudam a tratar os desperdícios.

Apesar de conectarmos a busca pela eficiência ao mundo de desenvolvimento de software, os conceitos abordados aqui, também podem ser utilizados em outras áreas como contabilidade, administrativo, marketing, financeiro, atendimento ao cliente e até atendimento médico. Isso é possível porque, assim como nestas áreas, o desenvolvimento de software também é um trabalho baseado no conhecimento, onde o valor é gerado a partir da capacidade cognitiva e criativa das pessoas.

Principais tópicos

A busca pela tal eficiência é algo tão presente na cultura e na rotina das organizações que não é comum pararmos e questionarmos:

  • O que de fato é eficiência?
  • Quais os diferentes tipos de eficiência?
  • Por que o tema eficiência deve estar sempre na pauta?
  • Qual a relação da utilização de recursos e eficiência?

Quando buscamos o significado de eficiência nos dicionários, encontramos algo como: habilidade de fazer as coisas bem, com sucesso, sem desperdício de materiais, energia, esforço e dinheiro. Fica claro o quão importante é isso. Ora, não é possível fazer boa gestão de um time, de um processo, das entregas ou até mesmo de uma empresa, sem eficiência. Não há bons resultados se não houver a alta eficiência.

Dada a diretriz em letras garrafais que você recebeu no primeiro dia de trabalho, você pode escolher duas abordagens para lidar com o cenário. A primeira abordagem é colocar sua lupa nos itens de trabalho e nas etapas que estes atravessam, do surgimento da necessidade até a entrega. Esta é a abordagem da eficiência de fluxo.

A outra abordagem, trata-se de colocar a lupa nos recursos e tentar otimizar o uso destes, esta é a eficiência de recursos. Neste contexto de desenvolvimento de software, podemos entender que os “recursos” se referem aos recursos humanos, às pessoas que compõem a equipe, visto que o conhecimento destas pessoas é o principal ingrediente para geração de valor aos clientes e ao negócio.

A eficiência de fluxo

Para entender a eficiência de fluxo (na engenharia de produção, também é conhecida como eficiência de atravessamento de valor agregado), precisamos considerar dois elementos básicos, o processo e a unidade de fluxo. Conforme atravessa o processo, a unidade de fluxo (o item de trabalho) recebe valor. A unidade de fluxo pode ser material, como um carro construído numa linha de produção. Pode ser uma pessoa, no caso de um paciente atendido no hospital. Ou, pode ser informação, no caso de uma autorização que transite em diferentes validadores, por exemplo.

Vamos tomar de exemplo que a unidade de fluxo é uma nova funcionalidade do sistema a ser construída e que o processo é a composição das etapas nas quais esta funcionalidade passa até entregar valor. Neste caso, o processo foi delimitado a partir do momento que um requisito de funcionalidade chega à equipe. Durante a agregação de valor no processo, isso vai se transformando em uma solução de software e vai até o momento que esta solução é disponibilizada para os usuários. Nesta série de textos, vamos focar mais na eficiência neste fluxo de desenvolvimento, devido a maior facilidade de metrificar, mas vale ressaltar que a agregação de valor no ciclo todo, começa antes, na fase refinamento das oportunidades e necessidades.

O ponto chave é que, diferente da abordagem da eficiência de recursos, que coloca em foco o recurso necessário para realizar um trabalho, a eficiência de fluxo coloca em foco principal a unidade de fluxo.

Exemplo de fluxo de trabalho no desenvolvimento de software
Legenda: Exemplo de fluxo de trabalho no desenvolvimento de software

Na prática, a eficiência de fluxo é medida através da proporção (%):

  • de tempo que uma unidade de fluxo ficou em etapas do processo que agregam valor (na fórmula abaixo, é a variável tempo de trabalho)
  • dividido pela somatória de tempo que ele ficou em todas as etapas do processo (na fórmula, é o tempo de ciclo).

Exemplo:

O cálculo da eficiência de fluxo responde: qual o percentual de tempo que a unidade de fluxo recebeu valor enquanto estava no processo. Este cálculo parte do pressuposto que o processo de trabalho é composto por etapas de diferentes naturezas (de agregação de valor e de espera) que serão explicadas mais à frente.

A eficiência de recursos

A eficiência de recursos é muito utilizada por empresas de diferentes setores por mais de 200 anos, desde a revolução industrial. A eficiência de recursos busca a máxima utilização dos recursos como máquinas, materiais, pessoas e entre outros recursos físicos necessários para produzir produtos e serviços.

De fato, uma linha de produção que conta com máquinas que trabalham de maneira quase ininterrupta, permite uma redução considerável do custo unitário de cada produto.

Fonte: https://unsplash.com/photos/KP6XQIEjjPA

A eficiência de recurso é medida através da proporção (%) de tempo que um recurso ficou em uso dividido pelo tempo total de disponibilidade deste recurso:

Exemplo:

Para uma empresa que adquiriu uma máquina de milhões de reais para sua linha de produção, faz todo sentido tentar utilizá-la na maior parte do tempo. É preciso que todo este investimento gere o máximo de retorno possível. Além disso, se não houver alta eficiência deste recurso, o dinheiro utilizado na compra da máquina poderia ter sido utilizado para várias outras questões na empresa, como liquidar dívidas, investir em outros setores, este é o custo de oportunidade.

A aplicação da eficiência de recursos tem grandes limitações no setor de desenvolvimento de software. O “recurso” principal, talvez único, para criação de uma funcionalidade de software é o conhecimento, a lógica e a capacidade cognitiva dos desenvolvedores, não de uma máquina.

Além disso, na fabricação em massa de produtos, onde há total padronização das etapas do processo e dos itens que passam por este, ou seja, há baixo índice de incerteza e variabilidade. No desenvolvimento de software, cada funcionalidade é única, existem diferentes maneiras de solucionar o problema, os processos não são iguais e há grandes possibilidades de interrupção da fluidez por vários motivos. Isso muda toda a abordagem da gestão na busca pela eficiência.

Você deve estar pensando: “Certo, parece que a abordagem da eficiência de fluxo faz mais sentido para o meu cenário”. Vamos discutir mais sobre isso.

A importância da eficiência de fluxo

A fluidez do processo de trabalho e a capacidade de entregar valor rápido estão intrinsecamente relacionadas. Assim, para entender o que está levando à entregas mais lentas, o melhor meio é entender a eficiência do fluxo. Ter a capacidade ou não de entregar rápido é respondido através da métrica de tempo de ciclo (no dia-a-dia é mais conhecido na forma em inglês, cycle time¹), que é a somatória de tempo que o item de trabalho levou para percorrer todas as etapas do fluxo até a entregar valor.

A métrica de tempo de ciclo é algo muito importante, o baixo ou alto tempo de ciclo desdobra-se em questões cruciais para o negócio, como a satisfação do cliente, a capacidade de reação à mudanças no contexto, o custo gerado pelo atraso das entregas, entre outras.

Além desta relação com a capacidade de entregar valor rápido, acompanhar a eficiência de fluxo é um passo importante em direção à identificação de fontes de desperdício no processo. Como vamos ver nos outros textos desta série, há muito trabalho supérfluo. São itens de trabalho e etapas que não adicionam valor, que consomem energia, que atrasam a entrega, mas que podem ser eliminados.

Legenda: Elementos que influencia na eficiência de fluxo

A imagem acima ilustra as diversas conexões existentes entre os elementos que afetam a eficiência de fluxo (lado esquerdo), o impacto disso no tempo de ciclo e, consequentemente, os desdobramentos (lado direito) decorrentes do aumento desse tempo.

Eficiência e a utilização dos recursos

Há duas forças que influenciam muito na eficiência do fluxo e, consequentemente, no tempo de ciclo. Entender os efeitos destas forças no processo, vai nos ajudar a entender como a eficiência de fluxo é afetada. A primeira, que vamos explorar aqui, é a utilização de recursos. A outra, também muito relevante, é a variabilidade que entrelaça quase todos os fatores do sistema de trabalho, esta força vamos explorar no A influência da variabilidade na eficiência de fluxo (em breve).

Em processos orientados à eficiência de recursos, a máxima utilização do recurso é colocada em primeiro lugar, mesmo que isso leve ao alto tempo de atendimento das unidades de fluxo. Por exemplo, no processo de atendimento médico que ocorre em prontos socorros, o médico plantonista provavelmente é o recurso mais caro. Para evitar qualquer ociosidade deste recurso, o processo trabalha com muitos pacientes (unidades de fluxo) na fila, naturalmente isso se desdobra em longas horas de espera pelo atendimento, até a disponibilidade do médico (recurso).

Segundo Stefan Thomke e Donald Reinertsen, em Six Myths of Product
Development
:

High Utilization Leads to Delays. The curve below is calculated using Queuing Theory, the mathematical study of waiting lines. It shows that with variable processes, the amount of time projects spend on hold, waiting to be worked on, rises steeply as utilization of resources increases. Though the curve changes slightly depending on the project work, it always turns sharply upward as utilization nears 100%.

Fonte: https://hbr.org/resources/images/article_assets/hbr/1205/R1205E_A_LG.gif

Em processos orientados à eficiência de fluxo, o menor tempo de atendimento da unidade de fluxo é colocado em primeiro lugar, mesmo que a utilização dos recursos não seja a máxima possível, especialmente em contextos que o tempo é fator definidor do sucesso ou do fracasso. Por exemplo, os bombeiros (recursos) não podem trabalhar com 100% de ocupação, se isso acontecer o tempo para atender os chamados de incêndios (unidades de fluxo) será muito alto, quando chegarem ao local, o fogo já consumiu tudo.

Para ajudar no entendimento destes fatores, vamos olhar para a Lei de Little (fórmula abaixo). Segundo este teorema, em sistemas estáveis, o tempo médio de ciclo (que um item leva para atravessar o processo) é resultado da divisão da quantidade de itens no processo (WIP, work in process) dividido pela taxa média de vazão (throughput).

Por exemplo:

  • Se há 10 unidades no processo, com vazão média de 5 itens por dia, então o tempo médio de atendimento/ciclo será de 2 dias.
  • Em um novo cenário, quando a quantidade de unidades no processo é elevada para 15, considerando que a taxa de vazão média continue em 5, então o novo tempo médio de atendimento será de 3 dias.

Consideração: apesar de nos ajudar muito no entendimento da correlação destes fatores, não podemos levar a fórmula da Lei de Little para a prática. Pois ela considera que as variáveis são constantes ao longo tempo (sistemas estáveis). No dia-a-dia, nossos sistemas de trabalho estão expostos a inúmeras variações.

Impacto nas estimativas

Todos já vivenciaram o momento que uma funcionalidade saí do backlog e entra no fluxo de desenvolvimento de um time. Normalmente, neste momento é utilizada alguma técnica de estimativa para responder quanto tempo será necessário para construir a funcionalidade. Técnicas de previsibilidade é um assunto muito legal, que podemos discutir em outro momento, contudo o ponto principal agora é: se a eficiência de fluxo é baixa, as estimativas não serão nem um pouco assertivas, poderão inclusive passar expectativas erradas.

Vamos supor que um time tem a eficiência de fluxo média de 10%, quer dizer que somente 10% do tempo de ciclo de vida da funcionalidade está em etapas de trabalho. Mesmo que os desenvolvedores possam estimar bem o tempo para construir uma funcionalidade, eles vão estimar com base nas etapas que estão nas mãos deles, ou seja, apenas com base nos 10% do tempo de ciclo. Os outros 90% do tempo estão em etapas de espera ou bloqueado, não se sabe quanto tempo os itens de trabalho ficarão nestas condições, a variação de tempo é muito grande e pode sofrer influência de fatores fora do controle do time. Assim, esta estimativa tem nível de precisão e confiança muito baixo.

… the waiting time, or delay, in a buffer or wait state, cannot be determined in advance, and is entirely arbitrary and hence, non-deterministic in nature. (David J Anderson)

Eficiência de fluxo e a força de trabalho

Ainda utilizando o exemplo acima, do time que tem 10% de eficiência de fluxo média, imagine que é uma equipe composta por 7 desenvolvedores de software com muitas demandas a serem entregues para o negócio. Como novo gerente da área, você pode contratar 3 novos desenvolvedores para a equipe, numa tentativa de ajudar a entregar mais.

Nesta equipe, não há boa fluidez do trabalho. Durante o desenvolvimento, sofrem problemas com constantes interrupções do desenvolvimento, depois de desenvolvidas as demandas aguardam muito tempo por homologação e depois, por janelas de publicação em produção. Além disso, há sempre muitos itens em andamento. O movimento de adicionar 3 novas pessoas na equipe levará ao:

  • Maior custo de coordenação (mais pessoas).
  • Maior necessidade de alinhamento e sincronia entre a equipe, dado que o número de conexões entre as pessoas vai aumentar.
  • Há o risco de aumentar ainda mais a quantidade de itens em andamento.

Estes fatores não contribuem para o aumento da vazão, pelo contrário, podem diminuir ainda mais a fluidez das entregas e, consequentemente, diminuir a vazão. Não faz sentido crescer um time que não está performando com eficiência, que tem desperdícios no seu processo de trabalho. Isso vai apenas potencializar a ineficiência, ou seja, mais dinheiro, tempo, energia e talento serão desperdiçados. Assim, antes de contratar, é preciso melhorar a eficiência de fluxo.

Final

Gerar movimento forte pela busca da eficiência de recurso, coloca equipes e empresas mais distantes da eficiência de fluxo e seus desdobramentos/benefícios. Niklas Modig e Pär Åhlström no livro Isto é Lean: Resolvendo o Paradoxo de eficiência, chamam isso de o paradoxo da eficiência. Ao buscar a eficiência dos recursos, é natural buscar a máxima utilização destes, por sua vez a máxima utilização deixa a entrega de valor mais lenta e infla as fontes de desperdício.

It doesn’t matter if we keep everyone busy. We need to release features (Johanna Rothman)

Manter os integrantes do time ocupados não é sinônimo de eficiência, nem de perto garantia de bons resultados. Times inteiros podem passar meses ocupados com tarefas até as orelhas e mesmo assim o tão esperado projeto demorou demais para sair do forno, quando saiu, apresentou muitos problemas e não entregou valor aos clientes. Nestes casos, são times que também se distanciaram da eficácia, ou seja, a capacidade de fazer o certo, o que resolve a vida do cliente/negócio.

Fonte: https://unsplash.com/photos/ubuHwvxeV4I

Na minha visão, há duas grandes forças gravitacionais que puxam times e organizações para o caminho da busca pela eficiência de recursos. A primeira é a forte influência da eficiência de recursos na gestão. Por muito tempo, para a administração, eficiência significou eficiência de recursos. E, claro, isso engloba também a gestão da área de tecnologia da informação. Na mesma linha, manter recursos ocupados, possivelmente, foi usado de maneira intuitiva, mas errada, como meio para entregar projetos mais rápidos.

A segunda força é o crescimento rápido da participação dos departamentos de tecnologia nos orçamentos das empresas. Está claro para todo o mercado que investir em tecnologia da informação é necessário não só para aumentar a competitividade, mas também para sobreviver em praticamente todos os tipos de indústrias. Nos últimos anos, estes orçamentos foram ainda mais alavancados devido à demanda por profissionais de tecnologia ser maior que a oferta disponível.

Assim como o médico é o “recurso” mais caro do plantão, a pressão pelo uso eficiente deste recurso configura o sistema para que ele seja utilizado o máximo possível e não para que o item de trabalho (paciente) seja atendido o mais rápido possível.

Quando um novo desenvolvedor inicia na empresa, um grande valor é acrescido no orçamento. Como mencionado na parte do custo de oportunidade, estas cifras são muito importantes para a empresa, elas poderiam ser utilizadas de várias outras formas. Este “investimento” tem que valer a pena, deve retornar valor para empresa o quanto antes.

O ponto aqui, não é deixar de lado esta busca pela otimização dos recursos investidos em times de tecnologia e acompanhamento da performance de indivíduos. Inclusive, defendo sim que a vazão de funcionalidades de um time seja acompanhada de perto pelos gestores. Porém, o retorno do investimento nestes “recursos” para a empresa vem através de entregas rápidas e do saneamento de desperdícios. Por sua vez, tais fatores não vem da busca pela eficiência de recursos, vem da eficiência de fluxo.

Ok, agora que o caminho foi pavimentado com os porquês da eficiência de fluxo, vamos para a parte mais legal da história, a prática! No segundo texto, A métrica de eficiência de fluxo (em breve), vamos discutir como organizar o processo para metrificar a eficiência de fluxo e analisá-la.

Referências

Nota de Rodapé

[1]: É comum times de tecnologia também utilizarem a métrica lead time. No Luizalabs consideramos que o lead time engloba também o tempo que o item permaneceu em backlog, além do tempo para percorrer o fluxo. Ou seja, consideramos que lead time é tempo em backlog mais tempo de ciclo. Enquanto o item está em backlog, ainda não há comprometimento do time quando ele será puxado para o fluxo de desenvolvimento, por isso este tempo em backlog não é considerado para eficiência de fluxo.

--

--