Vom Prototyp in den Betrieb

Vibe Coding: was im Team davon übrig bleibt

Der Entwurf entsteht an einem Nachmittag, die Rechnung kommt im Betrieb. Diese Seite zeigt die typischen Lücken und die vier Regeln, die sie schließen.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Seit 1997 am Markt Kleine Gruppen Präsenz und Live-Online Zertifizierte Trainer
Worum es geht

Der Prototyp bleibt, die Übergabe fällt aus

Der übliche Verlauf: Eine Kollegin baut sich in zwei Stunden ein Werkzeug für ein eigenes Problem. Es funktioniert, sie zeigt es herum, drei Abteilungen wollen es auch. Ab diesem Moment ist es Software im Betrieb, ohne je den Weg genommen zu haben, den Software im Betrieb im Haus sonst nimmt.

Der Preis fällt erst später an, dafür konzentriert. Zugangsdaten müssen zurückgezogen werden, weil sie im ausgelieferten Skript standen. Eine Schnittstelle gibt Daten heraus, die sie nicht herausgeben darf. Und die Fehlersuche dauert ungewöhnlich lang, weil niemand erklären kann, warum eine Stelle so gebaut ist.

Gleichzeitig ist ein Verbot die schlechteste Antwort. Es verlagert dieselbe Arbeit nur dorthin, wo niemand hinsieht.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Symptom, Ursache, Lösung

Symptom, Ursache, Lösung

Symptom

Die Anwendung verhält sich in der Oberfläche korrekt, ein direkter Aufruf der Schnittstelle liefert jedoch Daten anderer Nutzerinnen und Nutzer.

Ursache

Die Berechtigungsprüfung sitzt nur in der Oberfläche, weil in der Aufgabenstellung nach der Ansicht und nicht nach der Zugriffskontrolle gefragt wurde.

Lösung

Jede Prüfung serverseitig wiederholen und mit einem Test belegen, der die Schnittstelle mit einem fremden Konto direkt aufruft.

Symptom

Ein Zugangsschlüssel taucht im Netzwerkverkehr des Browsers auf.

Ursache

Der Schlüssel wurde im Prototyp direkt in den Quelltext geschrieben und ist beim Bündeln in das ausgelieferte Skript gewandert.

Lösung

Schlüssel sofort zurückziehen und neu ausstellen, den Aufruf hinter einen eigenen Serverendpunkt legen und die Bündel vor dem Ausliefern automatisch auf bekannte Schlüsselmuster prüfen.

Symptom

Nach einem Neuaufbau der Abhängigkeiten verhält sich die Anwendung anders, ohne dass jemand Code geändert hat.

Ursache

Eine Abhängigkeit wurde ohne feste Version übernommen oder trug einen Namen, den es zum Zeitpunkt des Vorschlags gar nicht gab.

Lösung

Sperrdatei einchecken, Versionen festnageln und jede neue Abhängigkeit einmal von Hand ansehen, bevor sie aufgenommen wird.

Symptom

Ein Fehler ist reproduzierbar, aber niemand im Team kann erklären, warum die betroffene Stelle so gebaut ist.

Ursache

Der Abschnitt wurde übernommen, ohne gelesen zu werden, und es gibt weder Test noch Notiz zur Absicht.

Lösung

Die Stelle mit einem Test umgeben, der das erwartete Verhalten beschreibt, und erst danach umbauen. Ohne diese Beschreibung ist jede Änderung ein Ratespiel.

Symptom

Der Dienst fällt aus, sobald jemand die Schnittstelle in einer Schleife aufruft.

Ursache

Es gibt keine Begrenzung der Aufrufe, weil im Prototyp nie mehr als eine Person gleichzeitig zugegriffen hat.

Lösung

Eine Begrenzung je Konto und je Adresse einziehen und den Grenzfall mit einem Lasttest prüfen, bevor die Anwendung geöffnet wird.

