Zum Inhalt springen
CASOON

Ich schreibe nur noch 20 % Code selbst

Wie sich Entwickeln mit KI wirklich anfühlt – Tools, Kosten, Alltag. Stand 2026.

12 Minuten
Ich schreibe nur noch 20 % Code selbst
#KI #Produktivität #Claude Code #Cursor
SerieKI im Entwickler-Alltag
Teil 3 von 4

An einem normalen Arbeitstag schreibe ich vielleicht 20 Prozent des Codes selbst. Den Rest generiert eine KI, und ich entscheide, ob er richtig ist.

Das klingt nach Zukunft. Ist aber mein Alltag seit Monaten.

Die Arbeit hat sich verschoben: weniger tippen, mehr lesen, mehr entscheiden. Tatsächlich ist es vor allem viel Sprechen – ich diktiere Aufgaben, beschreibe Kontext, formuliere Korrekturen. Die Tastatur ist nicht mehr das primäre Eingabegerät.

Wer mich bei der Arbeit beobachtet, sieht jemanden, der mit seinem Terminal redet (auf dem Walking Pad), gelegentlich durch Diffs scrollt und ab und zu den Kopf schüttelt. Von außen betrachtet könnte man meinen, ich arbeite weniger. In Wirklichkeit treffe ich mehr Entscheidungen pro Stunde als früher.

Ich liefere Kontext und Architektur, stückweise, in verdaubaren Aufgaben. Wenn ich korrigiere, fließt das Feedback ins Memory oder wird zum Skill, sobald es Projektstandard werden soll. Und ehrlich gesagt – es ist anstrengender als vorher. Nicht, weil die Tools schlecht wären. Sondern weil Review fremden Codes mehr Aufmerksamkeit erfordert als den eigenen zu prüfen. Aber genau das macht das Ergebnis besser – eigenen Code reviewt man oft mit weniger Sorgfalt, weil man glaubt, ihn zu kennen.

Der eigentliche Unterschied ist nicht Geschwindigkeit

Welches Tool wann passt — Claude Code, Codex, Mistral und warum ich zwei davon gleichzeitig nutze — habe ich in Teil 2 dieser Serie ausführlich beschrieben. Hier geht es nicht um den Vergleich, sondern um den Alltag.

Wo alle scheitern

An Architektur. An Naming-Entscheidungen. Am Nachdenken über Datenmodelle. Am Verstehen, warum ein Kunde etwas will und nicht nur, was er beschreibt.

Wer glaubt, „KI macht den Code, ich mache den Rest”, unterschätzt den Rest.

Mein Setup: Zed + CLI-Agenten

Ich habe Ende 2025 die Geduld mit JetBrains verloren. Zu langsam, zu aufgebläht, zu viele Features, die ich nicht brauche, und zu wenige, die ich brauche. Der Wechsel zu Zed war einer der besten Entscheidungen des letzten Jahres.

Zed ist schnell. Nicht „schnell für eine IDE”, sondern wirklich schnell — Start in unter einer Sekunde, kein Lag bei großen Dateien, kein Warten auf Indizierung. Aber was Zed für mein Setup besonders macht: Es spielt perfekt mit CLI-Agenten zusammen. Zed ist ein Editor, der sich nicht zwischen mich und mein Terminal drängt. Kein eingebauter KI-Assistent, der mit meinen CLI-Tools konkurriert. Stattdessen eine IDE, die schnell genug ist, um mit dem Tempo der Agenten mitzuhalten — Dateien öffnen, Änderungen reviewen, weiter.

Dazu kommt Refactoring — mal mit KI, mal bewusst ohne. Und oft lasse ich einen Agenten als Kritiker gegen gerade entstandenen Code laufen: nicht um zu generieren, sondern um zu prüfen, zu hinterfragen, Schwächen aufzuzeigen. Dieser Prüfprozess gegen den eigenen Output ist einer der unterschätzten Produktivitätsgewinne.

Die Entwicklungssprünge bei Zed sind ein eigenes Thema. Die aktuelle KI-Integration, die Multiplayer-Features, die Extension-API — dazu gibt es einen separaten Artikel. Hier nur so viel: Für Entwickler, die primär mit CLI-Agenten arbeiten, gibt es gerade keine bessere IDE.

