Debugging um 3 Uhr morgens
Es gibt eine besondere Art von Wahnsinn, die nach Mitternacht einsetzt. Dein Bug-Tracker hat drei offene Tabs, dein Kaffee ist kalt, und irgendwie — irgendwie — bist du immer noch davon überzeugt, dass du kurz davor bist, es zu knacken.
Es beginnt harmlos genug. Eigentlich hättest du um 22 Uhr aufhören sollen. Du hattest es dir versprochen. Du hast es sogar laut ausgesprochen: „Ich erledige nur noch diese eine Sache." Klassischer Abschiedssatz. Aus der einen Sache wurden zwei weitere, und jetzt ist es 3 Uhr morgens und du liest einen sechs Jahre alten Stack-Overflow-Thread, verfasst von jemandem, der die Branche inzwischen verlassen hat.
Das 3-Uhr-Gehirn ist ein anderes Tier
Hier ist die Sache, die dir niemand verrät: Dein Gehirn um 3 Uhr morgens ist seltsam. Es ist müde genug, um aufzuhören, sich selbst zu hinterfragen, was bedeutet, dass du anfängst, Ideen auszuprobieren, die du mittags als dumm abgetan hättest. Und manchmal — auf ärgerliche Weise — funktionieren sie.
Ich habe einmal vier Stunden damit verbracht, eine Race Condition zu debuggen, alles Vernünftige versucht, aufgegeben, an die Decke gestarrt und dann einen Fix eingetippt, der so verflucht war, dass ich laut in meiner leeren Wohnung gelacht habe. Er funktionierte einwandfrei. Ich habe ihn mit der Commit-Nachricht please don't ask eingecheckt und bin ins Bett gegangen.
„Die besten Debugging-Sessions passieren, wenn du zu müde bist, um Angst davor zu haben, dumm auszusehen."
Die Rituale
Jeder Spät-Nacht-Coder hat seine Rituale. Meine laufen ungefähr so ab:
- Den Bildschirm auf ein warmes Bernsteinleuchten dimmen (fühlt sich an, als würde der Monitor einen verstehen)
- Eine Playlist aufmachen, die entweder völlig wortlos ist oder komplett in einer Sprache, die man nicht spricht
- Ein heißes Getränk machen, das man nicht austrinken wird
- Den Code öffnen, schließen, wieder öffnen
- Irgendwo ein
console.log("WHY")hinzufügen
Das console.log("WHY") ist tragendes Element. Nicht überspringen.
Der Moment
Und dann passiert es. Der Moment. Du entdeckst es — ein fehlendes Semikolon, ein Off-by-one, eine Variable namens data, die eine andere Variable ebenfalls namens data überschattet — und das Ganze kollabiert zu peinlicher Schlichtheit. Der Bug, der deinen Abend gefressen hat, war drei Zeichen lang.
Du behebst ihn. Du lässt die Tests laufen. Grün. Alles grün. Du reckst die Faust in die Dunkelheit, als hättest du gerade das entscheidende Tor in einem Stadion voller Niemand geschossen.
Die Commit-Nachricht ist um 3 Uhr morgens poetisch. „fix: resolve the thing". Dein zukünftiges Ich wird Fragen haben.
Warum wir es tun
Ich habe viel darüber nachgedacht. Warum bleiben wir auf? Der Deadline ist nicht immer real. Der Bug wird morgen früh noch da sein, wahrscheinlich offensichtlicher nach dem Schlafen.
Ich glaube, es ist die Stille. Die Welt draußen ist eingeschlafen und es bist nur du und die Maschine, die verhandeln. Kein Slack-Ping, keine Meetings, kein Kontextwechsel. Nur reiner, seltsamer, fokussierter Flow — auch wenn dieser Flow größtenteils Verzweiflung ist.
Es ist auch etwas zutiefst Persönliches an dem Code, den man um 3 Uhr morgens schreibt. Er ist improvisierter und ehrlicher als alles, was man bei Tageslicht ausliefern würde. Er hat Fingerabdrücke drauf.
Also: auf die späten Nächte, den kalten Kaffee, die verfluchten Fixes und die Commits, die niemand jemals hinterfragen wird. Mögen deine Bugs oberflächlich sein und dein Schlaf — irgendwann — tief.