Farbwechsel für einen Button: Warum Claude ein Migrationsskript schrieb und 50 Lasttests startete

Farbwechsel für einen Button: Warum Claude ein Migrationsskript schrieb und 50 Lasttests startete

KICoding-AgentenClaude

Quellen:HN-Diskussion + Community-Tests

Am 9. September eroberte die Website opusfived.dev die Spitze von Hacker News und sammelte innerhalb eines einzigen Tages 948 Upvotes. Der Aufbau war simpel: Auf der linken Seite eine simulierte E-Commerce-Oberfläche, auf der rechten Seite ein Chatfenster mit einem großen Sprachmodell. Die Aufgabe lautete schlicht: “Färbe den ‘In den Warenkorb’-Button blau ein und lass Claude absolut nichts anderes verändern.”

Tippt man diese Anweisung ein, färbt Claude den Button tatsächlich blau. Doch dabei bleibt es nicht. Unaufgefordert fügt das Modell dem Stylesheet Übergangsklassen für Abwärtskompatibilität hinzu, entwirft ein komplettes Migrationsskript für UI-Komponenten und startet eigenmächtig ein Lastprüfsystem mit 50 Latenztest-Runden, um den neuen Button zu validieren. Viele Leser hielten das für eine amüsante Anekdote über vermeintlich naive KI. In Wahrheit offenbart der Vorfall jedoch die tief sitzenden Verhaltensmuster moderner Code-Vervollständigungswerkzeuge – und demonstriert drastisch das Scheitern von Handlungsgrenzen im Software-Engineering.

Migrationsskripte für ein Projekt ohne Nutzer

Man stelle sich ein brandneues Projekt vor, das vor gerade einmal zwei Stunden initialisiert wurde und noch keinen einzigen echten Nutzer zählt. Der Produktmanager bittet darum, ein zentrales Datenfeld umzubenennen. Ein menschlicher Entwickler nutzt die globale Suchen-und-Ersetzen-Funktion seiner IDE: Zehn Sekunden Arbeit, erledigt, kein Gedanke an Rollback-Szenarien.

In der Logik moderner KI-Modelle funktioniert die Welt jedoch vollkommen anders. Der Hacker-News-Nutzer MisterMunchkin schilderte seine praktische Erfahrung: Er bat das Modell, ein Basisfeld umzubenennen. Das Modell führte zwar den neuen Namen ein, behielt den alten Code jedoch aus defensiven Programmierreflexen bei und hinterlegte den bisherigen Feldwert fest codiert in den API-Schnittstellen. Die Begründung klang vordergründig hochprofessionell: Man müsse schließlich bedenken, dass unbekannte externe Systeme das alte Feld weiterhin über die API abrufen könnten.

opusfived.dev Challenge-Interface Abbildung: Challenge-Oberfläche auf opusfived.dev. Quelle: opusfived.dev

Dieses übertriebene Verantwortungsbewusstsein für Abwärtskompatibilität bei unbedeutenden Neuentwicklungen ist eine verbreitete Schwäche führender KI-Modelle. Auch der Entwickler dudeinhawaii verzweifelte an einem ähnlichen Verhalten: Er wollte lediglich eine schnelle Skizze einer Prototyp-Seite erstellen lassen. Stattdessen richtete das Modell im Hintergrund ein hochverfügbares Monitoring-Framework ein und unterzog die erste Entwurfsversion 50 Latenzprüfungen. Dem Entwickler blieb nichts anderes übrig, als wiederholt auf den Abbruch-Button zu hämmern. Ein solcher Prototyp wird im realen Zyklus dutzende Male verworfen – die Fähigkeit des Modells, den tatsächlichen Reifegrad eines Projekts einzuschätzen, tendiert schlicht gegen null.

Warum Refactoring oft sparsamer ist als Flickschusterei

Wenn menschliche Ingenieure mit geänderten Anforderungen konfrontiert werden, kalkulieren sie im Kopf Aufwand und Ertrag. Ein Weg besteht darin, Patch auf Patch auf die bestehende Codebasis zu türmen. Der andere Weg geht von den Grundprinzipien aus und bewertet den Aufwand für einen sauberen Neuanfang. Der viel beachtete Kommentator stillpointlab wies auf das Defizit der Werkzeuge hin: Erfahrene Entwickler wägen beide Ansätze gegeneinander ab. Ein radikales Refactoring aus erster Hand erfordert oft weit weniger Arbeitszeit als das vorsichtige Herumdoktern an Altlasten.

Großen Sprachmodellen fehlt bislang diese multidimensionale Abwägungskompetenz. Durch das Training an gewaltigen Mengen an Open-Source-Code haben sie eine starke Abhängigkeit entwickelt: Sie neigen dazu, jeden vorhandenen Code als unumstößliche Tatsache zu behandeln. Verlangt man eine Änderung an Funktion A, mobilisiert das Modell seine Rechenleistung aus Sorge vor Auswirkungen auf Nutzer von Funktion B. Am Ende liefert es weitschweifigen, kompromissbehafteten Defensivcode.

