13 Punkte von kciter1 2024-07-29 | 7 Kommentare | Auf WhatsApp teilen
  • Debugging ist praktisch eine unverzichtbare Kernkompetenz für Entwickler.
  • Beim Debugging ist vor allem das Mindset, wie man an ein Problem herangeht, entscheidend.
  • Debugging ist der Prozess, auf Grundlage der gegebenen Situation und Daten die Ursache eines Problems zu finden.
    • Der Autor bezeichnet dies als Intuition.
    • Intuition bedeutet, bekanntes Wissen mit dem Problem zu verknüpfen.
    • Erfahrung fungiert als Abkürzung, durch die Wissen direkt in Intuition übergeht.
  • Entwickler grenzen beim Debugging instinktiv Möglichkeiten ein, um die Ursache eines unerwarteten Verhaltens zu finden.
  • Der Autor hält es für effizient, mit klaren Prinzipien schrittweise einzugrenzen.
  • Es werden vier Schritte zur Problemfindung vorgestellt.
    • Erstens: misstrauen.
      • Code, Logs, Fehlermeldungen, Monitoring-Daten, Anforderungen, Hardware usw. dienen alle dazu, Informationen zur Problemlösung zu sammeln.
      • Es ist hilfreich, eine Checkliste zu erstellen.
    • Zweitens: klassifizieren.
      • Die gesammelten Informationen sollten in Bekanntes und weniger Bekanntes unterteilt werden.
      • Informationen, die bereits beim Sammeln direkt herausgefiltert werden, beruhen auf kleiner Intuition.
      • Der Autor klassifiziert in vier Kategorien: logische Fehler, Fehler in abhängigen Technologien, Fehler in Basistechnologien und physische Fehler.
    • Drittens: lernen.
      • Auf Basis der gesammelten Informationen sollten Wissenslücken identifiziert und geschlossen werden.
    • Viertens: verknüpfen.
      • Auf Grundlage der Informationen sollten Hypothesen zum Problem aufgestellt und experimentell überprüft werden.
      • Wenn dabei neue Erkenntnisse entstehen, sollte eine Feedback-Schleife genutzt werden, indem die vier Schritte erneut durchlaufen werden.
  • Die oben vorgestellten Inhalte sind eine nützliche Methode, um die zuvor erwähnte Intuition zu trainieren.
  • Wenn du noch keine eigenen Debugging-Prinzipien hast, kannst du sie auf Basis dieses Artikels entwickeln oder neu entwerfen. Noch besser ist es, gute Tipps miteinander zu teilen.

7 Kommentare

 
cosine20 2024-07-30

Der Autor hält es für effizient, mit Prinzipien zu arbeiten und die Möglichkeiten Schritt für Schritt einzugrenzen.

Dem stimme ich sehr zu. Und ich finde, dass hier ein allgemeiner Ansatz zum Debugging gut geordnet zusammengefasst und vorgeschlagen wurde.

Tatsächlich greifen im Prozess des Debuggings sehr viele unterschiedliche Ursachen und Hintergrundkenntnisse komplex ineinander, daher ist es wirklich wichtig, den Fokus schrittweise einzugrenzen, um darin die nötigen Hinweise zu finden.
Im Text heißt es, dass man in diesem Prozess Intuition und Einsicht schärfen müsse. Wenn es darum geht, intuitiv zu erfassen, wo die Ursache liegt und worauf man die Untersuchung konzentrieren sollte, scheint eine durch Erfahrung und Gespür aufgebaute Intuition einen großen Anteil daran zu haben, den Ausgangspunkt zu finden.

 
kciter1 2024-07-30

Dem stimme ich zu. Ich wollte die von Ihnen erwähnte Intuition gut ausdrücken, aber ich denke, es wäre insgesamt besser, den Text konsequent auf „Einsicht“ statt auf „Intuition“ auszurichten.

 
halfenif 2024-07-30

Der Gedanke, dass manche Menschen schlussfolgern können und andere nicht.

Das muss wohl etwa 30 Jahre her sein.

Früher sagten erfahrene Kollegen oft, dass in der IT nach etwa drei Jahren alle auf demselben Leistungsniveau seien.

