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
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
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
- 01 Die Berechtigungsprüfung sitzt nur in der Oberfläche, nicht auf dem Server.
- 02 Zugangsdaten stehen im Quelltext und landen im ausgelieferten Skript.
- 03 Die Datenbank hängt direkt am Browser, ohne Rechte auf Zeilenebene.
- 04 Es gibt keine Begrenzung der Aufrufe, ein Skript genügt für den Ausfall.
- 05 Eine Abhängigkeit trägt einen Namen, den es beim Vorschlag noch nicht gab.
- 06 Niemand im Team kann erklären, warum eine Stelle so gebaut ist.
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 .
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.
Wo du genau das übst
Die Inhalte wurden sehr gut vermittelt und Fragen wurden perfekt beantwortet.
Marco ist ein extrem guter Trainer, der mit seinem Fachwissen zum Thema KI sehr viel Expertise mitbringt.
Seminarleiter war sehr gut vorbereitet, Den Lehrstoff hat er ausführlich und praxisorientiert vorgetragen.
Häufige Fragen
Ist Vibe Coding im Unternehmen grundsätzlich unbrauchbar?
Wer ist verantwortlich, wenn generierter Code Schaden anrichtet?
Brauchen wir dafür eigene Werkzeuge?
Wie halten wir Fachbereiche davon ab, eigene Anwendungen zu bauen?
Deine Ansprechpartner
Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Hilft dir, aus dem KI-Programm den passenden Kurs für deinen Stand zu finden.
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.