Lektion 7 10 Min.

Ursachenanalyse mit der 5-Warum-Methode

Die 5-Warum-Methode fuer Ursachenanalyse — aufhoeren, Symptome zu flicken, und die eigentlichen Probleme beheben, die Bugs immer wieder zurueckkommen lassen.

🔄 Quick Recall: In der vorherigen Lektion hast du Produktions-Debugging gelernt — strukturiertes Logging, Error-Tracking und KI-gestuetzte Log-Analyse. Du weisst jetzt, wie du Probleme in Produktion diagnostizierst. Jetzt gehen wir tiefer: Statt nur zu fixen, was kaputt ist, finden wir heraus, WARUM es kaputt ist.

Die meisten Bugs sind Symptome tieferer Probleme. Das Symptom zu beheben fuehlt sich produktiv an — der Fehler ist weg, der Nutzer zufrieden. Aber wenn du die Ursache nicht behebst, kommt der Bug zurueck. Oder schlimmer: Er kommt als anderer Bug zurueck, der schwerer zu diagnostizieren ist.

Die 5-Warum-Methode

Frage wiederholt „Warum?", bis du eine Ursache erreichst, die du dauerhaft beheben kannst:

Beispiel: Nutzer sehen nach dem Login eine leere Seite

Warum #FrageAntwort
1Warum ist die Seite leer?Die Dashboard-Komponente stuerzt beim Rendern ab
2Warum stuerzt sie ab?user.preferences ist undefined
3Warum ist es undefined?Die API gibt null fuer neue Nutzer zurueck
4Warum gibt die API null zurueck?Neue Nutzer haben keinen Preferences-Eintrag in der Datenbank
5Warum gibt es keinen Eintrag?Der Registrierungsprozess erstellt den Nutzer, aber initialisiert keine Standard-Einstellungen

Ursache: Registrierungsprozess erstellt keine Standard-Einstellungen

Symptom-Fix (temporaer): user.preferences || {} Null-Check im Dashboard

Ursachen-Fix (dauerhaft): Standard-Einstellungen bei der Registrierung erstellen UND bestehende Nutzer nachtraeglich befuellen

Wann aufhoeren zu fragen

Aufhoeren wennBeispiel
Du eine Prozessluecke erreichst„Kein automatisierter Test deckt diesen Pfad ab"
Du einen Design-Fehler erreichst„Die API validiert diese Eingabe nicht"
Du eine fehlende Anforderung erreichst„Wir haben nie spezifiziert, was fuer neue Nutzer passieren soll"
Du ein Infrastruktur-Problem erreichst„Die Datenbank hat kein Constraint dafuer"

NICHT aufhoeren bei: „Jemand hat einen Fehler gemacht" — das ist Schuldzuweisung, keine Analyse. Frage: „Warum war es moeglich, diesen Fehler zu machen?" — so findest du die Prozessluecke.

KI-gestuetzte Ursachenanalyse

KI-Prompt fuer 5-Warum-Analyse:

„Ich habe einen Bug: [BESCHREIBUNG]. Die unmittelbare Ursache ist [WAS ICH GEFUNDEN HABE]. Hilf mir bei einer 5-Warum-Analyse: Frage weiter ‘Warum?’, bis wir eine Ursache erreichen, die dauerhaft behoben werden kann. Fuer jedes ‘Warum’: Welche Evidenz sollte ich suchen, um die Antwort zu bestaetigen? Am Ende: Empfehle (1) einen schnellen Symptom-Fix, (2) einen Ursachen-Fix."

Symptom-Fix vs. Ursachen-Fix

Symptom-FixUrsachen-Fix
GeschwindigkeitMinuten bis StundenStunden bis Tage
ReichweiteBehebt diesen spezifischen FehlerVerhindert diese Kategorie von Fehlern
RisikoNiedrig — kleine AenderungMittel — groessere Aenderung
HaltbarkeitTemporaer — Bug kann zurueckkommenDauerhaft — Bug-Klasse eliminiert
WannProduktion brenntNach der Stabilisierung

