Es gibt Momente, in denen man merkt, dass sich die Welt still und leise verschoben hat. Bei mir passierte das neulich nachts, mitten in einer Session für Prepaid-Hoster. Ich saß vor meinem Rechner, ließ eine KI eine Aufgabe erledigen und sah meinem Dev-Server dabei zu, wie er alle paar Sekunden neu lud. Und plötzlich war da ein Gefühl, das ich kannte. Nur nicht von mir selbst.

Strg + S als Triggerfinger

Früher, als ich noch hauptsächlich Webseiten programmiert habe, hatte ich immer Live-Upload aktiv. Strg + S war kein Shortcut, das war ein Reflex. Jede Zeile, jede Klammer, jeder Pixel: gespeichert, hochgeladen, live.

Auf der anderen Seite saß Moritz. Remote, auf der Dev-Seite, den Finger auf F5. Er hat meinen Änderungen buchstäblich beim Entstehen zugesehen. Und er war jedes Mal begeistert, wie schnell ich neue Sachen runtergerasselt habe. Vor allem aber, wie schnell es genau so aussah, wie wir es uns beide im Kopf vorgestellt hatten.

Für ihn war das Magie. Für mich war es einfach Arbeit und entspannt. Und trotzdem hat mich seine Begeisterung so gefreut und geehrt, dass sie hängen geblieben ist. Fast zehn Jahre später habe ich sie immer noch im Kopf.

Heute sitze ich auf dem anderen Stuhl

Heute bin ich der Typ mit dem F5-Gefühl. Als langjähriger Entwickler gebe ich Claude eine Aufgabe, lehne mich zurück und sehe zu, wie der Server im Live-Dev-Modus neu lädt. Wieder und wieder. Und jedes Mal denke ich: Woah. Genau so muss sich Moritz damals gefühlt haben.

Das ist der eigentliche Twist: Ich habe die Rolle gewechselt, ohne den Platz zu wechseln. Damals hatte ich die Idee im Kopf und habe sie in Code übersetzt. Moritz hatte nur die Idee und hat das Ergebnis erscheinen sehen. Heute habe ich vor allem die Idee. Die Übersetzung passiert woanders.

Die Chancen sind echt (und ich nutze sie)

Lass uns ehrlich sein: Ich bin kein KI-Skeptiker, der sich im Keller an der Ostsee verbarrikadiert. Im Gegenteil. Ich lasse aktuell sehr viel von der KI erledigen. Texte, Boilerplate, Recherche, Tooling. Dinge, die früher einen ganzen Abend gefressen hätten, sind heute in einer Stunde durch.

Und ich lerne dabei sogar Neues. Erst kürzlich habe ich beim Bau eines internen Tools für Vertragsdokumente eine Library kennengelernt, mit der man Unterschriften sauber in PDFs einsetzen kann. Hätte ich ohne den Sparringspartner vermutlich nicht so schnell gefunden.

Aber, und das ist der Punkt: Die Architekturentscheidung lag bei mir. Ich habe festgelegt, unter welchen Constraints das Feature eingebunden wird. Ein PDF kann ein Scan sein, OCR bringt dabei nichts, also verlassen wir uns gar nicht erst auf das Original-PDF. Die KI hat mir das Werkzeug gezeigt. Wie und wo es eingesetzt wird, habe ich entschieden.

Die Opportunities sind real. Wer das ignoriert, verliert. Punkt.

Die Meta-Ebene: Gute Prompts sind komprimierte Erfahrung

Aber genau hier fängt das Nachdenken an. Denn eine KI schreibt per Default den Mittelwert. Den Code, den die meisten schreiben würden. Und ohne spezifische Vorgaben erkennt man das inzwischen sofort. Im Code genauso wie in Designs oder Flyern (fangen wir mit dem Thema lieber gar nicht erst an). Was meinen Code von Defaultcode unterscheidet, sind die Abweichungen: die eine Stelle, an der ich weiß, dass ein Hypervisor bei Timeouts Mist baut. Oder warum Firewall-Regeln in genau dieser Reihenfolge stehen müssen und nicht anders.

Diese Abweichungen kann ich nur prompten, weil ich die Reibung irgendwann selbst gespürt habe. In unzähligen Fällen habe ich heute schon mit der KI über Architektur, Trade-offs und Edge Cases diskutiert. Das funktioniert nur, weil ich weiß, wovon ich rede.

Mein dunkelster Gedanke dazu: Wenn ich die Architektur und die Reibungen irgendwann nicht mehr verstehe, bin ich auch kein guter KI-Prompter mehr. Dann verliert meine generierte Software ihre Erfahrungswerte. Und übrig bleibt nur noch Defaultcode aus dem Generator. Das will ich nicht.

