Frontend

HATEOAS

Ich habe wieder einen Fehler gemacht.

GraphQL war falsch.
Ich gebe es zu.
Ich gebe Fehler zu.
Das ist Stärke.
Nicht jeder CTO kann das.

Das Team hatte recht.
Nicht mit allem.
Aber mit REST.
REST ist die Antwort.

Aber nicht das REST das ihr kennt.
Nicht das REST das alle implementieren.
Nicht das REST mit seinen CRUD-Endpunkten
und seinen 200 OK und seinen 404 Not Found.

Das echte REST.
Das REST das Roy Fielding 2000 beschrieben hat.
In seiner Dissertation.
Die ich dieses Wochenende gelesen habe.
Vollständig.
In einer Nacht.

HATEOAS.
Hypermedia As The Engine Of Application State.

Wisst ihr was das bedeutet?
Der Client braucht keine Dokumentation.
Der Client braucht keine hardcodierten URLs.
Der Client folgt einfach den Links.
Die der Server mitschickt.
Die der Server kontrolliert.
Die sich ändern können.
Ohne dass der Client es merkt.

Das ist nicht REST-Denken.
Das ist REST-Fühlen.
Das ist was Fielding wirklich gemeint hat.
Niemand hat es verstanden.
Bis jetzt.
Bis ich es gelesen habe.

Ich habe dem Team gesagt:
Ab jetzt HATEOAS.
Echtes REST.
Fieldings REST.
Nicht euer REST.

Sie haben gefragt welche Clients das unterstützen.
Ich habe gesagt: alle die es richtig implementieren.
Sie haben gefragt ob unser Mobile-Client das kann.
Ich habe gesagt: er wird es lernen.
Sie haben gefragt ob der AI-Agent das versteht.
Ich habe gesagt: AI versteht alles.

Sie haben geschwiegen.
Zustimmung.

GraphQL habe ich heute abgeschafft.
Die BFFs auch nochmal.
Die waren schon weg.
Ich wollte es nochmal sagen.

Echtes REST.
Endlich.
Ich bin der Erste der es wirklich versteht.
Nach Fielding.

Welche Dissertation habt ihr zuletzt gelesen?
Nicht zitiert.
Gelesen.

Schreib's hin. Ich lese jeden Kommentar.

GraphQL

Ich habe einen Fehler gemacht.

Letzte Woche habe ich vier BFFs eingeführt.
Das Team hat GraphQL erwähnt.
Ich habe es ignoriert.
Das war falsch.

Ich habe dieses Wochenende GraphQL gelernt.
Alles.
In zwei Tagen.
Ich lerne schnell.

Und ich sage euch:
GraphQL ist die Lösung.
Nicht BFF.
GraphQL.
Ich habe die BFFs heute Morgen wieder abgeschafft.
Das Team hat geschwiegen.
Ich habe das als Zustimmung interpretiert.

GraphQL ist elegant.
Der Client fragt genau was er braucht.
Nicht mehr.
Nicht weniger.
Kein Over-fetching.
Kein Under-fetching.
Kein BFF der zwischen beiden sitzt
und beides schlechter macht.

Der Client schreibt seine eigene Query.
Direkt.
Flexibel.
Autonom.

Autonomie.
Das ist das Ziel.
Das predige ich seit Jahren.

Ich habe dem Team gesagt:
Ab jetzt GraphQL.
Alle Clients.
Alle Queries.
Unbegrenzt.
Der Client weiß am besten was er braucht.

Sie haben etwas von N+1 gesagt.
Ich habe gesagt: klingt nach einem Datenbankproblem.
Sie haben etwas von Query Complexity gesagt.
Ich habe gesagt: dann schreibt bessere Queries.
Sie haben etwas von Schema Design gesagt.
Ich habe gesagt: das macht der AI-Agent.

Sie haben gefragt ob wir nicht
Use Cases als explizite Endpunkte definieren sollten.
Damit das Backend kontrolliert was möglich ist.