Der richtige Ansatz ist meistens beides: Symptom-Fix anwenden, um die Blutung zu stoppen, dann den Ursachen-Fix sofort einplanen.

Haeufige Ursachen-Kategorien

KategorieBeispielSystemischer Fix
Fehlende ValidierungAPI akzeptiert ungueltige DatenEingabevalidierung + Schema-Erzwingung
Fehlende StandardwerteNull-Absturz wenn Daten fehlenStandardwerte bei der Erstellung initialisieren
Race ConditionTiming-abhaengige FehlerRedesign zur Eliminierung der Timing-Abhaengigkeit
Fehlende FehlerbehandlungUnbehandelter Edge CaseUmfassende Error Boundaries hinzufuegen
Unvollstaendige MigrationAltes Datenformat verursacht AbsturzBackfill + alle Datensaetze validieren
Fehlende TestabdeckungBug in nicht getestetem CodepfadTests fuer diesen und aehnliche Pfade ergaenzen

Quick Check: Eine Funktion stuerzt ab, wenn eine Liste doppelte Eintraege hat. Der schnelle Fix ist list(set(items)) zum Entfernen von Duplikaten. Welche Ursachen-Frage solltest du stellen? (Antwort: „Warum hat die Liste ueberhaupt Duplikate?" Vielleicht sendet die Datenquelle Duplikate (Fix: bei der Eingabe deduplizieren). Vielleicht ist der Query-Join falsch (Fix: Query reparieren). Vielleicht hat der Nutzer das Formular doppelt abgeschickt (Fix: Idempotenz einbauen). Duplikate beim Verarbeiten zu entfernen ist ein Symptom-Fix.)

Key Takeaways

  • Die 5-Warum-Methode bohrt durch Symptome zur Ursache — jedes „Warum" geht eine Ebene tiefer, aufhoeren bei einer Prozessluecke, einem Design-Fehler oder einer fehlenden Anforderung, die dauerhaft behoben werden kann
  • Ursachenanalyse adressiert Prozesse, nicht Menschen: „Das Code Review hat es nicht erkannt" fuehrt zu umsetzbaren Prozessverbesserungen (Checklisten, automatisierte Tests), waehrend „Der Entwickler hat schlechten Code geschrieben" nur zu Schuldzuweisung fuehrt
  • Nutze beides — Symptom-Fix UND Ursachen-Fix: Produktion sofort stabilisieren, dann die Ursache innerhalb von Tagen beheben — das gefaehrlichste Ergebnis ist ein Symptom-Fix, der gerade lange genug haelt, dass alle das eigentliche Problem vergessen

Up Next

In der letzten Lektion baust du dein persoenliches Debugging-Playbook — alles aus diesem Kurs in einem wiederverwendbaren System, das du auf jeden Bug anwenden kannst.

Wissenscheck

1. Dein Team behebt einen Bug: Nutzer konnten sich nicht einloggen, weil der Auth-Token zu schnell ablief. Der Fix: Token-Ablauf von 15 Minuten auf 60 Minuten erhoehen. Zwei Wochen spaeter: gleicher Login-Fehler. Was lief beim ersten Fix falsch?

2. Du wendest die 5-Warum-Methode auf einen Produktionsausfall an. Nach 'Warum #3' ist dein Team uneins: Einer sagt 'der Entwickler hat schlechten Code geschrieben', ein anderer sagt 'das Code Review hat den Bug nicht erkannt'. Welche Formulierung ist nuetzlicher?

3. Du hast die Ursachenanalyse abgeschlossen und die echte Ursache gefunden. Du hast ausserdem 3 weitere gemeldete Bugs diese Woche. Solltest du die Ursache jetzt beheben oder das Symptom patchen und die Ursache spaeter beheben?

Beantworte alle Fragen zum Prüfen

Erst das Quiz oben abschließen

Passende Skills