Dicas de Debug 


- Faca o bug-track cuidadosamente : O fato de que um bug foi encontrado, nao significa que alguem ira conserta-lo. Certifique-se de que voce esta usando um sistema de bug-tracking na sua empresa; caso nao, desenvolva o seu proprio sistema pessoal, para armazenar os bugs, identifica-los e dar continuidade na sua solucao. Assim, voce ira saber que problemas consertar, quando conserta-los e quantos eles sao.

Uma dica adicional eh criar um indice de performance como o DDR (defect discovery rate). Esse indice nao somente vai te dar um feedback pessoal de seus projetos, mas tambem vai te ajudar a saber quando colocar esse codigo em producao. Fazer o fix de um bug esta ok, mas 3 fixes consecutivos no mesmo dia, nao esta nada bem. Perder a conta de nossos bugs, nao efetivarmos suas correcoes de uma vez ou nao sabermos responder quais sao eles, nao nos ajuda em nada profissionalmente nem a ganhar pontos na nossa carreira.

- Conserte todos os warnings da sua compilacao antes de colocar o codigo em producao ou efetuar um debug : Por experiencia, ja vi projetos onde o codigo continha dezenas de warnings. Normalmente elas sao inofensivas, sao mudas, sao cegas. Mas nao podemos generalizar esse pensamento para TODAS elas. Regra geral: Considere todas as warnings como backdoors em potencial para falhas no seu sistema/codigo. Elimine-os um por um, mesmo aqueles simples warnings de variaveis criadas que nao eh utilizada.

- Quando encontrar um bug, nao caia direto no codigo como numa maratona para conserta-lo : (importante : mesmo por maior que seja a pressao que voce esteja recebendo para conserta-lo) Va com calma. Respire fundo, entende que seu codigo tem um erro, e que ele tem q ser eliminado; mas antes disso, ele tem que ser entendido. Suas causas e consequencias. Analise o codigo, analise o ambiente, analise as condicoes onde eles ocorrem. Dica anexa: Nunca fixe bugs em producao. O bug esta ali, claro e visivel; portanto tente representa-lo e traga-o para o ambiente de desenvolvimento. E uma vez representado, nao se acanhe em forca-lo sempre que possivel. Entenda suas causas, novamente. SEMPRE que se deparar com um bug tenha em mente essa frase: "Consertar um bug eh aumentar as chances naquele mesmo codigo a chance de introduzir pelo menos mais outros 5 bugs". Portanto, cuidado com a espiral de geracao de bugs.

- Teste, teste, teste : E nao somente com as mesmas ocorrencias. Quando receber a noticia de um bug, nao verifique com as condicoes que voce esta acostumado a testar, mas sim com as que causaram o erro. Nao pule dentro do codigo desarmado. Testar um bug eh lutar numa guerra contra o tempo e contra um inimigo invisivel, como numa guerrilha. Va para a guerra armado com o maximo de municoes que puder. E lembre-se: depois de 3 horas de busca num bug, e se voce executar o codigo mais uma vez e nao ocorrer o bug, isso nao significa ABSOLUTAMENTE que o bug desapareceu; ele apenas nao ocorreu.

- Transforme seu bug em unidades monetarias (porque no final das contas os bugs SAO sim prejuizos financeiros, por menor que sejam eles), nao tenha medo de se recriminar por um codigo mal escrito, ou porque voce nao sabe como consertar o bug.

- Nao esconda bugs : nem faca vista grossa com eles, nao culpe a tecnologia, nao culpe o ambiente.

- Nao se impressione com bugs : Nao importa o ambiente de trabalho em que voce atua. Bugs sempre existiram e sempre existirao. Nao culpe o ambiente, eu mesmo ja me decepcionei varias vezes com empresas que a principio eram como o paraiso na terra, com gente qualificada, ferramentas excelentes, mas no final de alguns meses revelou-se uma farse de metodos e gerencia. Considere isso como padrao, e eh sua tarefa tambem encarar esse desafio.

Resumindo : Use a psicologia a seu favor, seja super criterioso com voce mesmo. Aceite criticas, use-as ao seu favor. Afinal de contas, desenvolver um sistema eh mais do que uma tarefa de logica, para mim eh mais semelhante a uma obra de arte. Eh criacao. Porque matematicas nao dobram as incoerencias de um mundo ou ambiente imperfeito onde arquivos nao sao abertos de modo compartilhado, mas a arte sim. E criar sistemas, afinal de contas, eh a nossa vida. (pelo menos eh a minha)

Edge