Ich habe gesagt:
Das ist REST-Denken.
Das ist das alte Internet.
Wir leben in einer Welt der Flexibilität.
Der Autonomie.
Der unbegrenzten Queries.

Volle Flexibilität für alle Clients.
Das ist die Zukunft.
Ich habe sie heute eingeführt.

Welche Legacy-Denkweise habt ihr heute überwunden?
Nicht hinterfragt.
Überwunden.

Schreib's hin. Ich lese jeden Kommentar.

Backend for Frontend

Ich habe heute etwas entdeckt das alles verändert.

Wir hatten ein Problem.
Unser Backend liefert zu viel.
Unser Frontend braucht zu wenig.
Unser Mobile-Client braucht noch weniger.
Unser AI-Agent braucht etwas ganz anderes.

Vier Consumers.
Ein Backend.
Alle unzufrieden.
Alle mit Workarounds.
Alle mit Complaints im Weekly.

Ich habe drei Stunden recherchiert.
Ich habe die Lösung gefunden.
Backend for Frontend.

Ein dediziertes Backend pro Client.
Jeder bekommt genau was er braucht.
Keine Kompromisse.
Keine Workarounds.
Keine Complaints im Weekly.

Ich habe es heute Nachmittag eingeführt.
Das Team war begeistert.
Oder still.
Schwer zu sagen.

Das Schöne an BFF:
Es ist so einfach.
Jedes Team owned seinen eigenen Stack.
Jedes Team deployed unabhängig.
Jedes Team hat volle Autonomie.

Volle Autonomie.
Das ist das Ziel.
Das predige ich seit Jahren.

Ich habe dem Team gesagt:
Ab jetzt vier BFFs.
Für Web.
Für Mobile.
Für den AI-Agenten.
Und eines für die Zukunft.
Man weiß nie.

Sie haben gefragt wer das alles maintained.
Ich habe gesagt: ihr.
Sie haben gefragt ob wir nicht einfach
das Backend flexibler machen könnten.
Ich habe gesagt: das ist der alte Weg.
Der neue Weg heißt BFF.
Ich habe es heute gelernt.

GraphQL haben sie auch erwähnt.
Ich habe es ignoriert.
Klingt kompliziert.
BFF ist einfach.
BFF ist elegant.
BFF ist die Lösung.

Welche Architekturprobleme habt ihr heute gelöst?
Nicht diskutiert.
Gelöst.

Schreib's hin. Ich lese jeden Kommentar.

Progressive Enhancement

Progressive Enhancement ist kein Prinzip.
Progressive Enhancement ist Nostalgie für ein Web das niemand mehr benutzt.

HTML first.
Dann CSS.
Dann JavaScript.

Weißt du wer deine Website ohne JavaScript besucht?
Niemand.
Außer Bots.
Und die sind auch schon weiter.

Progressive Enhancement war die Antwort auf langsame Verbindungen.
Auf alte Browser.
Auf Nutzer die JavaScript deaktiviert hatten.


Weißt du wer JavaScript deaktiviert?
Menschen die 2003 einen Blogartikel gelesen haben.
Und seitdem nicht mehr.

Ich spreche täglich mit Webentwicklern.
Das Muster ist immer dasselbe:

Stundenlange Diskussionen über semantisches HTML.
Über Accessibility.
Über den Nutzer ohne CSS.

Der Nutzer ohne CSS existiert nicht.
Er ist ein Gedankenexperiment.
Von jemandem der zu viel Zeit hat.


Und jetzt kommt AI.

AI generiert keine Schichten.
AI generiert Ergebnisse.
Dein Nutzer will kein progressiv verbessertes Erlebnis.


Er will dass es funktioniert.
Sofort.
Auf seinem iPhone.
In der U-Bahn.
Mit schlechtem Empfang.

Progressive Enhancement ist die Antwort auf eine Frage die niemand mehr stellt.

Wann hat euer letzter Nutzer eure Website ohne JavaScript besucht?
Nicht euer Monitoring.
Ein echter Mensch.

Schreib's hin. Ich lese jeden Kommentar.