İçeriğe geç / Skip to content / Zum Inhalt

Die Vibe-Coding-Methode: 7 praktische Tipps und die Kunst, Prompts zu schreiben

Ahmet Balaman
Vibe CodingPrompt EngineeringClaudeChatGPTCursorKISoftwareentwicklungAI CodingRefactoringTests

Du hast deinen ersten Vibe-Coding-Versuch gemacht und der Code lief. Glückwunsch. Jetzt die eigentliche Frage: Funktioniert derselbe Code in sechs Monaten noch? Bricht ein neues Feature das alte? Kann ein anderer Entwickler diesen Code lesen? In diesem Artikel teile ich sieben konkrete Methoden, um von „läuft" zu „bleibt lauffähig" zu kommen. Das sind Praktiken, die ich in eigenen Projekten anwende und meinen Studenten beibringe – sie funktionieren immer wieder.

KI-gestützte Entwicklung ist nicht „Prompts schreiben". Es ist zu wissen, wie man Entscheidungen trifft, wie man kleine Aufgaben gibt und wie man auditiert. Die sieben Methoden unten zielen genau darauf.

1. Dokumentiere die Architekturentscheidung, dann übergib sie dem Modell

Wo die KI am meisten stolpert, sind Entscheidungen, die nie aufgeschrieben wurden. „Wo lebt die Daten?", „Wie sehr vertrauen wir dem Nutzer?", „Welcher Wert kommt vom Server?" – dem Modell überlassen, bekommt jede Datei eine andere Antwort. Der Code läuft, ist aber inkonsistent.

Die Lösung: ein Entscheidungsdokument. Eine einzelne Datei im Projekt-Root, ARCHITECTURE.md oder DECISIONS.md. Darin:

  • Vertrauensgrenze. Welche Werte kommen vom Client, welche werden auf dem Server berechnet?
  • Daten-Ownership. Welche Tabelle hält welches Feld, welcher Service hält welche Logik?
  • Produktregeln. „Ein Nutzer darf X höchstens N Mal pro Tag", „Wenn Zahlung fehlschlägt, dann Y..."
  • Technologie-Wahlen. „PHP + MySQL, weil...", „Firebase nur für Auth und Benachrichtigungen".

Dieses Dokument kann 50-100 Zeilen lang sein. Du schreibst es. Dann erinnerst du das Modell bei jeder Aufgabe daran, „nach dem Entscheidungsdokument zu schreiben". Die Konsistenz des Outputs steigt merklich.

Konkretes Beispiel

Im Entscheidungsdokument für LevelUpStudy steht diese einzelne Zeile:

Kein Wert, der die Spiel-Ökonomie bestimmt, kommt jemals vom Client. Dauer = min(Server-Differenz, geplante Dauer, vom Client gemeldete Dauer).

Diese eine Zeile sorgte dafür, dass das Modell bei jedem zeitorientierten Prompt die richtige Antwort gab. Ohne sie hätte jede Datei eine andere Formel produzieren können.

2. Gib kleine Aufgaben, behalte das große Ziel

Ein „Bau mir die App"-Prompt gibt dem Modell ein Ziel, keine Richtung. Das Modell wird den kürzesten Weg zu „läuft" finden – und das ist nicht dein Weg. Die Ausgabe eines „Bau die ganze App"-Prompts sind meist 500 Zeilen, halb davon unverbunden, halb davon dupliziert.

Stattdessen: atomare Aufgaben. Beispiel:

❌ „Bau mir eine E-Commerce-App"

✅ „Schreibe den Add-to-Cart-Endpoint. Einzelne Transaktion. Wenn derselbe Nutzer dasselbe Produkt innerhalb von 100 ms zweimal hinzufügt, wird der Bestand nur einmal reduziert. Bei Fehler 422 zurückgeben."

Dieser eine Satz enthält fünf Entscheidungen: welcher Endpoint, Transaktionsregel, Idempotenzregel, Verhaltensgrenze, Fehler-Antwort. Das Modell schreibt Code zu diesen fünf Entscheidungen. Du kannst jede einzeln testen.

Atomare Aufgaben machen auch das Debuggen einfacher. „In den Warenkorb hinzufügen funktioniert nicht" wird zu „dieser Endpoint gibt 422 zurück, sollte aber 500 geben".

3. Füge eine Checkliste zum Prompt hinzu

Eine meiner Lieblingseigenschaften des Modells: wenn du ihm sagst, was es prüfen soll, prüft es tatsächlich. Statt „schreibe diese Funktion" lieber „schreibe diese Funktion, dann verifiziere diese 5 Punkte".

