2 pontos por GN⁺ 2025-01-14 | 1 comentários | Compartilhar no WhatsApp
  • Resenha de David A. Wheeler

    • David J. Agans, autor de "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems", é considerado um livro indispensável para desenvolvedores de software e hardware.
    • O livro explica princípios básicos para encontrar e corrigir bugs, em vez de focar em tecnologias específicas, sendo especialmente útil para desenvolvedores iniciantes e de nível intermediário.
    • A obra é estruturada em torno de "nove regras" e traz explicações sobre cada uma delas e como aplicá-las.
  • As nove regras

    • Entenda o sistema: é importante ler o manual, entender os fundamentos e usar bem as ferramentas.
    • Faça a falha acontecer: é importante reproduzir a falha novamente e descobrir a causa de bugs intermitentes.
    • Pare de pensar e observe: colete os dados primeiro e não dependa de suposições.
    • Dividir para conquistar: resolva o problema restringindo seu escopo e use padrões de teste fáceis de identificar.
    • Mude uma coisa de cada vez: isole os elementos centrais e altere os testes um por um.
    • Mantenha um registro de auditoria: registre o que foi feito e os resultados, entendendo que todos os detalhes podem ser importantes.
    • Verifique a tomada: desconfie do que você assumiu e teste as ferramentas.
    • Obtenha uma nova perspectiva: é importante conseguir novos insights e ouvir a voz da experiência.
    • Se não foi corrigido, então não foi consertado: confirme se o problema foi realmente resolvido e corrija a causa.
  • Pontos fortes e fracos do livro

    • O livro se concentra nos princípios básicos da depuração, o que o diferencia de outros livros técnicos.
    • Inclui conselhos práticos sobre como lidar com problemas intermitentes.
    • O apêndice do livro traz links para sites relacionados e para baixar pôsteres.
    • Como ponto negativo, não há uma lista que reúna todas as regras e sub-regras em uma única página, e faltam conselhos concretos sobre tecnologias específicas.
  • Conclusão

    • Este livro é útil para aprender ou relembrar os princípios básicos da depuração e ajuda tanto iniciantes quanto especialistas.
    • David A. Wheeler recomenda fortemente este livro e enfatiza a importância dos princípios fundamentais.

1 comentários

 
GN⁺ 2025-01-14
Comentários do Hacker News
  • A tentação de consertar código com bug é grande, mas é mais fácil quebrar um código que funciona do que corrigir um código quebrado. Como no exemplo das luzes de Natal, começar com um exemplo mínimo que funcione para encontrar o problema é eficaz

  • Ao resolver problemas, o importante é não entrar em pânico. É preciso pensar com clareza, e um bom gestor ajuda dando suporte para que você possa se concentrar na resolução do problema

  • git bisect é útil para encontrar o commit que causou o problema entre vários commits. Especialmente em codebases grandes, ele permite localizar o problema rapidamente

  • Entender o sistema é importante, mas ler todos os manuais é irrealista. É preciso ter uma abordagem prática

  • É importante editar o arquivo certo na máquina certa

  • Livros recomendados para desenvolver a mentalidade de resolução de problemas:

    • "The Martian" de Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" de Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • Regras adicionais:

    • "Desconfie que a culpa é sua". Você deve suspeitar primeiro das mudanças no seu código
    • "Quando encontrar um bug, procure também outros problemas relacionados". O mesmo tipo de problema pode estar acontecendo em outros lugares
    • "Otimize priorizando o usuário e o programador de manutenção"
  • O bug deve ser adicionado ao CI como teste para evitar regressões. É preciso verificar se o CI falha antes da correção e passa depois dela

  • Mesmo depois do debugging, o trabalho não acabou. Para cada bug, é preciso fazer três perguntas:

    1. Esse erro existe em outros lugares?
    2. Qual é o próximo bug escondido por trás deste?
    3. O que deve ser feito para evitar esse tipo de bug?
  • É importante reproduzir o problema com a configuração mínima possível. Na maioria dos casos, isso permite encontrar o bug. Dividir o código ao meio para descobrir exatamente qual parte está errada é uma abordagem eficaz