Ein überprüfbares Post-mortem schreiben
Ein Post-mortem ist ein kurzer schriftlicher Bericht über einen Vorfall: eine Zeitleiste, eine Ursache und eine Liste von Maßnahmen. Es zählt, weil eines, das niemand prüfen kann, nur ein Gefühl festhält.
Der Kostenvorfall der Bibliothek ist vorbei. Das Team schreibt ihn auf, und ein kleines Skript vergleicht den Entwurf mit dem Protokoll, bevor jemand unterschreibt.
Am Ende dieser Lektion
Notiz
Ich kann aufschreiben, was geschah, warum und was sich ändert.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Post-mortem | ein schriftlicher Bericht über einen Vorfall und seine Folgen | |
| Zeitleiste | die Ereignisse eines Vorfalls in zeitlicher Reihenfolge | |
| Ursache | warum es geschah, in Worten, die das Protokoll bestätigt | |
| Maßnahme | eine Änderung mit verantwortlicher Person und Frist | |
| Prüfung | ein Weg zu sehen, dass eine Maßnahme gewirkt hat | höchstens 2 Versuche |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Zeitleiste nutzt die Zeiten des Protokolls
Eine Zeitleiste listet in Reihenfolge, was geschah und wann. Kopieren Sie jede Zeit aus einer Aufzeichnung. Schreiben Sie sie nicht aus dem Gedächtnis.
Eine gute Zeitleiste enthält auch die langsamen Teile: wann die Ursache begann, wann es jemand bemerkte und wann es endete. Die Lücken zwischen diesen Zeiten sind die Lehren.
Beispiel: die Ereignisse der Bibliothek
| Zeit | Ereignis |
|---|---|
| 10:55 | Ein längeres Faktenblatt geht online |
| 12:02 | Der stündliche Kostenalarm schlägt an |
| 12:20 | Die Ursache wird in der Spur gefunden |
| 12:35 | Die Versuche werden begrenzt |
| 13:00 | Die Kosten liegen wieder unter der Grenze |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Ursache, die das Protokoll bestätigen kann
Schreiben Sie die Ursache als Satz, den das Protokoll beweisen oder widerlegen kann. Er sagt, was geschah, bei welchen Anfragen und warum.
„Jede Gebührenfrage wurde fünfmal versucht, weil die Prüfung auf 40 Wörter nicht bestehen konnte“ lässt sich prüfen. „Das System war überlastet“ nicht: Keine Aufzeichnung bestätigt es.
Eine Maßnahme hat Verantwortliche und Prüfung
Eine Maßnahme ist eine Änderung, die die Ursache behebt oder die Lücken verkürzt. Jede hat eine verantwortliche Person, eine Frist und eine Prüfung: eine Zahl, die das Protokoll zeigt, wenn die Maßnahme gewirkt hat.
„Sorgfältiger sein“ hat nichts davon. „Höchstens 2 Versuche je Anfrage, binnen 2 Tagen im Protokoll sichtbar“ hat alle drei.
Ein häufiger Fehler
Warnung
Viele glauben, ein Post-mortem müsse sagen, wer schuld ist. Es soll sagen, was im System den Fehler erlaubte. Setzen Sie einen Namen nur als Verantwortliche neben eine Maßnahme und sonst nirgends.
Entwurf und Protokoll schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const EREIGNISSE = [' ' { zeit: \"10:55\", code: \"blatt_veroeffentlicht\" },' ' { zeit: \"12:02\", code: \"alarm_ausgeloest\" },' ' { zeit: \"12:20\", code: \"ursache_gefunden\" },' ' { zeit: \"12:35\", code: \"versuche_begrenzt\" },' ' { zeit: \"13:00\", code: \"kosten_normal\" },' '];' 'const ENTWURF = {' ' zeitleiste: [' ' { zeit: \"10:55\", code: \"blatt_veroeffentlicht\" },' ' { zeit: \"12:02\", code: \"alarm_ausgeloest\" },' ' { zeit: \"12:10\", code: \"ursache_gefunden\" },' ' { zeit: \"13:00\", code: \"kosten_normal\" },' ' ],' > pm.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Entwurf und Protokoll schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' ' ursache: \"Jede Gebührenfrage wurde fünfmal versucht, weil die Prüfung auf 40 Wörter nicht bestehen konnte\",' ' massnahmen: [' ' { was: \"Versuche auf 2 begrenzen\", verantwortlich: \"Jonas\", pruefung: \"Das Protokoll zeigt höchstens 2 Versuche je Anfrage\", tage: 2 },' ' { was: \"Beim Blatt sorgfältiger sein\", verantwortlich: \"Jonas\", pruefung: \"\", tage: 5 },' ' { was: \"Alle 10 Minuten alarmieren\", verantwortlich: \"\", pruefung: \"Ein Alarm kommt binnen 10 Minuten nach einem Anstieg\", tage: 60 },' ' ],' '};' 'fs.writeFileSync(\"ereignisse.json\", JSON.stringify(EREIGNISSE, null, 1));' 'fs.writeFileSync(\"postmortem.json\", JSON.stringify(ENTWURF, null, 1));' >> pm.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Entwurfsdateien anlegen
docker exec -w /home/node/project agent node pm.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Prüfer schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const MAX_TAGE = 30;' 'function hatZiffer(text) { return /[0-9]/.test(text); }' 'function ausfuehren() {' ' const ereignisse = JSON.parse(fs.readFileSync(\"ereignisse.json\", \"utf8\"));' ' const pm = JSON.parse(fs.readFileSync(\"postmortem.json\", \"utf8\"));' ' const zeitleiste = [];' ' const massnahmen = [];' ' let letzte = \"\";' ' pm.zeitleiste.forEach(function (eintrag, i) {' ' const gefunden = ereignisse.find(function (e) { return e.code === eintrag.code; });' ' if (gefunden === undefined) zeitleiste.push(i + \":unbekanntes_ereignis\");' ' else if ((gefunden.zeit === eintrag.zeit) === false) zeitleiste.push(i + \":falsche_zeit\");' ' if (eintrag.zeit < letzte) zeitleiste.push(i + \":falsche_reihenfolge\");' ' letzte = eintrag.zeit;' ' });' > pruefe-pm.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Prüfer schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' ' ereignisse.forEach(function (e) {' ' if (pm.zeitleiste.some(function (z) { return z.code === e.code; }) === false) zeitleiste.push(\"fehlt:\" + e.code);' ' });' >> pruefe-pm.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Prüfer schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' ' pm.massnahmen.forEach(function (m, i) {' ' if (m.verantwortlich.trim() === \"\") massnahmen.push(i + \":ohne_verantwortliche\");' ' if (m.pruefung.trim() === \"\") massnahmen.push(i + \":ohne_pruefung\");' ' else if (hatZiffer(m.pruefung) === false) massnahmen.push(i + \":ohne_zahl\");' ' if (m.tage > MAX_TAGE) massnahmen.push(i + \":zu_spaet\");' ' });' ' console.log(\"Zeitleiste:\", zeitleiste.join(\" \"));' ' console.log(\"Maßnahmen:\", massnahmen.join(\" \"));' ' const summe = zeitleiste.length + massnahmen.length;' ' console.log(\"Probleme:\", summe);' ' console.log(summe === 0 ? \"Das Post-mortem ist bereit.\" : \"Das Post-mortem ist nicht bereit.\");' '}' 'module.exports = { ausfuehren };' 'if (require.main === module) ausfuehren();' >> pruefe-pm.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Entwurf prüfen
docker exec -w /home/node/project agent node pruefe-pm.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was der Prüfer ausgibt
| Zeile | Was sie sagt |
|---|---|
| Zeitleiste | 2:falsche_zeit fehlt:versuche_begrenzt |
| Maßnahmen | 1:ohne_pruefung 2:ohne_verantwortliche 2:zu_spaet |
| Probleme | 5 |
| Letzte Zeile | Das Post-mortem ist nicht bereit. |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Korrektur schreiben
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const pm = JSON.parse(fs.readFileSync(\"postmortem.json\", \"utf8\"));' 'pm.zeitleiste[2].zeit = \"12:20\"; // das Protokoll sagt 12:20' 'pm.zeitleiste.splice(3, 0, { zeit: \"12:35\", code: \"versuche_begrenzt\" });' 'pm.massnahmen[1].was = \"Jedes Blatt vor der Veröffentlichung gegen die 40-Wörter-Prüfung testen\";' 'pm.massnahmen[1].pruefung = \"Jeder Fall der Auswertung besteht die 40-Wörter-Prüfung, bevor ein Blatt erscheint\";' 'pm.massnahmen[2].verantwortlich = \"Sabine\";' 'pm.massnahmen[2].tage = 14;' 'fs.writeFileSync(\"postmortem.json\", JSON.stringify(pm, null, 1));' 'require(\"./pruefe-pm\").ausfuehren();' > behebe-pm.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Entwurf beheben und neu prüfen
docker exec -w /home/node/project agent node behebe-pm.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.