Jahresrückblick 2022: mehr Struktur, weniger Bastelei
Monorepo, Mehrsprachigkeit, eine Domain, discord.js v14 und ein abgebrochener Framework-Umbau. Das Jahr, in dem aus einer Sammlung von Projekten ein System wurde.
991 Wörter · 5 Min. Lesezeit
- rueckblick
- jahr
Wenn 2021 das Jahr der Oberflächen war, dann war 2022 das Jahr der Struktur. Nichts, was ich dieses Jahr gebaut habe, war für Nutzer besonders sichtbar. Fast alles hat die Arbeit danach leichter gemacht.
Was passiert ist
Monorepo. Bot, Dashboard und geteilte Pakete in einem Repository. Ausgelöst durch einen Fehler, bei dem zwei Kopien derselben Formel unterschiedliche Ergebnisse lieferten.
Mehrsprachigkeit. Über hundert Befehle von fest eingebauten Texten auf Übersetzungsschlüssel umgestellt. Deutsch und Englisch. Deutlich mehr Arbeit als erwartet, vor allem beim Finden der letzten Reste.
Eine Domain und ein Name. Das Projekt heißt seit März Yurna. Damit kamen Impressum, Datenschutzerklärung und die Frage, welche Daten eigentlich gespeichert werden — die Liste zusammenzustellen war lehrreicher als das rechtliche Dokument.
discord.js v14. Früh umgestiegen, drei Wochen statt eines Wochenendes gebraucht, und dabei nebenbei zwei unvollständige Rechteprüfungen gefunden.
Der abgebrochene App-Router-Umbau. Zwei Wochen investiert, dann geparkt. Rückblickend die beste Entscheidung des Jahres, auch wenn sie sich damals nach Aufgeben angefühlt hat.
Logging. Von verstreuten Ausgaben zu strukturierten Zeilen mit Grad, Bereich, Feldern und einer Vorgangskennung. Die Fehlersuche hat sich dadurch halbiert.
Die Lektionen
Doppelter Code ist keine Frage des Stils. Zwei Kopien einer Formel sind zwei Wahrheiten. Bevor man etwas zusammenführt, lohnt die Frage: Sind das zufällig zwei ähnliche Dinge oder ein Ding an zwei Orten? Nur beim zweiten Fall ist Zusammenführen richtig.
Eigenschaften kann man nicht nachrüsten wie Features. Mehrsprachigkeit betrifft jede Stelle, an der Text entsteht. Dasselbe gilt für Nachvollziehbarkeit, Rechteprüfung und Fehlerbehandlung. Solche Dinge nachträglich einzuziehen kostet ein Vielfaches.
Abbrechen ist eine Fähigkeit. Der Framework-Umbau war interessant und hat kein Problem gelöst, das ich hatte. Die drei Fragen, die ich mir seitdem stelle — welches Problem, was passiert bei Aufschub, wie komme ich zurück — haben mir dieses Jahr zwei Wochen und später mehr gespart.
Wer betreibt, schreibt für sein zukünftiges Ich. Protokolle, Dokumentation, Kommentare. Die Zielgruppe ist nicht der Kollege, sondern man selbst in sechs Monaten ohne Erinnerung.
Was offen geblieben ist
Die Dokumentation. Dritter Rückblick in Folge, in dem dieser Punkt steht. Es gibt inzwischen eine Installationsanleitung und eine Konfigurationsreferenz — das ist mehr als vorher. Was fehlt, ist alles, was mit Entscheidungen zu tun hat: Warum ist etwas so gebaut? Was habe ich probiert und verworfen? Diese Fragen beantworte ich mir alle paar Monate neu, weil ich die Antworten nirgends notiert habe.
Die Datenbankfrage. Ich weiß seit dem Herbst, dass Postgres für diese Last überdimensioniert ist. Geändert habe ich nichts, weil der Nutzen bloß Aufräumen gewesen wäre. Die Entscheidung steht weiter aus.
Der App Router. Aufgeschoben, nicht aufgehoben.
Was ich für 2023 sehe
Der Bot hat inzwischen deutlich über hundert Befehle. Ich merke, dass ich anfange, Features zu bauen, weil sie technisch interessant sind, und nicht, weil jemand sie braucht. Für 2023 nehme ich mir vor, genauer hinzusehen, was tatsächlich benutzt wird — und den Mut zu haben, den Rest zu entfernen.
Außerdem will ich mich mit Geld beschäftigen. Nicht als Selbstzweck, sondern weil ein Projekt, das dauerhaft Serverkosten verursacht und Zeit frisst, irgendwann eine Antwort auf die Frage braucht, wie es sich trägt.
Die Arbeit, die man nicht sieht
Beim Durchgehen des Jahres ist mir aufgefallen, dass praktisch keine der großen Änderungen für Nutzer sichtbar war. Kein neuer Befehl, keine neue Ansicht, keine neue Funktion von Bedeutung.
Was es gab: eine zusammengeführte Codebasis, eine zweite Sprache, eine Bibliotheksmigration, ein aufgeräumtes Protokollsystem, eine Domain.
Das ist eine unangenehme Bilanz für jemanden, der gerne baut — und rückblickend das produktivste Jahr bis dahin. Jede dieser Änderungen hat die folgenden Jahre billiger gemacht:
- Das Monorepo hat verhindert, dass Formeln auseinanderlaufen.
- Die Mehrsprachigkeit hat die Texte vereinheitlicht.
- Die Migration hat zwei unvollständige Rechteprüfungen aufgedeckt.
- Das Protokollsystem hat die Fehlersuche halbiert.
Der Wert solcher Arbeit lässt sich nur rückblickend beziffern, und das ist der Grund, warum sie so oft unterbleibt.
Was ich mir für die Bewertung angewöhnt habe
Um nicht in die Falle zu laufen, ausschließlich Unsichtbares zu bauen, benutze ich seitdem eine grobe Aufteilung meiner Zeit über das Jahr.
Ungefähr die Hälfte für Sichtbares — Funktionen, Verbesserungen, Dinge, die jemand bemerkt. Ungefähr ein Viertel für Unterbau — Struktur, Werkzeuge, Umbauten. Ungefähr ein Viertel für Betrieb und Reparatur — das, was ohnehin anfällt.
Die Zahlen sind nicht heilig. Ihr Zweck ist, am Jahresende eine Frage beantworten zu können: Habe ich mich in einer der drei Kategorien verloren?
2022 lag ich bei ungefähr zwanzig zu fünfzig zu dreißig. Das war einmal richtig und wäre zweimal hintereinander ein Warnzeichen gewesen — ein Projekt, an dem man nur noch Fundament gießt, verliert die Leute, für die es gedacht war.
Was ich mir aus diesem Jahr gemerkt habe
Ein Satz fasst dieses Jahr für mich zusammen, und ich habe ihn mir seitdem oft gesagt:
Zwei Wahrheiten über dieselbe Sache sind der teuerste Zustand, den ein System haben kann.
Er ist mir 2022 in vier Verkleidungen begegnet: zwei Kopien einer Formel, zwei Schemabeschreibungen, zwei Rechtesysteme, zwei Sätze Texte für dieselben Meldungen.
Jedes Mal war der Aufwand für die Zusammenführung beträchtlich, und jedes Mal war der Zustand vorher „funktioniert eigentlich". Genau darin liegt die Tücke: Zwei Wahrheiten sind selten sofort kaputt. Sie laufen langsam auseinander, und der Schaden zeigt sich an einer Stelle, die mit der Ursache nichts zu tun zu haben scheint.
Was ich daraus als Prüfung mitgenommen habe: Wenn ich irgendwo etwas ändere und mich dabei frage, ob es woanders auch geändert werden muss — dann ist genau das der Moment, an dem eine Zusammenführung fällig ist. Diese Frage ist das zuverlässigste Signal, das ich kenne.
Zum Schluss
Das ehrlichste Fazit dieses Jahres: Ich habe zwölf Monate lang fast ausschließlich an Dingen gearbeitet, die man nicht sieht — und das Projekt ist dadurch deutlich besser geworden.
Für jemanden, der aus dem Basteln kommt, ist das eine ungewohnte Erfahrung. Beim Basteln ist der Fortschritt immer sichtbar. Beim Bauen von Systemen sind die guten Monate oft die, in denen sich nichts geändert zu haben scheint.