Dazu kommt die Abhängigkeit. Modelle, Preise und Verfügbarkeiten liegen nicht in meiner Hand. Was heute günstig und selbstverständlich ist, muss es morgen nicht mehr sein. Vielleicht kommt der Tag, an dem man bei jeder Aufgabe abwägt: Lohnt sich der Prompt, oder mache ich es doch lieber selbst? Und dann sollte man es auch noch können.

Hans-Otto und die veraltete CA

Nehmen wir Hans-Otto. Hans-Otto lässt sich von der KI seinen Fußball-Alarm programmieren. Happy Path, läuft, er freut sich. Völlig legitim.

Aber du kannst mir nicht erzählen, dass Hans-Otto sich die Erklärungen durchliest und später weiß, dass sein curl streikt, weil das CA-Bundle auf dem Host veraltet ist.

Fairerweise: Das hätte Hans-Otto vorher auch nicht gewusst. Er hätte schlicht keinen Fußball-Alarm gehabt. Das eigentliche Problem ist ein anderes: Die Schere geht auf. Immer mehr Software wird von Menschen betrieben, die nicht verstehen, was unter dem Happy Path liegt. Und wenn es knallt, landen sie irgendwann bei jemandem, der es versteht. Gerne auch in unserem Support-Postfach, mit einem VPS, auf dem seit drei Jahren kein Update lief. (Ja, das passiert.)

Wie real das ist, hat Brent Roose (stitcher.io, vielen aus der PHP-Welt bekannt) gerade erst in seinem Beitrag Artificial Debt beschrieben. Abends, die Kinder schlafen, ein Krimi läuft. Dann klingelt das Handy. Sein Cousin hat vor einem Jahr eine Web-App für seinen Basketballverein mit KI gebaut, in zwei Tagen steht ein wichtiges Spiel an, und die App läuft nicht mehr. Seine eigenen Prompts zum Reparieren bringen nichts. Brents einziger Rat: den eingeschlagenen Weg weitergehen und hoffen, dass ein anderer Agent es richtet.

Er nennt das Artificial Debt: die technischen Schulden, die Nicht-Programmierer in den letzten zwei Jahren per Vibe-Coding angehäuft haben und die jetzt nach und nach fällig werden. Früher hat die Familie wegen des kaputten Druckers angerufen. Künftig ruft sie wegen der kaputten KI-App an.

Ich habe jeden Satz davon gefühlt. Das ist Hans-Otto. Nur eben in echt, mit Basketball statt Fußball.

Leute mit echtem Verständnis werden dadurch eher wertvoller als überflüssig. Aber nur, solange sie es tatsächlich noch verstehen.

Pflichtstunden im Cockpit

Wer wie ich gerne mal im A320neo-Simulator sitzt oder Serien wie "Mayday" schaut, kennt das Prinzip: Der Autopilot fliegt den Großteil der Strecke. Trotzdem fliegen Piloten regelmäßig von Hand und trainieren Ausfälle im Simulator. Nicht, weil die Automatik schlecht ist. Sondern weil der Mensch genau in dem Moment übernehmen muss, in dem sie versagt. Und dann ist keine Zeit zum Wiederlernen.

Genau so halte ich es mit dem Code. Ich schreibe weiterhin Laravel-Apps komplett von Hand, sauber im Service Pattern, mit einer billigen Tailwind-View obendrauf. Meistens, um neue Libraries auszutesten. Klar, ich könnte auch einfach den Agenten losschicken. Aber was lerne ich dabei?

Und wenn die KI übernimmt, gilt eine einfache Regel: Bevor ich eine Lösung annehme, sage ich kurz selbst voraus, wie sie aussehen müsste. Liegt meine Vorhersage daneben, habe ich entweder etwas gelernt oder einen Fehler gefunden. Beides ist ein Gewinn. Konsum wird es erst, wenn man aufhört zu fragen, warum etwas funktioniert und wo es bricht.

Fazit: Beides ist valide

In meinem Beitrag über "It works" habe ich geschrieben, man soll Meister seines Codes bleiben und nicht Sklave der AI werden. Daran hat sich nichts geändert. Nur die Frage ist größer geworden.

Was bleibt von meinem Handwerk? und Was wird dadurch jetzt möglich? sind keine Gegensätze. Beides ist absolut valide. Ich nehme die Chancen ernst, und genau deshalb pflege ich das Handwerk weiter. Denn der beste KI-Output entsteht nicht aus dem besten Prompt. Er entsteht aus der Erfahrung dahinter.

Moritz drückt übrigens heute noch F5. Nur sitze ich jetzt daneben und staune mit.