Wenn ich heute darüber nachdenke ....

 
savvykang 2024-07-29

Ist es nicht natürlicher, das Verknüpfen von Informationen eher als einen Bereich der Schlussfolgerung oder des logischen Beweises zu betrachten statt als Intuition? Wenn man das Beweisen durch Wiederholung gründlich verinnerlicht, kann es zwar so wirken, als käme die Antwort wie beim Auswendiglernen des Einmaleins sofort und ohne Zwischenschritte heraus und damit intuitiv erscheinen, aber ich denke trotzdem, dass man beides unterscheiden sollte.

Den übrigen Punkten – Zweifel, Einordnung und Lernen – stimme ich zu, weil ich selbst erfahren habe, dass sie sich verbessern, wenn Erfahrung und Hintergrundwissen zunehmen.

 
savvykang 2024-07-30

Ich habe den Text noch einmal gelesen und ergänze Folgendes.

Die Definition von Intuition, die der Autor vertritt, scheint sich von der gesellschaftlich gebräuchlichen Definition von Intuition zu unterscheiden. Ich verstehe die allgemeine Definition von Intuition so, dass man ein Problem ohne Denkprozess erfasst. Beim Lesen des Textes hatte ich kurz den Eindruck, ich hätte die Bedeutung von Intuition falsch verstanden, sodass ich sie noch einmal nachgeschlagen habe. Ich denke auch, dass dies nicht der grundsätzlichen These des Textes widerspricht, dass Debugging ein gedankliches Vorgehen erfordert. Wenn Debugging wirklich eine Aufgabe wäre, die vollständig durch Intuition ausgeführt werden kann, müsste dann nicht auch die Behauptung zutreffen, dass man beim Debugging überhaupt keine Logs oder Daten prüfen und keinerlei Versionsverwaltung benötigen würde?

 
kciter1 2024-07-30

Hallo, vielen Dank für Ihr Interesse an dem Beitrag.

Wie Sie gesagt haben, bedeutet Intuition im Allgemeinen, einen Gegenstand ohne unmittelbare Denktätigkeit zu erfassen. Trotzdem glaube ich nicht, dass man wirklich ohne jedes Wissen bis zur richtigen Antwort gelangen kann.

Wenn ich zunächst meine Gedanken zu dem Wort „Intuition“ aufschreiben soll: Wenn man über Debugging spricht, hört man von Kolleginnen und Kollegen oder sagt es auch selbst oft Dinge wie „Das kam mir plötzlich in den Sinn“ oder „Irgendwie hatte ich das Gefühl, dass genau dieser Teil das Problem ist“. Ich habe genau diesen Teil als Intuition verstanden. Wenn man das, was einem plötzlich eingefallen ist, nicht einfach übergeht, sondern Punkt für Punkt prüft, stellt man am Ende fest, dass man entweder bereits Erfahrung mit genau diesem Bereich hatte oder das dazugehörige Wissen gut verstanden hat. Deshalb habe ich das Wort Intuition verwendet, und weil es zu Missverständnissen kommen kann, habe ich den Satz ergänzt: „Intuition bedeutet, das Wissen, das ich habe, mit dem Problem zu verknüpfen.“

Wenn ich also auf einige der von Ihnen genannten Zweifel mit meinen Gedanken antworten soll:
Bezüglich des Punkts „Das widerspricht auch der übergeordneten Argumentation, dass Debugging ein gedankliches Verfahren erfordert“ habe ich die in meinem Text beschriebene Intuition so dargestellt, dass man etwas, das man bereits erlebt hat oder weiß, ohne großes Nachdenken verkürzt beziehungsweise auslässt. Daher wollte ich nicht ausdrücken, dass kein Denkprozess nötig ist, sondern dass sie als Werkzeug dienen kann, mit dem man schneller denken kann.