Memory und Skills: Was über den Prompt hinausgeht

Kontext-Dateien, Agenten-Trends und Multi-Agent-Workflows habe ich in Teil 2 behandelt. Hier der Teil, der den Alltag am stärksten verändert hat: Memory und Skills.

Dazu kommen Skills — wiederverwendbare Prompt-Templates, die man per Slash-Command aufruft. /new-endpoint scaffoldet einen neuen Axum-Handler mit Extractor, Error-Type und zugehörigem Test. /add-migration erstellt eine SQLx-Migration mit Up- und Down-Script nach den Projektkonventionen. Das sind keine generischen Prompts, sondern projektspezifische Workflows, die ich einmal definiere und danach konsistent nutze. Skills ersetzen die informelle Prompt-Bibliothek, die man sich sonst in Notizen zusammensammelt — nur dass sie direkt im Projekt leben und versioniert werden können. Ich liefere Skills inzwischen auch in meinen Open-Source-Projekten mit aus, damit andere Entwickler sofort produktiv arbeiten können. Mittlerweile gibt es auch Standard-Skills für gängige Anwendungsfälle, die als offizielle Hilfen veröffentlicht werden — Skills werden damit Teil des Ökosystems, nicht nur des eigenen Workflows.

Was den Unterschied macht: die Kontext-Datei

Alle CLI-Agenten arbeiten besser mit einer Projektbeschreibung. Bei Claude Code ist das eine CLAUDE.md im Projekt-Root, bei Cursor eine .cursorrules. Das Prinzip ist dasselbe: dem Agenten erklären, wie das Projekt aufgebaut ist.

# Projekt: E-Commerce Backend

## Stack
- Runtime: Node.js 22
- Framework: Fastify
- DB: PostgreSQL + Prisma
- Validation: Zod
- Tests: Vitest + Testcontainers
- Sprache: TypeScript (strict)

## Konventionen
- Error Handling: Result-Pattern (src/lib/result.ts)
- Kein `any`. Immer explizite Return-Types.
- API-Endpunkte in src/routes/, ein File pro Resource
- Tests neben der Datei: orders.ts → orders.test.ts

## Wichtige Dateien
- prisma/schema.prisma: Datenmodell
- src/lib/result.ts: Result<T, E> Utility
- src/lib/errors.ts: Error-Typen

Diese Datei liest der Agent automatisch. Je besser sie ist, desto konsistenter der generierte Code. Die 30 Minuten, die man dafür investiert, sind die beste Zeitinvestition im gesamten Setup.

Drei Szenarien aus dem Alltag

Die Tool-Beschreibungen oben sind Theorie. In der Praxis wird es unordentlicher. Drei Situationen, die regelmäßig vorkommen – und was dabei wirklich passiert.

Szenario 1: Refactoring über mehrere Dateien

Die Aufgabe: Ein UserService ist über die Monate gewachsen. 400 Zeilen, fünf verschiedene Verantwortlichkeiten, drei Methoden, die eigentlich in einen NotificationService gehören.

# Prompt an Claude Code:
> Lies src/services/UserService.ts. Extrahiere alle
  Notification-Methoden (sendWelcomeEmail, sendPasswordReset,
  sendOrderConfirmation) in einen neuen NotificationService.
  Passe alle Imports an, die den UserService für Notifications
  nutzen. Halte die bestehenden Tests lauffähig.

# Was Claude Code tut:
# 1. Liest UserService.ts und alle Dateien, die ihn importieren
# 2. Erstellt src/services/NotificationService.ts
# 3. Verschiebt die drei Methoden mit allen Abhängigkeiten
# 4. Aktualisiert 8 Import-Statements in anderen Dateien
# 5. Passt die Tests an: UserService-Tests bleiben, neue
#    NotificationService-Tests werden erstellt

Was ich manuell prüfe: Sind die Abhängigkeiten sauber getrennt? Gibt es zirkuläre Imports? Hat der UserService noch Methoden, die den NotificationService kennen sollten, es aber nicht mehr tun?

