June 23rd, 2007Métricas vs. Métricas (e uma propaganda no final)
Qual a melhor forma de medir o sucesso de uma equipe? Os Métodos Ãgeis promovem um processo empÃrico para desenvolvimento de software, baseado na colaboração e no feedback trazido por ciclos curtos de inspeção e adaptação. Encontrar maneiras eficazes de avaliar o processo e a equipe não é uma tarefa simples. O senso comum leva à decomposição e à proliferação de diversas métricas baseadas na premissa de que se cada parte do processo for otimizada, os resultados do processo como um todo serão otimizados também. Quando critiquei o modelo hierárquico do IO-Map, minha preocupação era justamente essa. Ao tentar micro-otimizar partes de um sistema por meio de diversas métricas, o objetivo verdadeiro se perde em meio a tantos outros substitutos e a equipe perde sua capacidade de tomar decisões num nÃvel mais macro.
Um outro problema com métricas bastante conhecido (o VinÃcius comenta sobre isso em um dos seus podcasts) é que as pessoas geralmente se comportam de acordo com a forma que são avaliadas. Robert Ausin, no livro Measuring and Managing Performance in Organizations, discute os problemas da avaliação de desempenho baseada em métricas e destaca que sua principal vantagem (“Você tem o que você mede”) é também sua principal desvantagem (“Você tem exatamente o que você mede, e nada mais”). Métricas manipuláveis serão manipuladas. Esse é o lado triste da história.
Por isso queria aproveitar esse post curto para discutir uma classificação interessante, que pode te ajudar a refletir quando estiver pensando em utilizar uma nova métrica.
Métricas Organizacionais
Também conhecidas como “métricas de avaliação” na abordagem Lean. São as métricas que medem o sistema como um todo, no nÃvel mais alto. Elas medem o quanto de valor seu processo consegue entregar. A abordagem Lean sugere uma prática conhecida como Measure Up, onde você usa uma medida de avaliação que foge do controle de qualquer sub-parte do processo, incentivando a colaboração entre os indivÃduos de diferentes equipes e evitando a micro-otimização. Essas métricas-chave devem ser geralmente escolhidas pelo cliente ou quem quer que espera extrair algum valor do sistema. Como consequência dessa prática, você acaba ficando com um número muito menor de métricas. Recentemente apresentei na XP@Rio alguns exemplos de métricas organizacionais:- Cycle Time: métrica Lean mais conhecida que mede o tempo médio para que seu processo atenda uma nova requisição. Essa métrica geralmente surge depois que a equipe entende seu Value Stream Map e o conceito importante é que ela começa a contar com o cliente e só termina quando o cliente é atendido.
- Métricas Financeiras: o investimento de muitos projetos de software é justificado com base na melhoria de alguma métrica financeira. Essa métrica pode ser o Retorno de Investimento (ROI), Net Present Value (NPV), uma matriz de lucros e perdas ou coisas desse tipo. Como uma equipe consegue melhorar esses números de outra forma que não seja entregando o software?
- Satisfação do Cliente: Se você está preocupado em entregar valor para seu cliente, o quão satisfeito ele está? Uma métrica sugerida pela Mary e pelo Tom para medir isso é o Net Promoter Score, uma medida simples que verifica se seus clientes recomendariam seu produto para outro cliente.
Métricas de Acompanhamento
Também conhecidas como “métricas de diagnóstico”, “indicadores” ou “métricas informativas”. Elas são medidas internas da equipe que auxiliam na melhoria do processo, através dos ciclos de inspeção e adaptação. Essas métricas agregam dados, mas não os associam com nenhum indivÃduo, assim como não devem ser atreladas ao valor que está sendo entregue. Seu ciclo de vida também é geralmente mais curto. Uma vez que o processo evoluiu, elas se tornam desnecessárias e devem ser descartadas. Novas métricas de acompanhamento deverão surgir conforme a equipe avança e o ciclo continua, em busca da melhoria contÃnua.Um exemplo amplamente utilizado desse tipo de métrica é a velocidade. Espera-se que, após um certo tempo, a velocidade do time se estabilize (se nenhum fator externo acontecer, como mudança de membros da equipe ou mudança da linguagem de programação). Uma vez que a velocidade se torna “conhecida”, a equipe geralmente não precisa mais medÃ-la.Como esse tipo de métrica surge em diferentes contextos e problemas, podemos pensar em diversos outros exemplos. Supondo que a equipe está tentando melhorar nas práticas de teste, pode utilizar a cobertura de código como métrica de acompanhamento. Se querem melhorar a integração contÃnua, podem medir o tempo entre commits, ou o número de linhas alteradas em cada commit. E por aà vai…Propaganda Descarada
Aproveitando o assunto (que oportuno!), vou fazer uma propaganda descarada da defesa da minha dissertação de mestrado, na próxima sexta-feira. As informações para quem estiver interessado em assitir são:TÃtulo: “Uso Eficaz de Métricas em Métodos Ãgeis de Desenvolvimento de Software”Orientador: Alfredo Goldman
Local: Instituto de Matemática e EstatÃstica (IME/USP)
Sala: 256 Bloco A
Data: 29 de Junho de 2007
Horário: 9:30hs
July 6th, 2007 at 2:00 am
Me lembrei deste post quando vi essa discussão sobre Agile Measurement no InfoQ. Que acha do tal PLanguage process?
August 4th, 2007 at 1:17 am
Danilo, vc pretende disponibilizar sua dissertação? Seria muito interessante lê-la.
Um abração
August 4th, 2007 at 1:21 am
Sim Ricardo, pretendo disponibilizá-la aqui. Estou terminando de revisar as alterações propostas pelos membros da banca e, principalmente, construindo o Ãndice remissivo no final. Espero ter a versão final em breve.
Abs
February 10th, 2011 at 7:11 pm
[…] vem, segundo o seus criadores, a obrigação de traçar o gráfico de BurnDown, apenas uma das inúmeras métricas que podem ajudar (ou atrapalhar!) a acompanhar caracterÃsticas do projeto e da […]
July 27th, 2013 at 3:09 am
excelente texto. estou iniciando a ajudar minha equipe a melhorar na agilidade e espero encontrar métricas excelentes para isso.
abraço