03
Mar 09

Scrum é efetivo, e não eficiente

Li há um tempo atrás um post do Dan Rawsthorne (CSM, CSP, CST) no blog da Danube Technologies, falando sobre como ele se sentia desconfortável com algumas afirmações ou concepções incorretas a respeito do que é efetividade (effective) e o que é eficiência (efficient). Como o post foi na época de festas, terminei perdendo o timing e não consegui traduzir nem fazer nenhum tipo de comentário no blog, mas tinha deixado o post gravado aqui para depois escrever sobre ele. Fiz uma tradução abaixo (para ver o texto na íntegra, em inglês, clique aqui):

Eu gostaria de falar um pouco sobre uma situação recorrente que encontro nos times que faço coaching e nas classes que ensino. Quando falo com as pessoas sobre Scrum (e agilidade em geral), eu invariavelmente escuto coisas como “Eu gostaria que os meus times fossem mais eficientes”, ou “Estamos usando Scrum então poderemos ser mais eficientes”, e, é claro “nós seremos mais eficientes com esse processo e economizaremos algum dinheiro, certo?”

A resposta é “não”, ou “não imediatamente”, e isso normalmente nos leva a uma conversa sobre efetividade versus eficiência. Por definição, efetividade é “produzir um forte efeito”, que em software siginifica que nós entregaremos algo usável para o negócio. Eficiência, por outro lado, é “produzir resultados com pouco desperdício de esforço”, o que é uma coisa completamente diferente, e é um conceito totalmente não-agile.

Agora, vamos olhar para o que as empresas normalmente fazem (lembre-se que você é o que você realmente faz, e não o que você diz que faz). Em minha experiência, muitas empresas estão no negócio de “deixar as pessoas ocupadas” ao invés de estar no negócio de “produzir um produto”. Isto é, gerentes entram em mais apuros por suas pessoas “desperdiçarem tempo” do que por sua organização não produzir o produto correto. Isso é uma vergonha.

Agilidade é sobre ciclos de “verificação e adaptação”, ou seja, feedback. Quanto mais feedback você recebe, mais efetivo você será, mas mais esforço será também gasto. Isso é inerentemente ineficiente — estamos sacrificando efetividade de propósito. Para poder ser eficiente com agile, você precisaria de loops de feedback que te fornecessem as respostas que você precisa o mais rápido possível, e ter o quanto mais loops de feedback como possível. E nós não sabemos como fazer isso, sabemos?

Aqui é quando aparecem frases como “falhe rápido, falhe cedo”, que é uma forma de dizer que nós gostamos de ser eficientemente ágeis, aprendendo nossas lições o mais rápido possível. Okay, e não me importaria em ser eficientemente ágil, preferiria ao invés disso ser efetivo do que eficiente. E, na minha visão, não traz nenhum bem tentar ser eficiente até que você já saiba como ser efetivo. Isto é, se você pnão consegue produzir o produto certo todas as vezes (ou virtualmente todas as vezes) então não tente adicionar eficiências ao seu processo.

Para colocar de maneira bem simples, “Waterfall é eficiente — agilidade é efetiva”, e quando nós tentamos ser eficientemente ágeis, nós terminamos por introduzir uma falsa previsibilidade no nosso processo, que no final, termina nos ferindo.

É isso por agora, meus dois centavos, Dan.


02
Mar 09

Penalidades por atraso nas reuniões de Daily Scrum

Os maiores problemas quando falamos sobre as reuniões de Daily Scrum são assiduidade e pontualidade. Brasileiro, em geral, tem um problema incrível quando falamos em horários. É muito raro chegar à uma empresa e ter uma reunião marcada começando e terminando no horário certo. Na realidade, até retiro o que eu disse. Não só Brasileiro, mas em qualquer país é difícil conseguir fazer as coisas acontecerem no horário certo (ok, em alguns mais difícieis, em alguns menos…) – Mas em geral, o ser humano tem um “coeficiente” de procrastinação altíssimo…

Vendo este cenário, já rolaram na lista Scrum Development, do Yahoo! Groups, inúmeras discussões a respeito do tópico. O que fazer para garantir a realização das cerimônias no horário certo? Quais penalidades aplicar aos atrasados/ausentes?

O James Brett, do site ScrumMaster.com.au, escreveu um artigo bem interessante sobre essas penalidades para os atrasados – que traduzo aqui pois acredito que será de grande ajuda, pois pelo menos a mim o artigo ajudou bastante. Vamos lá:

Penalidades de atraso nas daily Scrums

Um componente chave do processo do Scrum é a reunião diária, o Daily Scrum. Esta reunião deve acontecer no mesmo local/horário todos os dias, de preferência próximo ao espaço onde o time trabalha, onde o taskboard do time fica. Cada membro do time responder à três perguntas nesta cerimônia:

  • O que você fez desde a última reunião?
  • O que você vai fazer até a próxima reunião?
  • Você tem algum impedimento?