Sechs Stellen, an denen es regelmäßig klemmt

  1. 01 Die Berechtigungsprüfung sitzt nur in der Oberfläche, nicht auf dem Server.
  2. 02 Zugangsdaten stehen im Quelltext und landen im ausgelieferten Skript.
  3. 03 Die Datenbank hängt direkt am Browser, ohne Rechte auf Zeilenebene.
  4. 04 Es gibt keine Begrenzung der Aufrufe, ein Skript genügt für den Ausfall.
  5. 05 Eine Abhängigkeit trägt einen Namen, den es beim Vorschlag noch nicht gab.
  6. 06 Niemand im Team kann erklären, warum eine Stelle so gebaut ist.
Was du mitnimmst

Was du danach im Team durchsetzen kannst

Es geht nicht darum, langsamer zu werden, sondern darum, den Übergang von der Skizze zur betriebenen Anwendung an einer benannten Stelle stattfinden zu lassen.

Grenze benennen

Du hast ein Kriterium, ab wann ein Entwurf zur Software wird, und es hängt nicht an der Zeilenzahl, sondern daran, wer bei einem Fehler Schaden nimmt.

Typische Lücken erkennen

Du prüfst gezielt auf fehlende serverseitige Berechtigungen, eingebettete Zugangsdaten, offene Datenzugriffe und fehlende Aufrufbegrenzung.

Abhängigkeiten absichern

Du bestätigst neue Pakete einzeln und weißt, warum ein plausibel klingender, aber nicht existierender Paketname ein Sicherheitsproblem ist.

Tests als Beschreibung

Du legst Tests um übernommene Abschnitte, weil sie die einzige verlässliche Beschreibung des gewünschten Verhaltens sind.

Fachbereiche einbinden

Du stellst eine Umgebung mit präparierten Daten bereit, in der ausprobiert werden darf, statt Verbote auszusprechen, die niemand befolgt.

Aufwand ehrlich rechnen

Du kannst den gesparten Nachmittag gegen die spätere Fehlersuche stellen und die Entscheidung damit begründen, statt sie zu verteidigen.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt

Wo der Prototyp aufhört und der Betrieb anfängt

Der Begriff stammt von Andrej Karpathy und beschrieb ursprünglich einen bewussten Umgang mit Wegwerfcode: Man beschreibt, was passieren soll, nimmt das Ergebnis, ohne es Zeile für Zeile zu lesen, und wirft es wieder weg. Im Unternehmen fällt der letzte Teil regelmäßig aus. Was funktioniert, bleibt, und plötzlich hängt eine Abteilung an einer Anwendung, die niemand gelesen hat.

Die brauchbare Grenze ist nicht die Größe des Codes, sondern die Frage, wer Schaden nimmt, wenn er falsch läuft. Solange nur die Person betroffen ist, die ihn geschrieben hat, ist alles erlaubt. Sobald echte Daten, echtes Geld oder andere Menschen im Spiel sind, gelten dieselben Regeln wie für jede andere Software im Haus.

Die Lücken, die immer wieder auftauchen

Ein Muster wiederholt sich: Die Prüfung, ob jemand etwas überhaupt darf, fehlt auf der Serverseite und existiert nur in der Oberfläche. Wer die Adresse der Schnittstelle direkt aufruft, bekommt alle Daten. Das ist kein Fehler des Werkzeugs, sondern die Folge der Aufgabenstellung: Gefragt wurde nach einer Funktion, nicht nach einer Berechtigungsprüfung.

Dazu kommen Zugangsdaten, die im Quelltext oder im ausgelieferten Skript stehen, weil sie im Prototyp einfach dort lagen. Häufig hängt die Datenbank direkt am Browser, ohne Rechte auf Zeilenebene, sodass sich mit einem beliebigen Konto die Daten aller anderen lesen lassen. Es fehlt eine Begrenzung der Aufrufe, sodass ein einzelnes Skript den Dienst lahmlegt, und Eingaben wandern ungeprüft in Abfragen oder Befehle.

Hinzu kommt eine dritte Klasse von Fehlern, die es vorher so nicht gab: Abhängigkeiten, die es gar nicht gibt. Modelle schlagen gelegentlich Paketnamen vor, die plausibel klingen und nicht existieren. Wenn jemand einen solchen Namen später registriert, installiert deine Anwendung beim nächsten Durchlauf fremden Code. Der Schutz dagegen ist banal und wird trotzdem oft übersprungen: jede neue Abhängigkeit einmal ansehen, bevor sie in die Sperrdatei wandert.