Beispiel:

„Schreibe diese Funktion. Dann verifiziere:

  1. Edge Case: Ist die Eingabe null, was gibt sie zurück?
  2. Bei gleicher Eingabe zweimal – gibt sie dasselbe Ergebnis?
  3. Bei Fehler – wirft sie, oder schluckt sie still?
  4. Hat sie Seiteneffekte (Datenbank, Datei, Netzwerk)?
  5. Ist sie testbar (reine Funktion, Abhängigkeiten injizierbar)?"

Das Modell hängt die Checkliste an die Ausgabe an. Du gehst sie Punkt für Punkt durch. Gibt es ein Problem, „repariere diesen Punkt" – zweite Iteration. In zwei bis drei Runden hast du sehr soliden Code.

4. Halte Tests synchron, baue einen Schutzschild

Vibe Codings größtes Sicherheitsnetz sind Tests. Verschiebe kritische Werte (Zeit, Punkte, Identität, Berechtigungen) in reine Funktionen und schütze sie mit Tests. Sie hindern das Modell daran, dieselbe Stelle später zu brechen.

Eine reine Funktion: keine äußeren Abhängigkeiten, gleiche Ausgabe bei gleicher Eingabe, keine Seiteneffekte. calculateScore(time, level) -> number ist rein. updateUserInDatabase(userId, score) ist es nicht, weil sie die Datenbank berührt.

Regel: Geschäftsregel-Logik in reine Funktionen ziehen. Geld, Punkte, Zeit, Berechtigungen, Ranking – alles kann rein sein. Die Tests, die du für diese Funktionen schreibst, hindern das Modell daran, dieselbe Stelle später leise zu ändern.

Meine Praxis:

  1. Wenn ich ein neues Feature hinzufüge, schreibe ich die Geschäftsregel zuerst als reine Funktion.
  2. Ich schreibe einen Test für die reine Funktion.
  3. Ich sage dem Modell „nutze diese reine Funktion, um den Endpoint zu schreiben".
  4. Nachdem der Endpoint geschrieben ist, frage ich „Bestehen die Tests noch?"

Diese vier Schritte verhindern die meisten „läuft, aber rechnet falsch"-Bugs.

5. Mache Audit-Fragen zur Routine

