Por Felipe Madureira, em Blog Scrum HalfPeriodicamente, aqui na empresa, temos a realizacao de palestras de conteudo tecnico buscando compartilhar o conhecimento individual para que ele se torne coletivo e uniforme entre a equipe. Esse projeto, de iniciativa dos proprios funcionarios, trata dos assuntos mais variados e e feito da equipe para a equipe. E e baseado em sua primeira apresentacao, do Rodrigo Aguas da Silva em que me inspirei para escrever o post de hoje. Em sua palestra, Rodrigo buscou levantar boas praticas para a Depuracao ( mais conhecida entre os desenvolvedores como Debug ) e sobre Otimizacao de codigo. Nesse post tratarei apenas do primeiro assunto, buscando oferecer aos leitores boas praticas para encontrar e buscar solucoes de problemas tecnicos.Em sua apresentacao, baseada no conhecido livro Code Complete, Rodrigo apresentou que a diferenca de tempo entre desenvolvedores para encontrar a fonte do problema pode variar de ate 20 vezes. Para reduzir o tempo de desenvolvimento perdido com essa tarefa, e de extrema importancia saber as praticas que facilitam localizar os defeitos. Os passos descritos sao simples, no entanto de extrema importancia para se realizar o Debug com eficiencia. A ideia e aplicar o metodo cientifico ao cenario de depuracao, como descrito brevemente nos passos abaixo.Estabilize o erro - Procure encontrar os valores de entradas e as condicoes em que o problema ocorre.Localiza a causa do erro - Formule hipoteses, realize o teste delas ate que consiga encontrar a fonte do problemaCorrija o defeito - Realize a correcao. Cuidado! 50% das vezes em que um erro e corrigido, outro e colocado no lugar!Teste - Realize o teste para verificar se o erro foi mesmo corrigido. Nesse momento, alem de testar manualmente, porque nao criar um teste automatizado para garantir que a situacao nunca se repita?Procure erros semelhantes - Identifique cenarios parecidos e codigos semelhantes em que o defeito tambem possa ter acontecido.Uma pratica que costuma reduzir muito o tempo para se encontrar ou corrigir um problema e apresentar para a equipe os sintomas e qual e o objetivo final do codigo. Baseado em experiencias anteriores, os outros membros da equipe podem formular hipoteses e acelerar em muito o processo de depuracao. Em alguns casos e ate possivel que a equipe decida por uma mudanca de estrategia e realize uma alteracao maior do codigo buscando melhorar a manutencao e a flexibilidade.No entanto, ao levar o problema aos outros desenvolvedores, fique atento a forma com que o mesmo sera levado. Muitas vezes, fazer a pergunta certa e essencial para uma resposta rapida. E esteja preparado para responder uma simples pergunta como: O que voce ja tentou?. Essa pergunta e tanto valida para a identificacao do problema quanto para a solucao. Saber explicitar seus passos ate entao e seu conhecimento sobre o assunto questionado e importante para evitar que os demais oferecam solucao triviais ou nao aplicaveis para o caso. Para entender mais sobre assunto, recomendo a leitura desse post (em ingles): whathaveyoutried.comA depuracao e um trabalho que sempre existira durante o desenvolvimento de software. Portanto, possuir boas tecnicas e ferramentas e essencial para