Die eigentliche Arbeit sind 5 Minuten Review. Das Verschieben, Imports-Fixen und Tests-Anpassen – das ist der Teil, der ohne KI 45 Minuten dauert und null kognitive Leistung erfordert.

Szenario 2: Bug-Suche in fremdem Code

Die Aufgabe: Ein Kunde meldet, dass die Bestellbestätigung manchmal keine Versandkosten anzeigt. Der Code ist nicht von mir, das Projekt ist sechs Monate alt.

# Prompt an Claude Code:
> In der Bestellbestätigung fehlen manchmal die Versandkosten.
  Finde heraus, wo die Versandkosten berechnet werden, wo sie
  in die Bestätigungs-Mail eingesetzt werden und unter welchen
  Bedingungen der Wert leer sein könnte.

# Claude Code durchsucht die Codebase:
# - Findet calculateShipping() in src/lib/shipping.ts
# - Findet die E-Mail-Template-Logik in src/emails/orderConfirmation.tsx
# - Findet den Aufruf in src/routes/checkout.ts
# - Identifiziert: Bei Abholung im Laden (pickup) gibt
#   calculateShipping() null zurück, und das Template
#   rendert null als leeren String statt "0,00 €"
# Dann gezielt:
> Fixe das Problem: Wenn shippingCost null ist und die
  Lieferart "pickup" ist, zeige "Abholung – kostenlos" an.
  Wenn shippingCost aus einem anderen Grund null ist,
  logge einen Fehler. Schreibe einen Test für beide Fälle.

Ohne KI hätte ich 20 Minuten mit grep und Datei-Lesen verbracht, um die Kette von der Berechnung bis zum Template zu verstehen. Die KI macht das in 30 Sekunden und erklärt mir den Datenfluss dazu.

Szenario 3: Tests nachrüsten für Legacy-Code

Die Aufgabe: Ein Modul mit 12 Funktionen hat null Tests. Bevor ich etwas ändere, will ich eine Baseline.

# Prompt an Claude Code:
> Lies src/lib/pricing.ts komplett. Schreibe Unit-Tests
  für jede exportierte Funktion. Nutze Vitest. Teste
  Normalfälle und Grenzwerte (0, negative Werte, undefined).
  Orientiere dich am Teststil in src/lib/__tests__/cart.test.ts.

# Claude Code generiert:
# - src/lib/__tests__/pricing.test.ts
# - 34 Testfälle für 12 Funktionen
# - Inkl. Edge Cases: Rabatt > 100%, Preis = 0,
#   fehlende Pflichtfelder
# Tests laufen lassen:
> Führe die neuen Tests aus.

# 31 pass, 3 fail.
# Die 3 Fails zeigen echte Bugs:
# - calculateDiscount() crasht bei negativem Preis
# - applyVoucher() akzeptiert abgelaufene Gutscheine
# - formatPrice() rundet falsch bei 3 Nachkommastellen

Die KI hat nicht nur Tests geschrieben – sie hat durch die Tests drei Bugs gefunden, die seit Monaten im Code schlummerten. Das ist der Punkt, an dem sich Test-Generierung wirklich lohnt: nicht als Abhaken einer Coverage-Metrik, sondern als Diagnose-Tool.

Kosten: Die ehrliche Rechnung

ToolFixkostenVariable KostenTypisch gesamt
Copilot Pro22 Euro-22 Euro
Cursor Pro19 EuroPro+ 55 Euro19-55 Euro
Claude Code (Max)100-200 Euroinkl. Token100-200 Euro
Claude Code (API)-20-150 Euro Token20-150 Euro

Die Zahlen allein sagen wenig. Also die Frage anders stellen:

Wann lohnt es sich? Wenn du mehr als 10 Stunden pro Woche codest, ist Claude Code absurd günstig. 100 Euro im Monat, dafür 2 Stunden am Tag gespart – das ist ein Stundensatz von unter 3 Euro. Kein anderes Werkzeug hat dieses Verhältnis.

Wann lohnt es sich nicht? Wenn du weniger als 10 Stunden pro Woche codest, wirst du nie in den Flow kommen. Die Lernkurve frisst den Gewinn. Copilot reicht dann.