Frage das Modell nach jeder Phase drei Audit-Fragen:

  1. „Gibt es unerreichbaren Code in dieser Datei?"
    Das Modell listet unerreichbare Funktionen, toten Code, veraltete Parameter. Du löschst sie.
  2. „Gibt es doppelte Funktionen?"
    Das Modell listet Funktionen, die ähnliche Arbeit unter verschiedenen Namen tun. Du entscheidest, ob du zusammenführst.
  3. „Gibt es Magic Strings?"
    Das Modell schlägt vor, hartkodierte Strings („Stift", „DE", „ZAP") in Konstanten zu verschieben.

Diese drei Fragen am Ende jedes Sprints verhindern „Spaghetti, das läuft". Das Modell auditiert seine eigene Arbeit nicht; wenn du nicht fragst, kommt schlechter Code weiter.

6. Behandle Refactoring als eigene Phase

Ein häufiger Vibe-Coding-Fehler: das Modell beim neuen Feature „nebenbei" auch „diesen Teil reparieren" lassen. Ergebnis: ein Commit vermischt neues Feature + Refactoring + Bug-Fix, schwer zurückzurollen.

Stattdessen:

  • Feature-Phase: nur neue Arbeit.
  • Refactoring-Phase: nur Aufräumen.
  • Test-Phase: nur Tests.

Nach jeder Phase die Frage „Was haben wir gemacht, was haben wir gelernt, was kommt als Nächstes?" Die Trennung erhöht die Qualität – und sie erlaubt dir, einen einzelnen Commit zurückzunehmen, wenn etwas kaputtgeht.

7. Führe ein Prompt-Log, extrahiere wiederkehrende Muster

Beim Vibe Coding schreibst du unbemerkt dieselben Prompts an verschiedenen Stellen. „Verstehe diese Datei, dann schreibe Funktion Y nach Regel X"-artige Muster. Notiere sie.

Wie ich es in der Praxis mache:

  • Eine Notiz-Datei (PROMPT_PATTERNS.md), in der ich die am besten funktionierenden Prompt-Muster festhalte.
  • Neben jedes Muster, wann es funktioniert und wann nicht.
  • Wenn ich ein neues Projekt öffne, wähle ich das passende Muster und passe es an.

Diese Gewohnheit reduziert die Last, „jedes Mal Prompts von Null zu schreiben". Sie trainiert auch deine Prompt-Schreib-Muskeln.

Bonus: Häufige Prompt-Fehler

Aus jahrelanger Erfahrung die häufigsten Prompt-Fehler:

  1. „Schreibe" statt „Schreibe und erkläre warum".
    Die Erklärung anzufordern, lässt dich und das Modell das Reasoning sehen. Wenn etwas falsch ist, fängst du es früh.
  2. Toten Code behalten statt zu löschen.
    „Könnte nützlich sein" führt zwei Monate später zu Kollisionen mit der neueren Version derselben Funktion. Keine Angst vor dem Löschen.
  3. Tests überspringen.
    Projekte, die mit „Tests schreiben wir später" anfangen, schreiben nie Tests. In Vibe Coding sind Tests das Sicherheitsnetz; verschiebe das Sicherheitsnetz nicht.
  4. Entscheidungen dem Modell überlassen.
    „Welche Bibliothek soll ich nehmen?" ist schlechter als „Welche dieser vier Bibliotheken passt zu diesem Projekt?". Gib dem Modell Optionen, du wählst.
  5. Den Prompt in einem Rutsch schreiben.
    Gute Prompts entstehen meist iterativ. Wenn der erste Versuch nicht funktioniert, lies die Antwort des Modells und grenze den Prompt ein. Nach drei oder vier Iterationen taucht der beste Prompt auf.

Ist Vibe Coding wirklich nachhaltig?

Wenn du die sieben Methoden oben anwendest, ja. Sonst: eine Codebasis, die läuft, aber nicht gewartet werden kann, wachsende Schulden mit jedem Feature, der „Wer das auch immer geschrieben hat, soll es löschen"-Punkt nach sechs Monaten.

Was Nachhaltigkeit braucht, ist Rhythmus:

  1. Entscheiden.
  2. Kleine Aufgaben geben.
  3. Tests synchron halten.
  4. Auditieren.
  5. Refactoring getrennt halten.
  6. Prompt-Log führen.

Dieser Rhythmus verbindet die Produktivität des Modells mit der Disziplin des Entwicklers. So funktioniert Vibe Coding in der Praxis: Du gewinnst Geschwindigkeit, und du kannst den Code Monate später immer noch öffnen und verstehen.

Schlussgedanke

Vibe Coding ist eine Methode, kein Werkzeug. Werkzeuge ändern sich (morgen steht vielleicht ein anderes Modell vorne), aber die Methode bleibt: entscheiden, kleine Aufgaben geben, Tests synchron halten, auditieren.

Für einen kompakteren Startpunkt siehe die Vibe-Coding-Guide-Seite. Für einen praxisnahen Werkzeugvergleich siehe Vibe-Coding-Werkzeuge im Vergleich.

Für die Geschichte einer echten App, die mit dieser Methode gebaut wurde, siehe Mit Vibe Coding eine App im App Store veröffentlichen – die LevelUpStudy-Story.

Häufige Fragen

Wie schreibe ich einen Vibe-Coding-Prompt?

Ein Prompt hat drei Teile: Ziel (was zu tun ist), Constraint (welche Regeln zu befolgen sind), Akzeptanzkriterium (wann ist es „fertig"). Beispiel: „Schreibe den Add-to-Cart-Endpoint. Einzelne Transaktion, idempotent. Bei Fehler 422 zurückgeben."

Wie halte ich KI-geschriebenen Code qualitativ hoch?

Verschiebe kritische Geschäftsregeln in reine Funktionen, geschützt durch Tests. Am Ende jeder Phase auditiere auf unerreichbaren Code, doppelte Funktionen und Magic Strings. Halte Refactoring in einer eigenen Phase, getrennt von neuen Features.

Was ist der wichtigste Vibe-Coding-Tipp?

Schreibe die Entscheidungen auf. Ohne Architektur-Entscheidungsdokument ist jeder Prompt an das Modell unvollständig. Diese eine Gewohnheit verbessert die Output-Qualität merklich.

Wie debugge ich mit Vibe Coding?

Füge den Fehler unverändert ein und promptet „finde den Code, der diesen Fehler erzeugt, erkläre warum, schreibe die korrigierte Version". Committe nie, ohne die Erklärung des Modells gelesen zu haben; manchmal versteckt ein „Fix" nur den Bug.

Wo kann ich Vibe Coding auf Deutsch lernen?

Starte mit diesem Artikel und der Vibe-Coding-Guide-Seite. Die reichhaltigsten englischen Quellen sind Anthropics Blog, OpenAIs Blog und Cursors Docs.

Kommentare