Als Nächstes zu „Wenn Debugging wirklich eine Tätigkeit wäre, die vollständig durch Intuition ausgeführt werden kann, müsste dann nicht auch die Behauptung zutreffen, dass man beim Debugging überhaupt keine Logs, Datenprüfung oder Versionsverwaltung braucht?“: Ich habe nicht ausgedrückt, dass es vollständig durch Intuition ausgeführt werden kann. Im Gegenteil, ich habe den Satz ergänzt: „Debugging ist der Prozess, auf Grundlage der gegebenen Situation und der Daten die Ursache eines Problems zu finden.“ Ich denke allerdings, dass es kaum Entwickler gibt, die bei jedem Debugging-Vorgang den im Text beschriebenen vierstufigen Schlussfolgerungsprozess vollständig durchlaufen. Wenn man über ein gewisses Maß an Erfahrung und Wissen verfügt, gibt es sicher auch Fälle, in denen man aufgrund der eigenen Einschätzung Schritte überspringt. Die von Ihnen erwähnten Logs, Daten usw. haben meiner Meinung nach zwei Rollen: Wenn Erfahrung oder Wissen vorhanden sind, helfen sie dabei, diese wieder ins Gedächtnis zu rufen; wenn sie nicht vorhanden sind, helfen sie bei der Schlussfolgerung. Deshalb sind sie wichtige Informationen, auf die man selbst für die im Text erwähnte Intuition nicht verzichten kann.

Ich denke, dass das Wort Intuition, wie ich es in diesem Text verwendet habe, selbst etwas vage sein kann. Vielleicht waren auch Aufbau und Herleitung des Textes nicht gut genug, um meine Gedanken passend auszudrücken. Die Stellen, die nicht konkret genug waren, möchte ich zunächst überarbeiten. Ob es jedoch besser wäre, das Wort Intuition zu ersetzen, kann ich noch nicht gut beurteilen. Schon beim Schreiben des Textes habe ich das Wort Intuition als den Kern angesehen, deshalb fällt mir kein anderes Wort ein, das es ersetzen könnte. Wenn Sie eine gute Idee haben, wäre ich Ihnen dankbar, wenn Sie sie mir mitteilen würden. :)

 
savvykang 2024-07-31

Ich denke, die Geschlossenheit des Textes ließe sich erhöhen, wenn in der Einleitung die Hintergrund­erklärung ergänzt wird, dass beim Debugging sowohl Intuition als auch Schlussfolgerung erforderlich sind, und im Hauptteil erläutert wird, wie man Probleme findet und wie Intuition bzw. Schlussfolgerung damit zusammenhängen.

Vor der Änderung

  1. Debugging ist der Prozess, auf Grundlage der gegebenen Situation und Daten die Ursache eines Problems zu finden.
  2. Die Problemlösung durch Debugging entspringt in der Regel der Intuition des Entwicklers.
  3. Es gibt vier Schritte, um ein Problem zu finden.

Nach der Änderung

Einleitung

  1. Debugging ist der Prozess, auf Grundlage der gegebenen Situation und Daten die Ursache eines Problems zu finden.
  2. Beim Debugging sind nacheinander zwei Teilaufgaben erforderlich: Problemerkennung und Problemlösung.
  3. Bei der Problemerkennung wirkt Intuition, bei der Problemlösung Schlussfolgerung. Eine Theorie, die dies stützt, ist die Dual-Process-Theorie (dual process theory).
  4. Wenn im Prozess der Problemerkennung ausschließlich Schlussfolgerung verwendet wird, muss man technische Details wie die Beschaffenheit des Systems einzeln prüfen und verifizieren, was die Steigerung der Produktivität einschränkt. Stattdessen ist es für die Debugging-Strategie vorteilhaft, Intuition im Prozess der Problemerkennung unterstützend einzusetzen.
  5. Um die Wirksamkeit der Intuition zu erhöhen, ist es wichtig, im Alltag Erfahrungen und Einsichten, also Heuristiken, anzusammeln.
  6. Es besteht immer die Möglichkeit, dass Intuition falsch ist oder nicht zur Situation passt; daher ist auch ein Training wichtig, um sich von kognitiven Verzerrungen zu lösen.

Hauptteil (Debugging-Verfahren)

  1. Informationssammlung
  2. Klassifizierung – hier wirken Intuition und Heuristik
  3. Lernen
  4. Hypothesenbildung und Verifikation – hier wirkt Schlussfolgerung