2 Punkte von GN⁺ 2025-01-14 | 1 Kommentare | Auf WhatsApp teilen
  • Rezension von David A. Wheeler

    • David J. Agans’ „Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems“ gilt als unverzichtbares Debugging-Buch für Software- und Hardware-Entwickler.
    • Das Buch erklärt grundlegende Prinzipien zum Auffinden und Beheben von Bugs statt einer bestimmten Technik und ist besonders nützlich für Entwickler mit wenig oder mittlerer Erfahrung.
    • Das Buch ist rund um die „neun Regeln“ aufgebaut und enthält Erklärungen zu jeder Regel sowie Hinweise zu ihrer Anwendung.
  • Die neun Regeln

    • Das System verstehen: Es ist wichtig, Handbücher zu lesen, die Grundlagen zu verstehen und Werkzeuge gut zu nutzen.
    • Fehlschläge herbeiführen: Es ist wichtig, Fehler erneut zu reproduzieren und die Ursache intermittierender Bugs zu finden.
    • Aufhören zu denken und beobachten: Zuerst Daten sammeln und sich nicht auf Vermutungen verlassen.
    • Teile und herrsche: Das Problem schrittweise eingrenzen und Testmuster verwenden, die sich leicht identifizieren lassen.
    • Immer nur eine Sache ändern: Kernelemente isolieren und Tests einzeln verändern.
    • Ein Audit-Trail führen: Festhalten, was getan wurde und welche Ergebnisse es gab, und verstehen, dass jedes Detail wichtig sein kann.
    • Den Stecker prüfen: Getroffene Annahmen hinterfragen und Werkzeuge testen.
    • Eine neue Perspektive gewinnen: Neue Einsichten gewinnen und auf die Stimme der Erfahrung hören.
    • Wenn es nicht behoben ist, ist es nicht behoben: Prüfen, ob das Problem wirklich gelöst wurde, und die Ursache beheben.
  • Stärken und Schwächen des Buches

    • Das Buch konzentriert sich auf die Grundprinzipien des Debuggings und unterscheidet sich dadurch von anderen Technikbüchern.
    • Es enthält praktische Ratschläge zum Umgang mit intermittierenden Problemen.
    • Im Anhang des Buches gibt es Links zu relevanten Websites und zum Download eines Posters.
    • Ein Nachteil ist, dass eine Übersicht fehlt, die alle Regeln und Unterregeln auf einer Seite zusammenfasst, und dass konkrete Ratschläge zu bestimmten Technologien fehlen.
  • Fazit

    • Das Buch ist nützlich, um die Grundprinzipien des Debuggings zu erlernen oder wieder aufzufrischen, und hilft sowohl Einsteigern als auch Experten.
    • David A. Wheeler empfiehlt dieses Buch nachdrücklich und betont die Bedeutung grundlegender Prinzipien.

1 Kommentare

 
GN⁺ 2025-01-14
Hacker-News-Kommentare
  • Die Versuchung ist groß, fehlerhaften Code direkt zu ändern, aber es ist leichter, funktionierenden Code kaputtzumachen, als kaputten Code zu reparieren. Wie beim Beispiel mit der Weihnachtsbeleuchtung ist es effektiv, mit einem minimalen funktionierenden Beispiel zu beginnen, um das Problem zu finden

  • Bei der Problemlösung ist es wichtig, nicht in Panik zu geraten. Klares Denken ist nötig, und gute Manager unterstützen dabei, sich auf die Problemlösung konzentrieren zu können

  • git bisect ist nützlich, um unter vielen Commits den Commit zu finden, der das Problem verursacht hat. Besonders in großen Codebases hilft es, Probleme schnell aufzuspüren

  • Es ist wichtig, das System zu verstehen, aber alle Handbücher zu lesen ist unrealistisch. Ein pragmatischer Ansatz ist nötig

  • Es ist wichtig, die richtige Datei auf der richtigen Maschine zu bearbeiten

  • Empfohlene Bücher, um eine Denkweise zur Problemlösung zu entwickeln:

    • "Der Marsianer" von Andy Weir
    • "Zen und die Kunst, ein Motorrad zu warten"
    • "Die drei Sonnen"
    • "To Engineer Is Human" von Henry Petroski
    • "Sie belieben wohl zu scherzen, Mr. Feynman!"
  • Zusätzliche Regeln:

    • "Vermute zuerst, dass es dein eigener Fehler ist." Man sollte zuerst den eigenen Code-Änderungen misstrauen
    • "Wenn du einen Bug findest, suche auch nach anderen verwandten Problemen." Dieselbe Art von Problem kann auch an anderen Stellen auftreten
    • "Optimiere in erster Linie für Benutzer und Wartungsprogrammierer"
  • Der Bug sollte in CI als Test hinzugefügt werden, um Regressionen zu verhindern. Man sollte prüfen, ob CI vor dem Fix fehlschlägt und danach erfolgreich durchläuft

  • Auch nach dem Debugging ist die Arbeit noch nicht beendet. Für jeden Bug sollte man drei Fragen stellen:

    1. Gibt es diesen Fehler auch an anderer Stelle?
    2. Welcher nächste Bug verbirgt sich hinter diesem Bug?
    3. Was muss getan werden, um solche Bugs zu verhindern?
  • Es ist wichtig, das Problem mit einer minimalen Konfiguration zu reproduzieren. In den meisten Fällen lässt sich der Bug so finden. Es ist effektiv, den Code in zwei Hälften zu teilen, um genau herauszufinden, welcher Teil fehlerhaft ist