29 de maio de 2010

Quando usar soluções de contorno

Quando bombeiros chegam a um local em chamas, qual é prioridade número UM? "Apagar o fogo" talvez pareça a resposta óbvia. Mas a prioridade é salvar as vidas que estão em perigo.

Os momentos de maior pressão que enfrentei como desenvolvedor de software foram similares a um incêndio: bugs críticos em softwares em produção. O que aprendi em episódios como esses? Que a prioridade número UM quando um software em produção para por causa de um bug, não é corrigir o bug, mas fazer com que o fluxo de trabalho do cliente seja restabelecido. É como salvar as vítimas de um incêndio. Na maioria das vezes a solução definitiva (apagar o fogo) leva mais tempo do que o cliente (a vítima) pode esperar. É aí que entram as "soluções de contorno".

Um exemplo simples:

Um megacliente da sua empresa informa que pagou sem atraso a mensalidade do serviço online XPTO, mas o serviço foi bloqueado. Você descobre que o pagamento realmente entrou na conta, mas não consta no software que você fez para processar os pagamentos. O cliente está furioso! Seu gerente também! Até a sua diretoria já sabe do problema!

Você começa a imaginar em que parte do código está o problema, até já tem uma intuição. E então, pronto para pôr as mãos no seu código? É isso o que você faria?

Eu te faria duas perguntas:

  • Se, como solução de contorno, você lançar manualmente no banco de dados do seu software o pagamento do cliente, ele terá acesso ao serviço bloqueado muito antes do que se você implementar a solução definitiva?
  • A solução de contorno pode ser feita com baixo risco de "efeitos colaterais"?

Se a resposta a essas duas perguntas for "sim", minha sugestão é que seja adotada imediatamente a solução de contorno. Em seguida, sob menor pressão, que seja investigado o que causou o problema e como resolvê-lo.

Soluções de contorno são o que o nome diz: "de contorno". A causa do problema continuará existindo e o problema voltará a acontecer - a menos que seja implementada a solução definitiva. E você DEVE implementá-la enquanto o problema está fresco na sua cabeça.

Priorizar a correção do software ao invés de resolver o problema do cliente é perigoso especialmente quando você não tem noção de quanto tempo levará para concluir a correção. E os efeitos dessa demora podem ser irreparáveis - vidas estão envolvidas (inclusive a sua).

Se você já usou uma solução de contorno numa situação excepcional, deixe seu comentário.

Créditos da foto: http://www.firetactics.com

Postar um comentário