Was die Tabelle nicht zeigt:

  • Lernzeit: 10-20 Stunden in den ersten 2 Monaten. Die ersten Prompts sind zu vage oder zu spezifisch – man muss das richtige Maß finden.
  • Context-Pflege: CLAUDE.md, .cursorrules aktuell halten – 30 Minuten pro Woche. Klingt wenig, wird oft vergessen, rächt sich sofort.
  • Review-Overhead: KI-generierter Code braucht aufmerksames Review. Nicht mehr als menschlicher Code – aber man darf nicht nachlässig werden, nur weil „die KI es geschrieben hat”.
  • Sackgassen: Wenn die KI Mist liefert, suche ich inzwischen den Fehler bei mir. Meistens war die Aufgabe nicht klein genug oder der Kontext zu dünn. Mit der richtigen Aufteilung passiert das selten.

Die häufigsten Stolperfallen

1. Blind mergen

KI-generierter Code kompiliert, Tests laufen – aber er enthält subtile Probleme:

// KI hat generiert:
const data = await fetch('/api/users').then(r => r.json());

// Problem: Kein Error Handling. Was bei 500? Bei Timeout?
// Was bei ungültigem JSON? Sieht sauber aus, ist fragil.

Regel: KI-Code reviewen wie den Code eines neuen Teammitglieds. Nicht wie den eigenen.

2. Zu viel Kontext auf einmal

# Schlecht:
> Refactore das gesamte Auth-System. Aktuell nutzen wir
  JWT mit Cookies, wechsle auf Session-basierte Auth mit
  Redis. Passe alle Endpunkte, Middleware und Tests an.

# → Agent verliert den Überblick, macht inkonsistente Änderungen
# Besser:
> Erstelle einen neuen SessionService in src/lib/session.ts.
  Interface: create(), validate(), destroy(). Nutze Redis.

# Dann:
> Erstelle eine Middleware, die Sessions validiert.
  Ersetze die JWT-Middleware in src/middleware/auth.ts.

# Dann:
> Passe die Tests an: ersetze JWT-Mocks durch Session-Mocks.

Kleine Aufgaben, einzeln reviewt, schrittweise migriert. Wie bei menschlichen Entwicklern auch.

3. KI als Ersatz für Verständnis

# Gefährlich:
> "Ich verstehe diese Fehlermeldung nicht. Fix es."

# Besser:
> "Der Test schlägt fehl mit 'Connection refused'.
  Prüfe, ob der Testcontainer gestartet wird,
  bevor der Test läuft."

Je besser du das Problem beschreibst, desto besser die Lösung. Wer nicht versteht, was schiefgeht, kann auch nicht bewerten, ob die KI es richtig gefixt hat.

Was in 6 Monaten wahrscheinlich anders ist

Preisstruktur wird wichtiger als Features. Token-basiert, Flatrate, Usage-Caps — die Modelle unterscheiden sich weniger in der Qualität als in der Abrechnung. Wer das falsche Preismodell wählt, zahlt doppelt. Wer das richtige findet, bekommt einen unfairen Vorteil.

Tools verschmelzen. IDE, Agent und Runtime wachsen zusammen. Die Grenze zwischen „Editor mit KI” und „KI mit Editor” löst sich auf. Die Tool-Wahl wird weniger wichtig als die Fähigkeit, mit Agenten zu arbeiten. Die Trends dazu entwickeln sich schnell.

Unterm Strich

KI-Coding-Tools sind kein Hype. Sie verändern den Arbeitsalltag so grundlegend wie die IDE, wie Git, wie Stack Overflow. Der Aufwand für den Einstieg: ein Nachmittag für die Installation, 2-4 Wochen für die effektive Nutzung.

Aber der eigentliche Shift ist nicht technisch. Er ist kognitiv.

Das ist anspruchsvoller, nicht einfacher. Aber es lohnt sich – vor allem, wenn man die KI proaktiv begleitet: Kontext pflegen, Feedback geben, Konventionen schärfen. Je besser der Agent das Projekt kennt, desto mehr quantitative Prozesse kann er autark lösen. Das Ziel ist nicht, weniger zu arbeiten. Sondern an den richtigen Stellen zu arbeiten.