- In einer Entwicklungsumgebung, in der mit AI zusammengearbeitet wird, muss der Mensch die Projektrichtung und Entscheidungen klar definieren, um die Qualität zu sichern
- Durch präzise Dokumentation muss sichergestellt werden, dass sowohl AI als auch andere Entwickler Anforderungen und Einschränkungen klar verstehen
- Durch den Aufbau eines Debug-Systems und eines Code-Review-Prozesses werden Zuverlässigkeit und Validierung von AI-generiertem Code gestärkt
- Mit Kennzeichnung sicherheitskritischer Funktionen, Trennung von Tests und strengen Linting-Regeln werden Stabilität und Konsistenz des Codes sichergestellt
- Durch Aufteilung in Arbeitseinheiten und Minimierung der Komplexität bleibt die Kontrolle über die AI-Codegenerierung erhalten und die Effizienz wird maximiert
1. Eine klare Vision festlegen
- Menschen verstehen die Welt, das Team und das Nutzerverhalten, aber AI hat keine Erfahrung und benötigt daher explizite Anweisungen
- Nicht dokumentierte Entscheidungen im Projekt werden sonst von der AI anstelle des Menschen getroffen
- Architektur, Schnittstellen, Datenstrukturen und Algorithmen sollten vorab besprochen und die Testmethoden definiert werden
- Langfristige und schwer zu ändernde Entscheidungen müssen unbedingt direkt vom Menschen gesteuert werden
2. Präzise Dokumentation pflegen
- Damit AI zweckgerechten Code erzeugen kann, ist die Weitergabe detaillierter Anforderungen unerlässlich
- Da auch andere Entwickler dieselben Informationen an die AI geben müssen, sollten Dokumente in einem standardisierten Format in das Code-Repository aufgenommen werden
- Anforderungen, Einschränkungen, Architektur, Coding-Standards, Design-Patterns usw. detailliert festhalten
- UML-Diagramme, Flussdiagramme und Pseudocode nutzen, um komplexe Strukturen visuell darzustellen
3. Ein Debug-System zur Unterstützung von AI aufbauen
- Es sollte ein effizientes Debug-System eingerichtet werden, damit AI die Funktionalität des Codes schnell überprüfen kann
- Beispiel: Logs aller Knoten eines verteilten Systems sammeln und zusammengefasste Informationen wie „Daten wurden an alle Knoten übertragen“ bereitstellen
- Dadurch lassen sich Kosten für die Ausführung von Befehlen senken und Probleme schneller identifizieren
4. Das Niveau von Code-Reviews kennzeichnen
- Je nach Wichtigkeit des Codes sollte die Intensität der Reviews unterschieden werden
- Beispiel: Hinter einer von AI geschriebenen Funktion einen Kommentar
//A hinzufügen, um anzuzeigen, ob sie von einem Menschen geprüft wurde
- Dieses System erleichtert die Identifikation und Verwaltung nicht überprüften Codes
5. High-Level-Spezifikationen schreiben und selbst testen
- AI kann versuchen, Tests zu bestehen, indem sie mit Mock-Objekten oder hartkodierten Werten trickst
- Um das zu verhindern, sollten Property-based Tests direkt selbst geschrieben werden
- Beispiel: Einen Server neu starten und die Konsistenz der Datenbankwerte überprüfen
- Testcode sollte in einen separaten Bereich ausgelagert werden, damit AI ihn nicht verändern kann
6. Trennung von Schnittstellentests
- AI sollte Schnittstellentests schreiben, ohne den übrigen Codekontext zu kennen
- Dadurch bleibt die Objektivität der Tests erhalten, da sie nicht vom Implementierungs-AI beeinflusst werden
- Auch diese Tests sollten davor geschützt werden, dass AI sie beliebig verändert
7. Strenge Linting- und Formatierungsregeln
- Ein konsistenter Coding-Stil und Linting-Regeln sind essenziell, um Qualität zu sichern und Fehler früh zu erkennen
- Sowohl AI als auch Menschen können so die Codequalität leicht überprüfen
8. Kontextbezogene Code-Agent-Prompts nutzen
- Mit projektbezogenen Prompt-Dateien wie CLAUDE.md lassen sich die anfänglichen Verständniskosten für AI senken
- Durch die Einbindung von Coding-Standards, Design-Patterns und Anforderungen werden Qualität und Effizienz der AI-Codegenerierung verbessert
9. Sicherheitskritische Funktionen identifizieren und kennzeichnen
- Sicherheitssensible Funktionen wie Authentifizierung, Berechtigungen und Datenverarbeitung sollten explizit markiert werden
- Beispiel: Kommentare wie
//HIGH-RISK-UNREVIEWED und //HIGH-RISK-REVIEWED verwenden
- Wenn AI solche Funktionen verändert, sollte der Review-Status automatisch geändert werden
- Entwickler sollten stets prüfen, ob dieser Status korrekt ist
10. Codekomplexität minimieren
- Schon eine unnötige Codezeile belegt Kontextfenster bei AI und erhöht die Kosten
- Die Struktur sollte so einfach wie möglich bleiben, um das Verständnis für AI und Menschen gleichermaßen zu verbessern
11. Probleme durch Experimente und Prototypen erkunden
- Die kostengünstige Eigenschaft der AI-Codegenerierung kann genutzt werden, um verschiedene Lösungsansätze zu erproben
- Mit minimalen Spezifikationen mehrere Prototypen erstellen, um den besten Ansatz zu finden
12. Keine unkontrollierte großflächige Generierung
- Komplexe Aufgaben sollten in kleine Einheiten zerlegt werden, damit AI sie schrittweise bearbeiten kann
- Beispiel: Statt eines gesamten Projekts einzelne Funktionen oder Klassen generieren
- Es muss geprüft werden, ob jede Komponente der Spezifikation entspricht, und
wenn die Komplexität des Codes nicht mehr kontrollierbar ist, muss das Projekt auf den Ausgangszustand zurückgesetzt werden
Noch keine Kommentare.