Dieser Vortrag von Matt Pocock beleuchtet die Integration traditioneller Software-Designprinzipien in KI-gestützte Entwicklungsprozesse. Pocock argumentiert, dass der sogenannte "Specs-to-Code"-Ansatz zu massiver Code-Entropie und unwartbarem Spaghetti-Code führt, wenn grundlegende Architekturen vernachlässigt werden. Statt blind zu delegieren, müssen Entwickler auf jahrzehntealtes Ingenieurwissen zurückgreifen – darunter Domain-Driven Design (DDD), Test-Driven Development (TDD) und tiefe Module (Deep Modules). Durch den Einsatz strukturierter KI-Fähigkeiten (Skills) wie dem "Grill-me"-Interview, einer einheitlichen Fachsprache (Ubiquitous Language) und klarer Schnittstellentrennung fungieren Menschen als strategische Architekten, während KI-Agenten die taktische Implementierung übernehmen.
Wichtigste Punkte & Zeitstempel
0:07 Mythos von Specs-zu-Code: Der Glaube, man könne Anwendungen ausschließlich durch Spezifikationen und wiederholtes Generieren von Code (Vibe Coding) erstellen, führt zu steigender Komplexität und unbrauchbarem Code.
2:21 Software-Grundlagen: Klassische Fachliteratur (z. B. von John Ousterhout, Andrew Hunt/David Thomas) definiert schlechten Code über Komplexität und warnt vor Software-Entropie. Guter Code ist essenziell, um von der Leistungsfähigkeit der KI zu profitieren.
4:35 Gemeinsames Design-Konzept ("Grill-me"): Um Kommunikationslücken zu schließen, wurde ein Skill entwickelt, bei dem die KI den Entwickler methodisch mit gezielten Fragen (oft 40 bis 100+) konfrontiert, um ein gemeinsames Architekturverständnis zu erzielen, bevor Code generiert wird.
7:26 Einheitliche Fachsprache (Ubiquitous Language): Inspiriert von Domain-Driven Design (DDD) sorgt eine Markdown-basierte Glossardatei dafür, dass Entwickler und KI dieselbe Terminologie verwenden, was die Verbosität der KI reduziert und die Code-Ausrichtung verbessert.
9:50 Testgetriebene Entwicklung (TDD) & Feedback-Schleifen: LLMs neigen dazu, zu viel auf einmal zu schreiben ("outrunning your headlights"). TDD und strenge Feedback-Schleifen (statische Typisierung, automatisierte Tests) zwingen das System zu kleinen, kontrollierten Schritten.
12:11 Tiefe Module (Deep Modules): Anstelle flacher Module mit komplexen Schnittstellen (viele winzige Bausteine) sollten große, tiefe Module mit einfachen Interfaces und verborgener interner Komplexität gebaut werden, um die Testbarkeit und Übersicht für die KI zu maximieren.
15:04 Strategische vs. Taktische Programmierung: Der Mensch agiert als strategischer Designer ("Design the interface, delegate the implementation"), der die Systemarchitektur kontinuierlich pflegt, während der KI-Agent als taktischer Programmierer auf dem Feld agiert.
Glossar
Specs-to-Code: Ein Entwicklungsansatz, bei dem Code rein aus hochstufigen Text-Spezifikationen via KI generiert wird, ohne den zugrundeliegenden Quellcode manuell zu prüfen oder zu warten.
Vibe Coding: Eine abwertende Bezeichnung für das unkritische Generieren und Ausführen von KI-Code ("Code nach Gefühl"), das häufig zu unstrukturierter Software und technischer Schuld führt.
Code-Entropie: Das physikalische Prinzip, übertragen auf Software, wonach ungepflegte Systeme mit jeder Änderung unstrukturierter, komplexer und fehleranfälliger werden.
Domain-Driven Design (DDD): Ein Software-Entwicklungsansatz, der das Domänenmodell (die geschäftliche Fachlichkeit und Fachtermini) ins Zentrum der Systemarchitektur stellt.
Ubiquitous Language (Allgegenwärtige Sprache): Ein gemeinsames Vokabular aus dem DDD, das von Entwicklern, Fachexperten und KIs gleichermaßen im Code, in der Dokumentation und in Gesprächen verwendet wird.
Test-Driven Development (TDD): Eine Entwicklungsmethode, bei der automatisierte Tests vor dem eigentlichen Programmcode geschrieben werden, um das Design zu erzwingen und die Korrektheit sicherzustellen.
Deep Modules (Tiefe Module): Ein Architekturkonzept nach John Ousterhout, bei dem viel Funktionalität hinter einer simplen, leicht verständlichen Schnittstelle gekapselt ist.
LLM (Large Language Model): Ein auf massiven Textdaten trainiertes neuronales Netz, das menschliche Sprache und Programmcode verarbeiten und generieren kann.