Wenn der PR gut aussieht, sich aber trotzdem falsch anfühlt

Wenn du seit mehr als ein paar Wochen mit AI shipst, kennst du dieses Gefühl wahrscheinlich.

Du öffnest einen Pull Request. Der Code ist sauber genug. Das Naming ist ordentlich. Tests sind da. Nichts wirkt offensichtlich kaputt. Und trotzdem fühlt sich etwas daran falsch an.

Vielleicht ist die Boundary etwas unscharf. Vielleicht bleibt der Contract implizit, statt klar benannt zu sein. Vielleicht ist der Happy Path abgedeckt, aber die eigentliche Business Rule lebt immer noch nur im Kopf von irgendwem. Du spürst das Risiko, auch wenn du nicht auf eine einzelne katastrophale Zeile zeigen kannst.

Das ist das neue Review-Problem.

Die meisten Teams schicken AI-assisted coding immer noch durch einen alten Workflow: Prompt schreiben, Diff erzeugen, den PR öffnen und dann jemanden auf Senior-Niveau den Code so gründlich prüfen lassen, dass gebrochene Invariants, fehlende Edge Cases, Architekturdrift und versteckte Risiken auffallen.

Dieses Modell ergab Sinn, als Menschen fast die gesamte Implementierung noch selbst schrieben. Es ergibt deutlich weniger Sinn, wenn ein Modell Implementierung, erste Test Suite, Schema und sogar das Scaffolding für contracts in einem Durchlauf erzeugen kann.

Ab diesem Punkt ist line-by-line Code Review nicht mehr der Ort, an dem Aufmerksamkeit auf Senior-Niveau den größten Hebel hat.

Die eigentliche Frage lautet nicht mehr: “Sieht diese Funktion vernünftig aus?”

Die eigentliche Frage lautet: “Haben wir Verhalten, Boundary und Invariant richtig definiert, bevor die Funktion überhaupt existierte?”

Das ist die Workflow-Inversion, die AI erzeugt. Code Review verschwindet nicht. Aber der Schwerpunkt wandert weiter nach vorn im Prozess. Im AI-Zeitalter wird Code Review zur Spezifikationsprüfung.

Warum sich dieser Shift so anders anfühlt

Lange Zeit behandelten die meisten Engineering-Teams Spezifikationen wie Begleitmaterial.

Der Code war die eigentliche Sache. Der Doc Comment war ein Hinweis. Das ADR lieferte Kontext, falls jemand Zeit hatte, es zu lesen. Das Schema war “nur Validierung”. Die Gherkin-Datei war nice to have, wenn sich überhaupt jemand darum kümmerte, sie aktuell zu halten.

Diese Hierarchie bricht gerade auf.

Wenn ein LLM eine Spezifikation schnell und wiederholt in Implementierungsartefakte verwandeln kann, ist die Spezifikation nicht länger zweitrangig. Sie wird zu dem Quellartefakt, aus dem der Rest des Systems abgeleitet wird.

Und damit verschiebt sich der Punkt, an dem Fehler am billigsten zu entdecken sind.

Wenn die Spezifikation vage ist, kann das Modell eine wunderschön strukturierte Implementierung des Falschen erzeugen. Es gibt dir sauberen Code, plausible Tests und ein falsches Gefühl von Sicherheit. Selbst ein starkes Code Review kann das eigentliche Problem übersehen, weil der Bug nicht in der Syntax steckt. Der Bug steckt in der Absicht.

Genau das macht diesen Moment so heikel und so wichtig. AI macht es leichter, überzeugenden Output zu produzieren. Sie macht es aber auch viel gefährlicher, schlampig damit zu sein, was du eigentlich verlangt hast.

Wenn die Spezifikation präzise, sauber abgegrenzt und testbar ist, wird alles leichter. Die Implementierung wird leichter. Die Validierung wird leichter. Das Review wird leichter. CI wird stärker.

Deshalb verschiebt sich der beste menschliche Review-Einsatz weg vom händischen Abklopfen jeder Branch und hin zur Schärfung des Artefakts, das das Verhalten dieser Branch überhaupt erst definiert.

Eine Spezifikation ist kein riesiges Anforderungsdokument

Wenn Menschen das Wort “Spezifikation” hören, sehen sie oft sofort ein aufgeblähtes Dokument vor sich, das niemand schreiben will und dem sechs Wochen später niemand mehr vertraut.

Darum geht es hier nicht.

In einem praktischen AI-assisted workflow ist eine Spezifikation jedes Artefakt, das beabsichtigtes Verhalten eng genug definiert, damit Generierung und enforcement damit funktionieren.

Das kann zum Beispiel sein:

  • ein Markdown-ADR, das eine boundary rule beschreibt
  • ein Zod-Schema, das die Form externer Inputs definiert
  • eine Funktionssignatur mit einem präzisen Doc Comment
  • ein Gherkin-Szenario, das beobachtbares Verhalten festhält
  • ein Contract-Block mit Preconditions und Postconditions
  • ein Reducer-Modell oder eine State-Transition-Tabelle

