Im Zeitalter, in dem AI Code ausschüttet, zeigt sich bei Ebbe, wer nackt geschwommen ist
(evan-moon.github.io)Kernaussagen
- Nur drei Jahre nach dem Erscheinen von ChatGPT verlagert sich der Alltag von Entwicklerinnen und Entwicklern von der „Code-Erstellung“ zur „Prüfung von AI-Ausgaben“
- Die Rolle von Entwicklerinnen und Entwicklern verschwindet nicht, sondern der Schwerpunkt verlagert sich eher vom Code-Schreibenden hin zum Reviewer und Freigabeverantwortlichen
- AI ist keine Rechtsperson und kann keine Verantwortung tragen; auch Regulierungen wie der EU AI Act werden in Richtung einer stärkeren Zurechnung von Verantwortung an Menschen verschärft
- Die zentralen Fähigkeiten im AI-Zeitalter sind nicht Prompt-Techniken, sondern Dinge wie das Vorhersagen langfristiger Änderungskosten, das Beurteilen von Abstraktionen und das Verbalisieren impliziten Wissens — also im Wesentlichen dieselben Fähigkeiten, die auch heute schon gute Entwickler auszeichnen
- Mit Fred Brooks’ Konzept von akzidenteller Komplexität vs. essenzieller Komplexität erklärt: AI löst nur akzidentelle Komplexität, während die essenzielle Komplexität einer Domäne weiterhin menschliches Urteilsvermögen erfordert
- Die Halbwertszeit von Tool-Kompetenz (Prompt Engineering usw.) ist an den Austauschzyklus von Tools gebunden, während Designentscheidungen und die Fähigkeit, implizites Wissen zu verbalisieren, so lange relevant bleiben, wie die essenzielle Komplexität von Software existiert
Ausführliche Zusammenfassung
Drei Jahre nach ChatGPT
- Als ChatGPT Ende 2022 erschien, war nicht absehbar, dass sich die Entwicklung in diesem Tempo vollziehen würde
- Die bisherige Definition eines Entwicklers: jemand, der „natürlichsprachliche Anforderungen analysiert → entwirft → selbst implementiert“
- Heute nimmt „Kontext an die AI übergeben → generierten Code lesen, korrigieren und erneut anfordern“ einen erheblichen Teil des Tages ein
- AI-Coding-Agenten sind längst über das Niveau einfacher Assistenz hinaus und erreichen auf Funktions- oder Modulebene bereits ein Niveau, das sich kaum noch von menschlich geschriebenem Code unterscheiden lässt
Vom Verfasser zum Entscheidungsträger
- Die Codeproduktion verlagert sich von „Code direkt schreiben“ zu „über Code urteilen“
- „Urteilen“ bedeutet nicht nur zu prüfen, ob die AI-Ausgabe der Absicht entspricht, sondern zu verifizieren, ob geschäftliche Intentionen korrekt in technische Implementierung übersetzt wurden
- Zentral ist die Frage: „Wer trägt die Verantwortung, wenn durch von AI geschriebenen Code ein Zahlungsfehler entsteht?“
- Da AI keine Rechtsperson ist, tragen die Entwickler und die Organisation, die den Code reviewen und freigeben, die Verantwortung
- Der 2024 in Kraft getretene EU AI Act verpflichtet in Hochrisikobereichen wie Medizin, Finanzen und Infrastruktur zu menschlicher Aufsicht über AI-Systeme
- Verantwortung bei Unfällen mit autonomen Fahrzeugen → Hersteller und Fahrer; bei von der FDA zugelassener medizinischer AI → die finale Entscheidung liegt beim Arzt; beim Flash Crash 2010 → reguliert wird der Akteur, der den Algorithmus betreibt
- Je weiter die Automatisierung fortschreitet, desto weniger verschwimmt die Verantwortungsstruktur; vielmehr wird sie tendenziell noch klarer dem Menschen zugerechnet
Geforderte Fähigkeiten von Entwicklern im AI-Zeitalter
① Fähigkeit, langfristige Änderungskosten vorherzusagen
- AI ist darauf optimiert, „funktionierenden Code“ zu erzeugen (Reproduktion der häufigsten Muster aus den Trainingsdaten)
- Code, der sofort funktioniert, und Code, der auch in sechs Monaten noch leicht wartbar ist, folgen völlig unterschiedlichen Maßstäben
- Die Kosten schlechten Designs entstehen nicht beim Schreiben des Codes, sondern dann, wenn Änderungen nötig werden
- Auf LinkedIn häufen sich Beiträge wie „mit AI gebaut, aber wegen schwieriger Wartung Entwickler eingestellt“ oder „Projekt eingestellt, weil sich keine Funktionen mehr anbauen ließen“
② Fähigkeit, Code aus mehreren Perspektiven zu bewerten
- Über funktionale Korrektheit hinaus (per Tests überprüfbar) müssen zugleich strukturelle Qualität, Performance-Auswirkungen und Sicherheitsaspekte berücksichtigt werden
- Je schneller AI Code erzeugt, desto leichter gerät das Gleichgewicht zwischen Produktionsgeschwindigkeit und Review-Kapazität aus der Balance
- Als Menschen noch alles selbst schrieben, gab es eine physische Obergrenze für die produzierte Code-Menge; AI erzeugt dagegen in Sekunden Hunderte Zeilen
- Wenn Review-Kriterien, parallele Review-Prozesse und automatisierte Gates unzureichend sind, häuft sich technische Schuld noch schneller an
- Viele Unternehmen spüren nach der Einführung von AI keine Produktivitätssteigerung, weil zwar die Codeproduktion schneller wurde, das Reviewen von AI-Code aber zum Flaschenhals wurde
③ Abstraktionsfähigkeit
- Auch AI kann Interfaces definieren, Klassen trennen und Module aufteilen — und macht das formal oft gut
- Der entscheidende Unterschied: Die Abstraktion der AI basiert auf statistischen Mittelwerten, die Abstraktion erfahrener Entwickler auf Trade-off-Entscheidungen unter begrenzten Ressourcen und unsicherer Zukunft
- Das Gefährliche an von AI erzeugtem Code: Er sieht oberflächlich gut aus — Dateien sind passend aufgeteilt, Benennungen folgen Konventionen, Muster wirken vertraut
- Das Problem zeigt sich erst, wenn Änderungen nötig werden: „Man will nur eine weitere Zahlungsmethode hinzufügen und merkt erst dann, dass man an der vermeintlich sauberen Struktur gleichzeitig an allen Ecken schrauben muss“
- Frontend-Beispiel: AI packt Datenabruf, State-Management und UI-Rendering in eine einzige riesige Komponente — oder baut umgekehrt für ein simples Diagramm drei Custom Hooks plus einen Context Provider
④ Fähigkeit, implizites Wissen explizit zu machen
- Um der AI präzise Anweisungen geben zu können, muss man das Gefühl „Irgendetwas stimmt hier nicht“ in konkrete Sprache übersetzen können wie „Diese Funktion hat zwei Verantwortlichkeiten“
- Entscheidend sind nicht formale Prompt-Techniken wie few-shot oder chain-of-thought, sondern die Fähigkeit, klar zu definieren, was gebaut werden soll, und zu beurteilen, welcher Kontext wichtig ist und weitergegeben werden muss
- Lebensdauer von Tool-Kompetenz: an Tool-Wechselzyklen gebunden (
jQuery→React,Webpack→Vite) - Lebensdauer von Designurteilen und der Fähigkeit, implizites Wissen zu verbalisieren: relevant, solange die essenzielle Komplexität von Software existiert
Die Notwendigkeit bewusst geplanter Übung
- Man sagt zwar „Konzentriere dich auf das, was Tools nicht können“, aber paradoxerweise sinken genau dafür die Gelegenheiten zum Lernen
① Zwei Punkte, die man nicht an AI delegieren sollte: Design und Review
- Das Design vor dem eigentlichen Codieren: Wenn man vor dem Prompt zuerst Interfaces und Verantwortungsgrenzen definiert, kann man die AI-Ausgabe mit den eigenen Designentscheidungen vergleichen
- Sich PR-Reviews von AI erledigen zu lassen und bei unauffälligem Ergebnis einfach freizugeben = „im Sportunterricht auf den Sportplatz gehen, nur auf der Bank sitzen und wieder reinkommen“
② Zeit, bewusst selbst zu implementieren
- Ein Gefühl für Design entsteht nur, wenn man den Schmerz der Implementierung kennt. Schmerz, den man nie erlebt hat, bleibt nicht als Intuition erhalten
- Für Junior-Entwickler ist das Reviewen von AI-generiertem Code ungefähr so, als würde man „jemanden, der gerade erst Autofahren lernt, die Entscheidungen eines autonomen Fahrzeugs bewerten lassen“
- Künftige Coding-Fähigkeit: nicht tägliche Routinearbeit, sondern Training, um Urteilsvermögen zu erhalten (der Weg zur „Reviewer-Lizenz“)
③ Üben, das „Warum“ in Worte zu fassen
- Bei „Irgendwie komisch“ zu stoppen ist Intuition; bis zu „Diese Funktion hat zwei Verantwortlichkeiten“ zu kommen, ist Sprache
- Wenn von AI erzeugter Code funktioniert, sollte man dort nicht stehenbleiben, sondern sich angewöhnen zu fragen: „Warum wurde diese Struktur gewählt?“ und „Welche Trade-offs hätte eine andere Struktur?“
Am Ende hat sich das Wesen nicht verändert
- Fred Brooks (1986): akzidentelle Komplexität (Grenzen der Werkzeuge) vs. essenzielle Komplexität (im Problem selbst angelegt)
- Was AI löst, ist akzidentelle Komplexität — Boilerplate, wiederkehrende Muster, Syntaxfehler
- Essenzielle Komplexität (Unklarheit in Business-Anforderungen, das Austarieren widersprüchlicher Designziele, Unsicherheit über künftige Änderungen) verschwindet auch mit fortschreitender AI nicht
- Solange der Mensch Träger von Urteil und Verantwortung bleibt, verändert sich auch das Wesen der dafür nötigen Fähigkeiten nicht
- Je stärker die Codeproduktion automatisiert wird, desto stärker tritt die Urteilskraft zur Prüfung der Ergebnisse in den Vordergrund
Noch keine Kommentare.