17 Punkte von GN⁺ 2025-12-31 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Da KI-Agenten ins Zentrum der Code-Erstellung rücken, werden bisher „optionale“ Best Practices wie Tests, Dokumentation und statische Typisierung nun zu Pflichtbestandteilen
  • 100 % Code Coverage wird eingefordert, damit jede Codezeile tatsächlich geprüft und durch ausführbare Beispiele untermauert wird
  • Verzeichnisstruktur und Dateibenennung werden klar gestaltet, damit LLMs sich leichter durch die Codebasis bewegen können; empfohlen werden klein granulare Dateien
  • Schnelle, ephemere und nebenläufig nutzbare Entwicklungsumgebungen werden aufgebaut, damit mehrere Agenten parallel arbeiten können
  • Statische Typsysteme und automatisierte Quality-Management-Tools sind entscheidend, um ein Code-Ökosystem zu erhalten, dem KI vertrauen kann

KI und die Notwendigkeit von „gutem Code“

  • Lange Zeit galten Tests, Dokumentation, kleine Module und statische Typisierung als Maßstab für guten Code, wurden in der Praxis aber oft ausgelassen
  • Da KI-Agenten ihren Code nicht selbst zuverlässig aufräumen können, sind diese Best Practices nun zwingend notwendig
  • Damit Agenten nicht in die falsche Richtung laufen, sind klare Guardrails und ihre konsequente Durchsetzung unverzichtbar
  • Mit robusten Guardrails konvergieren LLMs nur auf den richtigen Pfad; in unvollständigen Umgebungen verstärken sie dagegen Probleme

100 % Code Coverage

  • Teams machen 100 % Code Coverage zur Pflicht, nicht nur zur Bug-Vermeidung, sondern um das Verhalten jedes von Agenten geschriebenen Codes zu verifizieren
  • Bei 95 % oder 99,99 % Coverage bleibt unklar, woher ungetesteter Code stammt; bei 100 % lassen sich alle nicht verifizierten Zeilen eindeutig identifizieren
  • Coverage-Reports dienen als To-do-Liste für Tests, und ein LLM muss bei Code-Änderungen zwingend ausführbare Beispiele liefern
  • Dieser Ansatz hat Nebeneffekte wie das Entfernen unerreichbaren Codes, das Explizitmachen von Edge Cases und effizientere Code Reviews

Namespaces und Dateistruktur

  • Agenten erkunden die Codebasis über das Dateisystem, daher fungieren Verzeichnisstruktur und Dateinamen als wichtige Schnittstelle
  • Ein klarer Pfad wie ./billing/invoices/compute.ts vermittelt deutlich mehr Information als ./utils/helpers.ts
  • Bevorzugt werden sollten kleine, klar definierte Dateien, damit LLMs den gesamten Dateiinhalt in den Kontext laden können und Performance-Einbußen vermieden werden
  • Diese Strukturierung führt zu höherer Suchgeschwindigkeit und Genauigkeit der Agenten

Schnelle, ephemere und nebenläufige Entwicklungsumgebungen

  • Statt einer einzelnen klassischen Entwicklungsumgebung verlagert sich agentenbasierte Entwicklung hin zu einer Form, in der mehrere Prozesse parallel verwaltet werden
  • Fast: Tests und Verifikationsschritte müssen schnell laufen; das Team optimiert darauf, mehr als 10.000 Assertions in unter einer Minute abzuschließen
    • Geschwindigkeit wird durch starke Parallelisierung, harte Isolation und eine Caching-Schicht für Third-Party-Aufrufe erreicht
  • Ephemeral: Mit dem Befehl new-feature <name> wird innerhalb von 1 bis 2 Sekunden eine neue Umgebung erzeugt, automatisch konfiguriert und der Agent gestartet
    • Wenn manuelle Einrichtung nötig ist, sinkt die Nutzung drastisch; vollständige Automatisierung ist daher zentral
  • Concurrent: Damit mehrere Entwicklungsumgebungen gleichzeitig laufen können, sind Konfliktvermeidung bei Ports, DBs, Caches usw. erforderlich
    • Die Isolation erfolgt per Docker oder über umgebungsvariablenbasierte Konfiguration

End-to-End-Typsysteme und automatisiertes Quality Management

  • Möglichst viele Best Practices werden automatisiert, um die Freiheitsgrade von LLMs zu verringern und eine konsistente Qualität zu sichern
  • Automatische Linter und Formatter werden strikt konfiguriert, sodass bei jedem abgeschlossenen Arbeitsschritt des LLM automatisch Korrekturen angewendet werden
  • Empfohlen wird die Nutzung statisch typisierter Sprachen, insbesondere starker Typsysteme rund um TypeScript
    • Mit UserId, WorkspaceSlug und SignedWebhookPayload sorgen aussagekräftige Typnamen dafür, dass die Codeabsicht klar ausgedrückt wird
  • Über OpenAPI wird die Typkonsistenz zwischen Frontend und Backend erhalten
  • Das Typsystem und Trigger von Postgres sichern die Datenintegrität, während Kysely einen typsicheren Client erzeugt
  • Auch alle Third-Party-Clients sollten präzise Typdefinitionen haben oder entsprechend gekapselt eingesetzt werden

Fazit: Neudefinition von Codequalität im KI-Zeitalter

  • Agenten sind nicht ermüdende und hervorragende Coder, aber ihre Leistung hängt von der Qualität ihrer Umgebung ab
  • „Guter Code“ ist keine Option mehr, sondern Voraussetzung dafür, dass KI korrekt arbeiten kann
  • Das anfängliche Setup mag wie eine Belastung wirken, ist aber eine längst überfällige notwendige Investition
  • Mit Unterstützung der Entwicklungsleitung sollte das Ziel sein, eine KI-freundliche Codebasis aufzubauen

Noch keine Kommentare.

Noch keine Kommentare.