Rastreamento do que Importa: KPIs e Painéis
5 min. de leitura

No nosso capítulo anterior, Conceber para a Testabilidade: Quebrar a Próxima Barreira, explorámos como a testabilidade se tornou um foco principal após resolver os estrangulamentos iniciais na configuração da equipa e nos testes manuais. Esse capítulo marcou um ponto de viragem na nossa transformação DevOps, à medida que mudámos a atenção para princípios de design de software mais profundos que permitiram testes mais suaves e rápidos.

Agora, no Capítulo 4, entramos numa próxima fase crítica: definir e monitorizar os KPIs certos e configurar painéis de controlo para medir o nosso progresso. Com práticas fundamentais implementadas e a testabilidade a melhorar, precisávamos de formas objetivas e baseadas em dados para visualizar o fluxo, identificar constrangimentos e melhorar continuamente.

Porquê os KPIs e os Painéis de Controlo São Importantes no DevOps

À medida que avançávamos na nossa jornada para otimizar a entrega End-to-End, reconhecemos a necessidade de um mecanismo visual e objetivo para acompanhar o trabalho e identificar estrangulamentos. Isso significou definir KPIs que não se tratavam apenas de números, mas de destacar informações acionáveis e impulsionar os comportamentos certos.

Ao configurar KPIs, é essencial reconhecer que equipas e organizações tendem a otimizar as métricas que monitorizam. Isto está em linha com a Lei de Goodhart, que afirma:

"Quando uma medida se torna um alvo, deixa de ser uma boa medida."

Este princípio realça a importância de selecionar KPIs que guiam as equipas para os resultados certos, em vez de as encorajar a simplesmente atingir metas. O objetivo destes KPIs é medir o progresso em direção ao nosso objetivo primordial. Mas qual é exatamente esse objetivo?

Definir o Objetivo

Conforme discutido em The Goal de Eliyahu M. Goldratt, o objetivo de um negócio é aumentar o lucro líquido enquanto melhora simultaneamente o ROI e o fluxo de caixa. Traduzindo isto para o nosso contexto de desenvolvimento de software, onde estamos atualmente na fase de investimento, identificámos o objetivo como:

 “Desenvolver e entregar um produto de software comercializável que gere receita sustentável.”

Alcançar este objetivo requer o cumprimento de várias condições necessárias, incluindo:

  • Tempo de Colocação no Mercado → Entregar funcionalidades e produtos rapidamente para capturar oportunidades de mercado.
  • Escalabilidade Futura → Garantir que o software é concebido para crescer com a procura sem comprometer o desempenho.
  • Otimização de Custos → Equilibrar as despesas de desenvolvimento enquanto se maximiza a entrega de valor.
  • Retorno sobre o Investimento (ROI) → Garantir que o produto oferece benefícios financeiros a longo prazo que justifiquem o investimento.

Estas condições guiaram a forma como definimos os nossos KPIs, focando não apenas na velocidade e eficiência, mas também na construção de um produto escalável e rentável que oferece valor de negócio a longo prazo.

Visualizar o Fluxo: Configurar Painéis de Controlo

Conforme descrito em Accelerate por Nicole Forsgren, Jez Humble e Gene Kim, o nosso objetivo era configurar um painel de controlo que pudesse visualizar e monitorizar as quatro principais métricas DevOps:

  • Frequência de Implementação → Com que frequência as equipas implementam código em produção.
  • Tempo de Ciclo para Alterações → Com que rapidez o código passa do commit para a produção.
  • Taxa de Falha de Alterações → A percentagem de implementações que causam falhas.
  • Tempo Médio de Recuperação (MTTR) → Com que rapidez as equipas recuperam de falhas.

No entanto, gerar estas métricas de uma forma significativa foi inicialmente desafiador devido à falta de monitorização sistemática do trabalho entre as equipas. Foi aqui que a adoção do Azure DevOps como uma solução única e comum de gestão de trabalho para todas as equipas fez uma diferença significativa.

Começámos por configurar painéis de controlo específicos da equipa para monitorizar:

  • Todos os itens de trabalho atribuídos por equipa.
  • Trabalho atualmente em curso.
  • Trabalho concluído.
  • Defeitos categorizados por fase e prioridade.

Primeiro Desafio: Utilização Inconsistente

Mesmo com diretrizes claras, as equipas utilizavam os estados e as categorias de defeitos de forma diferente. Esta inconsistência tornou a análise do fluxo entre equipas quase impossível.