Technische Schulden, die anders aussehen als früher

Klassische Schulden entstehen durch Abkürzungen, die jemand bewusst genommen hat und im Kopf hat. Hier entstehen sie durch Code, den niemand im Kopf hat. Er sieht ordentlich aus, ist einheitlich formatiert und kommentiert, und trotzdem kann niemand im Team sagen, warum eine Stelle so gelöst wurde.

Das schlägt beim ersten Fehlerbild durch: Die Suche dauert länger, weil das gemeinsame Bild von der Anwendung fehlt. Wer den Ansatz nutzt, sollte deshalb nicht am Testen sparen, sondern eher mehr davon einplanen. Tests sind hier die einzige Beschreibung des gewünschten Verhaltens, die noch stimmt.

Regeln, die den Ansatz nutzbar machen

Vier Vereinbarungen reichen für den Anfang. Erstens geht ein generierter Entwurf nicht anders in Betrieb als jeder andere Beitrag, also über dieselbe Prüfung. Zweitens hat jede Person, die einen Entwurf einreicht, ihn gelesen und kann jede Stelle erklären. Drittens werden neue Abhängigkeiten einzeln bestätigt. Viertens bekommen Prototypen niemals Zugriff auf echte Daten, sondern nur auf einen präparierten Bestand.

Diese Regeln sind keine Bremse, sondern das, was den schnellen Einstieg überhaupt bezahlbar macht. Ohne sie verschiebt sich der gesparte Nachmittag in Wochen an Fehlersuche.

Dazu passende Kurse

Wie ein Team den Ansatz nutzt, ohne sich Betriebsprobleme einzukaufen, üben die Weiterbildungen für Entwicklung mit KI-Assistenz .

Wer über den Prototyp hinaus eigene Anwendungen mit Sprachmodellen bauen will, findet den nächsten Schritt in den Formate zum Bau eigener KI-Anwendungen .

Wissen prüfen

Wie sicher bist du beim Thema wirklich?

Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.

Die Inhalte wurden sehr gut vermittelt und Fragen wurden perfekt beantwortet.
LLM Security: Injections erkennen & abwehren
Marco ist ein extrem guter Trainer, der mit seinem Fachwissen zum Thema KI sehr viel Expertise mitbringt.
KI Data Science: Datenanalyse Grundkurs
Seminarleiter war sehr gut vorbereitet, Den Lehrstoff hat er ausführlich und praxisorientiert vorgetragen.
ChatGPT Aufbaukurs: Datenanalyse, Automatisierung und Workflows

Häufige Fragen

Ist Vibe Coding im Unternehmen grundsätzlich unbrauchbar?
Nein. Für Skizzen, interne Auswertungen, einmalige Umbauten und das Ausprobieren einer Idee spart es viel Zeit. Der Bruch entsteht erst, wenn eine Skizze ohne Übergabe in Betrieb geht.
Wer ist verantwortlich, wenn generierter Code Schaden anrichtet?
Die Person, die ihn einreicht, und das Team, das ihn übernimmt. Der Ursprung des Codes ändert daran nichts. Genau deshalb lohnt sich die Regel, dass niemand etwas einreicht, was er nicht erklären kann.
Brauchen wir dafür eigene Werkzeuge?
Meist nicht. Was hilft, hast du schon: Prüfung vor der Übernahme, Tests, feste Versionen, getrennte Umgebungen und ein Verfahren für Zugangsdaten. Neu ist nur, wie schnell jetzt Code entsteht, den diese Verfahren erreichen müssen.
Wie halten wir Fachbereiche davon ab, eigene Anwendungen zu bauen?
Gar nicht, und das ist auch nicht das Ziel. Sinnvoller ist ein erklärter Weg: eine Umgebung mit präparierten Daten, in der ausprobiert werden darf, und ein klarer Übergabepunkt, ab dem die IT übernimmt.
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem KI-Programm den passenden Kurs für deinen Stand zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die auf eure Abläufe und euren Datenbestand zugeschnitten sind.

Tempo behalten, Betrieb im Griff

Wer die Werkzeuge und ihre Grenzen kennt, entscheidet je Vorhaben bewusst, statt sich zwischen Verbot und Kontrollverlust einzurichten.