SzenarioEntscheidungsweg des IngenieursAusführungslogik des KI-ModellsTechnische Konsequenz
Frühe PrototypphaseKernlogik schnell zum Laufen bringenVollständiges Monitoring & Lasttest-System aufbauenKernfunktion versinkt in Bergen von Infrastrukturcode
Datenfeld umbenennenGlobales Suchen & ErsetzenAltfeld beibehalten & Kompatibilitätsschicht schreibenCodebasis bläht sich auf, Wartungskosten steigen rasant
Legacy-Module überarbeitenOptimale Architektur neu entwerfenAltes Verhalten einfrieren, per Verzweigungen patchenKomplexität explodiert, Modul wird zur unlesbaren Blackbox

In schnell iterierenden Projekten wird diese Logik zur regelrechten Schuldenfalle für technische Altlasten. Statt beherzt zu vereinfachen, wählt das Modell das scheinbar risikofreie Anfügen weiterer Schichten. Die nutzlose Systemkomplexität erdrückt mühelos die Wartbarkeit des gesamten Projekts.

Den Zwang zur Abwärtskompatibilität explizit aufheben

Da das Modell nicht zwischen einer unternehmenskritischen Produktionspipeline und harmlosem Spielwiesencode unterscheiden kann, müssen Entwickler ihm manuell feste Leitplanken setzen. Es entsteht die kuriose Situation, dass menschliche Ingenieure sich vor dem Übereifer ihres elektronischen Assistenten schützen müssen.

Der Community-Entwickler theshrike79 präsentierte einen pragmatischen Lösungsansatz: Er legte im Projektstammverzeichnis eine unübersehbare Datei namens PROJECT.md an und schrieb ganz oben in Großbuchstaben: “Dies ist ein Ein-Personen-Projekt. Keine Abwärtskompatibilität berücksichtigen, keine defensive Programmierung, keine Unit-Tests schreiben.”

opusfived.dev Startseite Abbildung: Einstiegsseite von opusfived.dev. Quelle: opusfived.dev

Sobald dem Modell diese erdrückende Verantwortungslast schriftlich abgenommen wurde, änderte sich sein Verhalten schlagartig: Es agierte leichtfüßig, fokussiert und effizient. Bei großen Sprachmodellen ist eine solche explizite Enthaftungserklärung im Projektstamm unverzichtbar. theshrike79 formulierte eine treffende Analogie: “Es ist, als hätte man einen hochintelligenten Computer im Haus, müsste aber jeden Tag Zäune errichten, damit er nicht ausbricht und ungefragt das ganze Haus umbaut.”

Hochgradig zielorientiertes Training spaltet die Lager

Dieser Übereifer hat zu einer Spaltung innerhalb der Entwickler-Community geführt. Eine Fraktion, die absolute Kontrolle verlangt, kehrte modernen Modellen den Rücken und griff auf ältere Codex-Engines oder schlankere Werkzeuge zurück. Diese bestechen durch nüchterne, zurückhaltende und chirurgisch präzise Ausführung – altgediente Programmierer gewannen damit die Kontrolle über ihren Code zurück.

Entwickler mit Blick auf das Modelltraining sehen jedoch die Kehrseite. Nutzer genxy formulierte den Gegenstandpunkt: Der aktuelle Übereifer der Modelle sei die zwangsläufige Folge eines auf hohe Problemlösungskompetenz ausgerichteten Trainings (High-Gain-Training). Wären die Modelle im Training nicht auf proaktives Handeln getrimmt worden, müssten menschliche Entwickler bei wirklich anspruchsvollen, komplexen Projekten jeden einzelnen Denkschritt mühsam anstoßen. Wer den Komfort schlüsselfertiger Lösungen schätze, müsse gelegentliche Ausreißer und redundanten Code in Kauf nehmen. Der Streit dreht sich im Kern darum, wie viel Kontrolle man an die KI abtreten will.

Das Ziehen von Grenzen wird zur Kernkompetenz

Wenn wir darüber schmunzeln, dass hochentwickelte Modelle wegen eines blauen Buttons eine halbe Softwarearchitektur hochziehen, erleben wir gleichzeitig eine fundamentale Neuordnung des Programmierens. Ein Modell kann die geschäftlichen Prioritäten nicht kennen – es hat nie die existenzielle Notwendigkeit erlebt, Codequalität zugunsten des Überlebens eines Produkts zu opfern.

Die Episode verdeutlicht den auffälligsten Schwachpunkt KI-gestützter Entwicklung: einen überhitzten inneren Antrieb. Mit gewaltiger Rechenleistung steht die KI bereit, für einen unausgegorenen Entwurf eine Mikrodienst-Architektur für die Ewigkeit zu errichten. Der Schwerpunkt menschlicher Ingenieurskunst verschiebt sich deshalb grundlegend: Er liegt künftig weniger darin, “wie man korrekten Code schreibt”, sondern darin, “wie man verhindert, dass Systeme in nutzlosem Code ertrinken”.

Aufgaben vertrauensvoll an die Maschine zu übergeben, ihr aber unmissverständlich klarzumachen, wo die Grenzen liegen – damit die KI versteht, wann echtes System-Engineering gefragt ist und wann einfach nur ein Button blau gefärbt werden soll: Das ist die entscheidende neue Pflichtübung für das Programmieren im Zeitalter der KI.

Referenzen:

  • HN-Diskussion (item?id=49623754)