O primeiro desafio que encontrámos foi a utilização inconsistente dos estados dos itens de trabalho e das classificações de defeitos, apesar de existirem diretrizes claras. Diferentes equipas utilizavam os estados de forma distinta, o que dificultava a identificação de problemas de fluxo entre equipas. Tornar consistente a forma como o trabalho era monitorizado tornou-se crucial, garantindo que os painéis de controlo pudessem ser utilizados não só para equipas individuais, mas também para a otimização do fluxo em toda a organização.

Em seguida, focámo-nos em definir os itens de trabalho de forma adequada, garantindo que pudessem refletir com precisão onde o trabalho se encontra na cadeia de valor, ao mesmo tempo que eram suficientemente genéricos para serem utilizados por várias equipas. A maioria das ferramentas oferece categorias de estado predefinidas, mas estas nem sempre eram suficientes. Era importante definir categorias de estado que estivessem alinhadas com a nossa estrutura de equipa, com a forma como o trabalho fluía e com os nossos estrangulamentos conhecidos.

Analisar o Fluxo de Trabalho para Identificar Estrangulamentos

Os primeiros painéis de controlo foram configurados principalmente para visualizar o trabalho em curso – para obter uma imagem clara do que estava a acontecer entre as equipas. Isto incluía histórias de funcionalidades, histórias de utilizadores, defeitos e planos de teste. Estes forneciam um instantâneo do trabalho em andamento, mas ainda não ofereciam uma imagem clara do fluxo geral de trabalho e valor.

Ter visibilidade do trabalho em curso foi um primeiro passo importante, mas o próximo desafio foi ligar esta visibilidade a métricas baseadas no fluxo que pudessem realçar onde o trabalho estava a ficar parado e onde precisávamos de melhorar.

Utilizando o estado dos itens de trabalho, criámos métricas para mostrar o número de itens de trabalho em cada estado. Inicialmente, tínhamos apenas informações sobre a contagem de itens de trabalho em diferentes estados. Análises mais avançadas – como o acompanhamento do tempo que os itens de trabalho permaneciam em cada estado – exigiam ferramentas adicionais, que introduzimos mais tarde. Nesta fase inicial, no entanto, começámos a nossa análise utilizando apenas as contagens.

Mesmo com estes dados básicos, os painéis de controlo revelaram-se valiosos na identificação de estrangulamentos chave:

  • Demasiados itens de trabalho em curso em comparação com o número de itens concluídos num determinado período.
  • Um número crescente de itens de trabalho em atraso que excedia em muito o que poderíamos realisticamente concluir nos próximos 3 a 6 meses.
  • Equipas com o maior número de itens de trabalho por concluir, indicando onde era necessário um foco e apoio adicionais.

Cada uma destas perspetivas exigiu uma solução diferente, mas a capacidade de visualizar o fluxo de trabalho foi um grande avanço. Esta melhoria levou o aspeto Ferramentas do nosso Triângulo DevOps mais longe, dando o ímpeto para o progresso nos outros dois aspetos – Arquitetura e Pessoas.

Utilizar KPIs para Impulsionar a Melhoria Contínua

Voltámos ao tópico dos KPIs em várias fases da nossa transformação DevOps. À medida que as nossas capacidades de monitorização melhoraram, conseguimos gerar métricas mais detalhadas que nos ajudaram a:

  • Medir o progresso ao longo do tempo para garantir que estávamos a avançar em direção ao nosso objetivo de desenvolver um produto de software comercializável.
  • Identificar dependências e transferências que estavam a causar atrasos no fluxo de trabalho.
  • Identificar áreas onde as equipas necessitavam de apoio adicional ou melhorias de processo.
  • Alinhar os nossos KPIs mais de perto com as quatro principais métricas DevOps de Accelerate, fornecendo uma medida objetiva do nosso sucesso.

Ao alinhar Ferramentas, Arquitetura e Pessoas com os KPIs certos, criámos um sistema que proporcionou visibilidade clara do nosso progresso, nos ajudou a identificar e desbloquear estrangulamentos e garantiu que permanecemos focados em entregar valor de negócio a longo prazo.

O Que Se Segue? Ramificação e Implementação Contínua

Com os nossos KPIs e painéis de controlo implementados, estamos agora prontos para otimizar o fluxo de código através dos ambientes e para produção. No Capítulo 5, iremos aprofundar a forma como abordámos o Branching e a Implementação Contínua, e as mudanças culturais e técnicas que nos permitiram implementar de forma mais rápida e segura.

Fique atento!

Subscrever o Blogue da Freyr

Política de Privacidade