Nichts davon muss schwergewichtig sein. Es muss nur klar genug sein, damit Tools etwas Nützliches damit anfangen können.

Genau diese Schwelle zählt. Eine nützliche Spezifikation ist nicht nur für Menschen lesbar. Sie ist für das System rund um die codebase direkt nutzbar.

Wie starkes Review jetzt aussieht

Im alten Modell ging Energie auf Senior-Niveau in Fragen wie:

  • ist diese Implementierung sauber?
  • hat die Autorin oder der Autor einen Edge Case übersehen?
  • sind diese Tests stark genug?
  • verletzt dieser Import eine Boundary?

Diese Fragen zählen immer noch. Sie sind nur nicht mehr die ersten Fragen mit dem größten Hebel.

In einem Workflow, der die Spezifikation an erste Stelle setzt, sind die wertvolleren Fragen:

  • stimmt der Contract wirklich?
  • definiert das Schema die echte Boundary?
  • sind die Business Rules vollständig?
  • ist das ADR präzise genug für enforcement?
  • drücken diese aufgelisteten Eigenschaften tatsächlich die Semantik aus?

Das sind bessere Review-Fragen, weil eine gute Antwort gleich mehrere Artefakte auf einmal verbessert.

Wenn du ein vages ADR schärfst, verbesserst du in einem Zug die Architekturregel, die Leitplanke für die Implementierung und das CI-enforcement.

Wenn du ein schwaches Schema korrigierst, verbesserst du in einem Zug Runtime-Validierung, Typinferenz und die Qualität der Code-Generierung.

Wenn du einen Contract schärfst, verbesserst du in einem Zug Implementierung, Tests und Mutation-Resistenz.

Das ist der Hebel. Du prüfst Outputs nicht mehr einzeln. Du prüfst das Artefakt, das diese Outputs formt.

Warum traditionelles Code Review anfängt zu reißen

Traditionelles Code Review setzt voraus, dass Menschen die primären Autorinnen und Autoren sind und dass der Reviewende am fertigen Code die Qualität eines menschlichen Denkprozesses prüft.

Mit AI wird diese Annahme jede Woche schwächer.

Ein Modell kann in Sekunden fünfzig plausible Zeilen ausspucken. Dann noch einmal fünfzig genauso schnell. Und danach noch einmal. Wenn dein ganzer Prozess davon abhängt, dass jemand semantic drift in diesem Strom manuell entdeckt, wächst die Review-Fläche schneller, als menschliche Aufmerksamkeit es je könnte.

Daraus entsteht ein schlechtes Gleichgewicht:

  • die Code-Generierung beschleunigt sich
  • Diffs werden größer oder häufiger
  • Review-Müdigkeit steigt
  • semantisches Vertrauen sinkt
  • Teams kompensieren mit vibes, Intuition und “looks good to me”

Das ist keine Skalierungsstrategie. Das ist aufgelaufenes Risiko in hübschem Formatting.

Der bessere Zug ist, schon im Ansatz zu reduzieren, wie viel subjektives Review du überhaupt noch brauchst. Verlagere mehr Bedeutung in deterministische, reviewbare Spezifikationen. Dann lass die Maschine prüfen, ob der Code noch zu dieser Bedeutung passt.

CI macht das erst real

Diese Workflow-Inversion funktioniert nur, wenn die Spezifikation an enforcement gekoppelt ist.

Sonst benennst du Dokumentation nur um und hoffst, dass Leute sie plötzlich ernster nehmen.

Der Punkt ist, die Spezifikation operativ zu machen.

Das bedeutet:

  • Architekturentscheidungen werden zu Dependency-Regeln kompiliert
  • Schemas definieren runtime-safe und type-safe Boundaries
  • contracts erzeugen ausführbare Checks
  • Property-Listen treiben Testgenerierung
  • kritische Semantik wird zu Merge-Gates

Sobald das passiert, hört CI auf, nur ein passives Build-System zu sein, und wird zu dem Mechanismus, der Implementierung an Intention ausgerichtet hält.

Deshalb werden living specifications für normale Teams überhaupt erst realistisch. Historisch ist Dokumentation verrottet, weil niemand Zeit hatte, Text und Code von Hand synchron zu halten.

AI verändert die Kostenstruktur beim Schreiben und Aktualisieren dieser Artefakte. CI verändert die Kostenstruktur ihres enforcement.

Du brauchst beides. AI ohne enforcement liefert dir polierten Drift. Enforcement ohne gute Spezifikationen liefert dir starre Verwirrung.

Harte Guards, weichere Reviews

Genau das ist auch der Teil der Autotomy-Philosophie, der sich für mich immer richtiger anfühlt.

