Der Hack, der erwachsen werden wollte.
Vor ein paar Tagen habe ich hier aufgeschrieben, warum ich kein Headless-CMS brauche. Kurzfassung: Die meisten Leute kaufen sich mit moderner Architektur ein Problem, das sie gar nicht haben. Ein gut abgestimmtes WordPress liefert in 0,13 Sekunden aus. Der Rest ist Mode.
Ein paar Tage später habe ich ein eigenes Plugin für genau dieses WordPress gebaut. Das ich, streng genommen, auch nicht brauche.
Das ist kein Widerspruch, den ich verstecke. Es ist der Grund für diesen Text.
Zwei Spielereien
Auf meiner Startseite gibt es zwei kleine Dinge, die niemand vermissen würde. Ein Zitat, das im Kopf der Seite rotiert. Und einen Filter, mit dem man die Beiträge nach Stimmung sortieren kann – laut, leise, nerdig. Nichts Weltbewegendes. Zwei Handvoll JavaScript.
Interessant ist nicht, was sie tun. Interessant ist, wie sie über die Monate zusammengehalten wurden.
Die Archäologie eines Provisoriums
Am Anfang war es ein Schnipsel. Ich habe das JavaScript direkt in ein Snippet-Plugin geklebt. Funktionierte sofort. Der Haken: Jede Änderung musste ich von Hand in den Admin-Bereich kopieren, weil das Ding seinen eigenen Cache hatte. Kleine Korrektur, großes Ritual.
Also habe ich das JavaScript in externe Dateien ausgelagert und per FTP hochgeladen. Damit war das Kopier-Ritual weg. Dafür hielt der Server die Dateien einen Monat lang für unveränderlich – und ich musste eine zweite Regel schreiben, die dem Server diesen Cache wieder verbot. Ein Trick, um einen Trick auszuhebeln.
Dann die Stimmung. Die stand als Liste von Beitrags-Nummern fest im Code. Jeder neue Artikel bedeutete: Code aufmachen, Nummer eintragen. Also habe ich die Stimmung in ein WordPress-Schlagwort verlegt – ein Etikett, das für etwas ganz anderes gedacht ist, hier aber als Datenkanal herhalten musste.
Das Ergebnis: zwei kleine Features, zusammengehalten von einer frei schwebenden Datei, einer Cache-Ausnahme und einer zweckentfremdeten Kategorie. Es funktionierte tadellos. Es war auch ein Jenga-Turm.
Der Einwand
An diesem Punkt habe ich die KI, mit der ich das gebaut habe, gefragt, ob wir daraus ein richtiges Plugin machen. Die Antwort war, sinngemäß, ungewöhnlich unbestechlich für ein Werkzeug: Das Problem ist gerade gelöst. Es läuft. Willst Du das wirklich?
Guter Einwand. Ich habe trotzdem ja gesagt.
Und weil ich mich selbst nicht gern beim Schummeln erwische, ist die spannende Frage nicht, ob ich es gebaut habe. Sondern, ob ich einen ehrlichen Grund dafür hatte.
Wann ein Hack erwachsen werden darf
Ein Provisorium verdient es, echte Infrastruktur zu werden, wenn Du anfängst, mehr Gerüst zu pflegen als Gebäude. Wenn die Tricks, die das Ding zusammenhalten, zahlreicher werden als das Ding selbst.
Bei mir war es so weit. Eine externe Datei, eine Cache-Ausnahme, ein missbrauchtes Etikett – für zwei Handvoll JavaScript. Das Verhältnis stimmte nicht mehr.
Das Plugin hat den Stapel aufgelöst. Das Cache-Problem löst WordPress jetzt von selbst, sauber, ohne Ausnahmeregel. Aus dem zweckentfremdeten Schlagwort wurde eine echte, eigene Kategorie mit einem simplen Schalter im Editor. Aus verstreuten Dateien wurde ein Ordner. Kein Trick mehr, nur noch die Sache.
Das ist die eine Hälfte der Wahrheit.
Die andere: Ich hätte es genauso gut lassen können. Es lief ja. Ein Teil von mir hat das Plugin gebaut, weil es sich gut anfühlt, wenn etwas aufgeräumt ist. Weil Handwerk Freude macht, auch wenn niemand danach gefragt hat.
Und hier schließt sich der Kreis
Over-Engineering ist nicht das Bauen. Es ist die Lüge über das Warum.
Wer sich ein Headless-CMS hinstellt, weil es modern klingt, und sich dann einredet, er brauche es – der betrügt sich selbst. Nicht, weil die Technik schlecht wäre, sondern weil der Grund erfunden ist. Genauso hätte ich mir einreden können, mein Blog brauche dieses Plugin unbedingt. Tut er nicht. Der einzige Unterschied ist: Ich sage es.
Die ehrliche Grenze verläuft nicht zwischen „bauen“ und „nicht bauen“. Sie verläuft zwischen „ich weiß, warum“ und „ich tue nur so“.
Die Regel, nach diesem Wochenende
Bau das saubere Ding, wenn die Tricks anfangen zu gewinnen. Oder bau es, weil Dir das Handwerk Freude macht. Beides ist erlaubt.
Nur eines nicht: Dir selbst erzählen, es sei das eine gewesen, wenn es das andere war.
Das Plugin läuft jetzt. Der Filter filtert, das Zitat rotiert, und unter der Haube ist zum ersten Mal ehrlich aufgeräumt. War das ein guter Grund, es zu bauen? Nein. War es ein ehrlicher? Ja.
Und manchmal ist genau das der Unterschied, auf den es ankommt.