O daily scrum permite que o time entenda o que cada membro está fazendo, e é essencial para o trabalho em equipe necessário para a entrega da Sprint. Eu já experienciei também um time que quis adicionar uma quarta questão à lista das três acimas, que era “Qual a sua confiança (nota de 1 a 10) de que o time irá entregar o objetivo da Sprint?”. Isso ajuda o ScrumMaster à identificar problemas escondidos no time.

Da mesma forma, é usual que o time escolha as penalidades por atraso para os membros que, ou chegaram atrasados na daily scrum, ou não compareceram à reunião. É essencial que o time decida a sua própria penalidade, e quais “desculpas” são aceitáveis para chegar atrasado (se houver). Um dos meus times passou por este processo recentemente, e como um time chegou a um acordo: qualquer um dos atrasados iria suprir o restante do time com Donuts no próximo dia, como uma forma de “punição”. Aí, um dos membros do time protestou: “eu não vou entrar nessa! E se eu ficar preso por causa de uma solicitação do suporte?”. Então o time debateu mais um pouco, e definiu o que era e o que não era admissível como desculpas por atrasos. Depois disso, todos concordaram que a penalidade deveria ser trazer donuts. Um acordo com 100% de adesão foi feito entre o time.

O ponto importante para lembrar é que o time é que deve chegar à penalidade, e que TODOS no time devem se comprometer com antecedência à obedecer às regras do time e pagar as penalidades por chegar atrasado. Pessoas de fora do time não devem forçar penalidades ou condições no time, pois dessa forma o time não terá mais o compromisso, um princípio-chave em tudo que é relacionado ao Scrum.

Para finalizar, eu estava interessado em ouvir quais penalidades haviam sido implementadas no mundo afora, apenas por diversão. Eu coloquei esta questão no user-group de Scrum do Yahoo! Grupos, e recebi diversas respostas, que combinei com as que eu presenciei e compilei a lista abaixo.

Várias penalidades por atraso

  • Cantar uma música de preferência do time (Noite feliz, My Way, Balão mágico, etc)
  • Donuts
  • Usar orelhas de coelho cor de rosa e brilhantes por 20 minutos
  • Usar um cartão “Eu me atrasei” por algumas horas
  • Pagar uma penalidade de R$ 2,00. Colocar numa caixa selada, e depois de alguns meses, ao abrir a caixa, o ScrumMaster dobra a quantia e o time gasta em conjunto. Se estiver vazia, o Scrum Master parabeniza o time, colocar R$ 100,00 na caixa, e o time decide como gastar a grana: sorvete, pizzas, ingressos para festas, cerveja, uma nova máquina de café, etc.
  • Encher o refrigerador do time com caixas de sorvete
  • Fazer a daily Scrum em um escritório vazio, e trancar a porta no horário combinado para início. A penalidade de perder a Daily Scrum e se sentir de fora do time é tão grande que as pessoas param de se atrasar.
  • Humilhação pública sem pena, com muita risada 🙂
  • Nossos desenvolvedores são muito anti-sociais, comparados ao restante da empresa. Então, quando eles se atrasam, nos forçamos que eles andem por aí e colham relatos de experiência ou melhoria com nossos usuários. Isso só aconteceu uma vez, desde então ninguém nunca mais se atrasou!

Um grande obrigado a todos que responderam a thread original no Yahoo Groups!

Brincadeiras à parte, vale à pena dar uma olhada nas penalidades, e usar esse artigo como um “guideline” sobre como ter sucesso nas suas Daily Scrums.

Boa sorte!

Para o artigo original, em inglês, clique aqui.


02
Mar 09

Review de ferramentas para gerir projetos ágeis

Há algum tempo, o Mike Cohn (autor de Agile Estimating and Planning e User stories applied) postou na lista Scrum Development do Yahoo! Groups uma mensagem falando que ele estava criando um site com o objetivo de centralizar reviews de ferramentas para métodos ágeis. Ele entrou em contato com diversos fabricantes, para que pudessem listar seus produtos no site, e os usuários poderiam então fazer o review das ferramentas, relatando suas experências e ajudando a comunidade como um todo a separar o joio do trigo.

O site está no ar desde Outubro/2008, e já possui algumas reviews de usuários e uma lista consideravel de ferramentas (mais ou menos 50 ferramentas). Estão lá listadas desde as ferramentas mais conhecidas, a brasileiríssima FireScrum, desenvolvida pelo pessoal do C.E.S.A.R.EDU e algumas ferramentas também que eu jamais havia ouvido falar.

Particularmente não gosto de ferramentas on-line para gerir projetos ágeis – na minha opinião, nenhuma dessas ferramentas chega aos pés do bom e velho taskboard – mas, se for necessário usar uma ferramenta dessas, esse site nos dá uma oportunidade de ouvir a comunidade e utilizar algo de bom. Confiram:

http://www.userstories.com/