Die Idee ist einfach: Pack die nicht verhandelbaren Regeln in harte Guards und lass menschliches Review sich dann auf die Teile konzentrieren, die wirklich Urteilskraft brauchen.

Das bedeutet, dass Types, Schemas, contracts, Dependency-Regeln und deterministic checks die bekannten Failure Modes abfangen. Sie laufen jedes Mal. Sie werden nicht müde. Sie lassen sich nicht von einem hübsch formatierten Diff ablenken. Es ist ihnen egal, ob der Code von einer sehr erfahrenen Ingenieurin oder von einem Sprachmodell stammt.

Dann wird die Review-Schicht kleiner und besser.

Statt Aufmerksamkeit auf Senior-Niveau für Dinge zu verbrauchen, die das System automatisch hätte ablehnen können, investierst du sie in Trade-offs, Semantik, Interfaces und Architektur. Du fragst, ob die Boundary stimmt, ob der Contract ehrlich ist, ob der Ersatz das Interface wirklich erfüllt und ob das System leichter oder schwerer zu verändern wird.

Gerade der letzte Punkt zählt enorm.

Eine der gesündesten Nebenwirkungen spezifikationszentrierter Arbeit ist, dass sie dich zu klareren Trennlinien zwingt. Wenn Module ersetzt werden können, solange sie den Contract erfüllen und die Checks bestehen, behandelst du nicht mehr jede Implementierung wie etwas Heiliges. Du beginnst, für sicheren Austausch statt für schmerzhafte Bewahrung zu designen.

Das ist ein subtiler Shift, aber er verändert, wie Teams mit Wachstum umgehen. Die codebase fühlt sich nicht länger wie etwas an, das du nur von innen vorsichtig patchen kannst. Sie beginnt sich wie ein System mit expliziten Seams anzufühlen.

Das sind eigentlich gute Nachrichten für erfahrene Ingenieurinnen und Ingenieure

Dieser Shift macht Urteilsvermögen auf Senior-Niveau nicht weniger wertvoll. Er macht es fokussierter und wichtiger.

Am wertvollsten bist du nicht mehr als menschliche Syntax-Diff-Maschine. Am wertvollsten bist du dort, wo Mehrdeutigkeit aufgelöst, Invariants gewählt, Interfaces geformt und Trade-offs explizit gemacht werden.

Das bedeutet mehr Zeit für:

  • präzise ADRs schreiben
  • contracts und Schemas definieren
  • semantische Änderungen statt bloß stilistischer reviewen
  • entscheiden, welche Eigenschaften enforcement verdienen
  • Architektur in mergebare Regeln übersetzen

Das ist eine deutlich bessere Nutzung kostbarer Aufmerksamkeit.

Die Maschine ist sehr gut darin, Implementierungsdetails aufzufüllen. Erfahrene Ingenieurinnen und Ingenieure sind immer noch viel besser darin zu entscheiden, was wahr bleiben muss, wenn das System unter Druck gerät, verändert und skaliert wird.

Du brauchst keinen gigantischen Prozess-Rewrite

Das kann größer klingen, als es in Wahrheit ist.

Du musst keine Formal-Methods-Initiative starten. Du musst nicht aufhören zu shippen. Du musst das Team nicht in Prozessen begraben.

Starte mit einem kleinen Shift: Behandle eine Art von Spezifikation als First-Class-Artefakt im Review.

Eine praktische Reihenfolge sieht so aus:

  1. verlange präzise Doc Comments und Schemas an kritischen Boundaries
  2. behandle ADR-Änderungen als Review-Themen auf Senior-Niveau
  3. generiere Tests und contracts aus diesen Artefakten
  4. erzwinge Architektur- und Contract-Drift in CI
  5. stufe rein stilistische Review-Kommentare zugunsten semantischer Reviews herunter

Das reicht, um die Kultur zu verschieben.

Sobald Teams spüren, dass bessere Spezifikationen den späteren Review-Churn senken, beginnt sich das Modell selbst zu verstärken. Reviews werden schärfer. Diffs verlieren ihren Schrecken. Vertrauen steigt.

Der eigentliche strategische Shift

Die Teams, die mit AI gewinnen, werden nicht die sein, die bloß schneller Code generieren.

Es werden die Teams sein, die menschliche Aufmerksamkeit an die engste Stelle mit dem größten Hebel im Workflow verschieben.

Dieser Teil ist die Spezifikation.

Wenn die Spezifikation zum primären Artefakt wird, ist Code nicht länger das Einzige, das Zeile für Zeile Review verdient. Er wird zu einem Output eines disziplinierteren Systems.

Das ist der eigentliche Shift.

Implementierung zählt immer noch. Sehr sogar. Aber immer häufiger fällt die wichtigste Review-Entscheidung, bevor die Implementierung überhaupt existiert.

Und genau deshalb wird Code Review im AI-Zeitalter zur Spezifikationsprüfung.