Gerência - Qualidade e Testes

Como Lidar com imprevistos?

Imprevistos acontecem. Porém eles podem acontecer mais com alguns do que com outros. Previna-se.

por Mauro Vianna



Vamos abordar nesta edição como nos prevenir para reduzir a frequência e o impacto dos imprevistos no projeto.

A melhor maneira de tratar um imprevisto, ou um problema de forma geral, é evitando que ele aconteça. Isto parece óbvio, mas muitas vezes nos esquecemos desta regra básica. É comum no dia a dia nos enterrarmos na resolução de problemas e perdemos o foco. Ou seja, não temos tempo de planejar adequadamente, mas sempre arrumamos tempo para resolver os problemas resultantes da falta de planejamento. Neste artigo, listo algumas boas práticas para lidar com imprevistos em projetos de software.

Previna-se: Analise os Riscos

Em artigo anterior desta coluna, falamos da importância da análise de riscos. Esta análise tem um resultado óbvio que é evitar a ocorrência dos problemas. Ou seja, se eu sei que um determinado risco pode virar um problema, eu posso tentar evitá-lo. Mas o que fazer se este risco acontecer de qualquer jeito? Outro produto da análise de risco é o plano de contingência. Ou seja, na eventualidade do risco virar um problema real, o que nem sempre pode ser evitado, já sabemos como lidar, minimizando o impacto deste problema. Um exemplo típico é o caso de incêndio em um edifício comercial. A existência de uma brigada de incêndio e de um plano e simulações de evacuação reduzem ou até eliminam a possibilidade de existir vítimas. Resumindo, analise os riscos e transforme os imprevistos em riscos possíveis.

Ataque os Riscos Cedo

Ainda pensando em riscos, sabemos que alguns riscos são maiores do que os outros. Alguns em particular estão fora do nosso controle pois dependem de fatores desconhecidos. Por exemplo, uma parte significativa do nosso projeto pode depender de um processo de carga de dados baseado em tecnologia nova e ainda não testada. Sendo assim, quando é o melhor momento para testar este processo? A resposta é: o mais cedo possível. Neste caso você já eliminará o risco, se tudo correr bem, ou já aplicará soluções alternativas, se houver problemas, reduzindo assim o impacto nas demais partes do projeto. Resumindo, não espere o problema acontecer. Ataque o risco cedo. Quanto mais cedo você encontrar um problema, mais fácil será lidar com ele.

Policie o Projeto

As recomendações acima visam reduzir a ocorrência e o impacto de imprevistos, transformando-os em riscos conhecidos. Porém, mesmo assim podem existir riscos que não possam ser atacados diretamente e imprevistos continuarão a existir. Como discutimos na edição anterior, um ponto importante para manter o controle do projeto é quebrá-lo em tarefas menores, de maneira a facilitar o acompanhamento do mesmo. Tipicamente, uma periodicidade adequada para checagem das metas seria de uma a duas vezes por semana. Com isso podemos identificar os imprevistos com mais antecedência e analisar o impacto e ações a serem tomadas mais cedo. Tomemos por exemplo uma função de cálculo de imposto prevista para dez dias úteis. Ao invés de verificarmos se a tarefa está pronta ao final do prazo, podemos checar no 3º dia e descobrir, por exemplo, que determinados detalhes do cálculo não foram especificados adequadamente. Isto permite ações pró-ativas, tais como envolver o analista responsável ou o especialista em tributação para reavaliar o problema, enquanto os programadores abordam outra tarefa temporariamente. Ou seja, a identificação rápida do problema permite ações que reduzam ou até eliminem o impacto do mesmo. Resumindo, não espere que os imprevistos venham até você. Vá atrás deles antes que virem grandes problemas.

Só Acaba Quando Termina

Muitas vezes, em projetos de software, sentimos um alívio após o término da codificação, seja de uma função específica ou de um sistema completo. Porém este é o momento para redobrarmos nossa atenção, pois é quando devemos enfatizar os testes no nosso sistema. Muitos dos problemas encontrados com clientes ocorrem por falta de qualidade dos softwares fornecidos. Mesmo grandes empresas de software fornecem produtos com bugs. A complexidade dos softwares atuais é tanta que é quase impossível evitá-los. Eu me arriscaria até a dizer que não existe nenhum software hoje sem bug. No entanto, a quantidade e gravidade de bugs desconhecidos podem ser bastante reduzidas através de um bom plano e processo de testes. A identificação e correção dos erros têm um resultado adicional, que é a curva de ocorrência de erros. Esta curva permite identificarmos se e quando o software está estável o suficiente para liberação. Claro, um bom plano de testes depende de um bom planejamento inicial, incluindo a definição de metas e membros da equipe.

Neste artigo abordamos a questão dos imprevistos encontrados em projetos de software. A primeira e melhor abordagem é evitar os imprevistos através de uma boa análise de riscos e atacá-los cedo no projeto, ou seja, fazer um bom planejamento. Em seguida, um bom gerenciamento do projeto com checagens regulares evita que imprevistos se tornem grandes problemas, permitindo ações pró-ativas. Por último, uma boa fase de testes eliminará os bugs antes que o sistema entre em produção, evitando assim problemas maiores.

Mauro Vianna

Mauro Vianna - Sócio fundador da ARCON Informática, integradora de sistemas no Rio de Janeiro. Atualmente ocupa a função de Diretor de Tecnologia. Para entrar em contato com Mauro, escreva para mvianna@arcontech.com.br.