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

4 comentários:

Pierre Abreu disse...

Já fiz isso algumas vezes, mas comigo era complicado porque o ambiente de produção era no cliente e não tinha nenhum acesso remoto, somente fisicamente indo até o cliente. Nesse tempo de deslocamento era que as coisas se complicavam, muito stress ocorria e muito dinheiro se perdia. Por isso que sempre é muito importante ter crédito com as pessoas, pois uma pessoa com credibilidade acaba (com muita politica) resolvendo o problema de forma paliativo enquanto a solução definitiva chega

Vinicius A. Santos disse...

Esta semana resolvi um problema com uma 'solução de contorno'.
Não interessa quem gerou o problema, qual o problema DE FATO, onde erramos NAQUELE MOMENTO.

O problema é que o suporte não gostou muito da solução(eles não tem esta visão mais profunda sobre prioridades).

Disse que eu não deveria fazer gambiarra no banco de dados em produção. E lá fui eu explicar MAIS uma vez que a gente deve focar na solução do problema imediato, afinal o cliente não tem culpa de nada, e auditorias serão feitas com certeza para apurar o que aconteceu, porém depois...

As vezes acho isso chato; explicar sempre a mesma coisa para pessoas que deveriam saber priorizar, ter discernimento, afinal de contas, não são usuários finais...

Como sempre a gente esbarra na velha questão: Contratação.

As vezes temos usuários finais prestando suporte de software, usuários finais testando o software.

Mas enfim, isso fica para eu comentar em outro post.

Dirlei Dionísio disse...

Parece que "profissionais" que não sabem avaliar prioridades quando estamos diante de uma emergência existem em todas as empresas. Quando lido com alguém assim numa situação de emergência, não sugiro uma solução de contorno - eu deixo ele sugerir. Digo algo mais ou menos assim: "Não sei qual a causa do problema, mas posso resolve-lo provisoriamente em 1 hora. Ou posso investigar até descobrir uma solução definitiva, o que pode levar um dia inteiro ou mais - não tenho como estimar. O que você acha que devemos fazer?".

A questão da contratação é crítica, principalmente quando são pessoas não-técnicas que recrutam técnicos. Talvez isso mereça um artigo...

Obrigado pelo comentário, Vinicius! Foi bom te ver por aqui. Um abraço!

Vinicius A. Santos disse...

Acredito que mereça um artigo sim!

Uma pena, no final das contas, não poder trabalhar com você...(à saber, estou hoje em Florianópolis)

Continuarei acompanhando seu blog.

Excelentes artigos e excelentes pontos de vista os seus.

Um abraço!