terça-feira, 13 de outubro de 2009

Saiba o que fazer com suas métricas

Uma das minhas grandes birras é com métricas. A gente aprende que é preciso ter insumos para se tomar decisões, e que medindo as ações dos usuários podemos saber o que fazer para acertar. CMMs e modelos afins pregam que sem medir não há qualidade.

Até aí tudo bem. Acredito que os números não mentem. Se suas medições indicam que seu site leva em média 2 segundos para servir uma página, então é isso aí. Se você fizer uma mudança e de repente ele leva só um segundo para servir, então sua mudança funcionou. Perfeito.

O problema é a parte de usar os dados para tomar decisões. Aí o buraco é beeeem mais embaixo, e merece a formulação da primeira lei de Torsten para métricas em software:
Qualquer decisão errada pode ser justificada com base em dados reais.
Deixe-me exemplificar. Suponha que meu sistema permite que os usuários façam duas coisas: peneirar e espetar. Minhas métricas mostram que as pessoas peneiram com frequência 10 vezes maior do que espetam, e mostram também que a medida que o tempo passa, os usuários estão peneirando e espetando cada vez menos por dia, em média.

Agora suponha que eu preciso decidir o que fazer nos próximos seis meses, dentre as seguintes três opções:
  1. Melhorar a função de peneirar.
  2. Melhorar a função de espetar.
  3. Implementar uma nova função, sacudir.
Eis como eu justificaria cada decisão:
  1. As pessoas preferem peneirar, então se melhorarmos essa função, vão peneirar muito mais e o ganho será muito maior;
  2. A função de espetar está claramente ruim quando comparada com a de peneirar, então se a melhorarmos teremos um grande ganho;
  3. Peneirar e espetar não tem mais a mesma atração, então precisamos de algo novo para atrair os usuários.
Meu ponto é que os dados não me ajudaram em absolutamente nada na tomada de decisão, pois apoiam qualquer uma das três decisões. Pior, os dados atrapalharam e muito, porque o que acontece na prática é que o detentor do poder no projeto tem uma preferência qualquer sobre o que fazer e acha apoio nos dados para justificar a sua preferência, evitando assim a discussão racional envolvendo outros fatores, como o custo para se implementar cada solução. Alguém sempre chega e diz, "Ora, os dados claramente indicam que ESSA é a melhor decisão, assunto encerrado, mãos à obra."

Por isso eu sempre travo quando me pedem pra implementar novas métricas. Daí vem a segunda lei de Torsten sobre métricas:
Uma métrica só deve existir quando se sabe como ela será usada para tomar decisões
e sua corolária:
Métricas não associadas a decisões são prejudiciais ao projeto.
Suponha que você queira medir quantas pessoas clicam em um botão. Muito bem. O que você vai fazer se zero pessoas clicarem? O que você vai fazer se todas as pessoas que visitam a página clicarem? Se você não sabe a resposta para essas perguntas, responda-as antes de começar a implementar. Se a resposta for "não vou fazer nada," então você não precisa da métrica. Ótimo! Um número a menos pra ficar te confundindo diariamente e pra atrapalhar as decisões complicadas que você vai ter de tomar no futuro.

Métricas não são grátis. Tem um custo para se implementar e para se manter. Antes de investir nelas, tenha certeza que o investimento terá retorno garantido.

5 comentários:

  1. Amigão, dá uma lida no GQM e no PSM.
    Mas só o GQM já dá uma dica do problema aí:
    Goal->Question->Metric
    Primeiro vc define um objetivo. Melhorar a experiência dos usuários atuais (peneirar)? Recuperar os usuários perdidos (espetar)? Trazer usuários novos (sacudir)?
    Depois vc define as suas perguntas:
    Como está a experiência dos usuários atuais? Porque os usuários estão sendo perdidos? etc...
    Por último é que vc vai definir suas medidas, baseado nas perguntas que vc precisa responder para atingir os objetivos que vc escolheu. Assim, vc não gasta recurso medindo o que vc não precisa, vai com foco e toma uma decisão ajustada para o foco do que vc quer.
    Os objetivos precisam estar alinhados com os objetivos estratégicos da organização, obviamente.

    Concordo que tem muita gente que faz isso errado, mas o problema não é da área de medição, é de quem não a conhece e tenta a esmo.

    Ainda tem um monte de questões a este respeito, mas não dá pra falar muito numa caixinha de comentário. *rs*

    Outra fonte boa de informação é a ISO/IEC 15939, específica sobre medição.

    Ah, outra questão interessante é que depois de um monte de autores definirem métricas e medidas de formas diferentes (como sendo a mesma coisa ou com métricas sendo compostas de medidas ou outra forma qualquer) os modelos e normas uniformizaram o termo para "medida" matando o "métrica".

    Grande abraço!

    ResponderExcluir
  2. Ah, esqueci de citar "Você não controla o que você não pode medir." -Tom DeMarco
    E um artigo dele interessantíssimo: http://www.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf

    ResponderExcluir
  3. Oi Peter,

    GQM é muito bonito e eu gosto do trabalho do Vic Basili. O que ele fez foi propor uma forma de aplicar o método científico à qualidade de software, é legal. O GQM faz uma coisa certa, que é salientar que medidas (usando o termo correto agora) servem para você validar se seus objetivos estão ou não sendo alcançados.

    Meu ponto é que as pessoas vão um passo adiante e usam as medidas como insumos para tomar novas decisões. Não é pra isso que elas servem - elas servem pra validar decisões que você tomou de forma independente.

    Eu vejo medidas sendo usadas para tomar decisões de forma reativa - "nossa, o número de usuários está caindo, vamos parar de fazer o que estamos fazendo e fazer algo para ele voltar a subir". Isso é quase sempre a decisão errada. O certo seria aplicar novamente o método científico - formular uma hipótese, testar a hipótese através de experimentos e assim validá-la ou não.

    ResponderExcluir
  4. O ponto do artigo do Tom DeMarco é semelhante ao que eu quero fazer - há inúmeros casos em que não é desejavel querer controlar tudo através de medições, porque o que é importante é difícil ou impossível de medir. Nesses casos, querer medir o que se consegue medir pode ser uma distração que afasta a atenção do que realmente faz diferença.

    ResponderExcluir
  5. Oi Torsten,
    O que quis dizer mais ou menos coincide com o que vc disse.
    Só quis alertar que o problema não é com as medidas em si e sim com o uso errado. Usar certo não é difícil uma vez que você está ciente do que fazer, como e pra que.
    Entendo se vc disser que sua birra é com o uso errado das medidas e não com as medidas em si (primeira frase do post).
    Enfim, há formas, como vocÊ sabe, de fazer as coisas corretas e momentos certos para fazê-las. ;-)

    ResponderExcluir