Das Aufräumen hinter den AI-Rockstar-Entwicklern
(codingwithjesse.com)- Das frühere Problem schwer verständlicher Codebasen, die von „Rockstar-Entwicklern“ hinterlassen wurden, wird durch die Verbreitung von LLM-generiertem Code zu einer Wartungslast für das gesamte Team
- Rockstar-Entwickler führten neue Technologien, neue Paradigmen und neue Architekturen schnell ein und erledigten schwierige Aufgaben zügig, hatten aber wenig Interesse daran, Code zu schreiben, den andere verstehen und gemeinsam bearbeiten können
- LLM-Agenten erzeugen in kurzer Zeit Zehntausende Zeilen Code, ohne sich an frühere Arbeit zu erinnern, und kümmern sich nicht darum, ob dieser zum Gesamtsystem passt oder besser verständlich wird
- Je mehr generierter Code entsteht, desto stärker wächst die Komplexität des Systems, und es kann ein Kreislauf entstehen, in dem man erneut auf LLMs angewiesen ist, um ihn zu verstehen
- Für langlebige Software ist es nötig, LLMs auf die Erzeugung kleiner Codefragmente zu begrenzen, Menschen die Architektur vorgeben zu lassen und diese an die Komplexität des Problems angepasst einfach zu halten
Die Struktur, die Rockstar-Entwickler hinterlassen
- Rockstar-Entwickler stoßen zum Team und bringen starke Vorstellungen zu neuen Technologien, neuen Paradigmen und neuen Architekturen mit
- Sie schreiben große Teile der Kernarchitektur des Unternehmens neu und führen neue Build-Prozesse, Tools und Sprachen ein
- Sie lehnen viele Pull Requests ab und heben damit die Maßstäbe für Teammitglieder an, während andere nicht offenlegen können, ob sie den Code überhaupt verstehen
- Die schwierigsten Aufgaben werden dem Rockstar-Entwickler zugewiesen, und er erledigt sie schneller als alle anderen
- Die übrigen Teammitglieder bewegen sich langsamer, weil sie neue Bibliotheken lernen und sich an die Arbeitsweise des Rockstar-Entwicklers anpassen müssen
- Einige Jahre später verlässt der Rockstar-Entwickler das Team, weil er ein schwierigeres Projekt in einem größeren Unternehmen will
Mit den Folgen umgehen
- Die verbleibenden Teammitglieder übernehmen die Projekte des Rockstar-Entwicklers und fühlen sich vom Code überwältigt
- Der Datenfluss ist kaum nachzuvollziehen und wirkt fast so, als wolle jemand einen Mord vertuschen
- Man beginnt mit einfachen Bugfixes, braucht aber schon eine Woche, um den Code überhaupt auf dem Laptop auszuführen
- Die Hälfte des Codes ist in einer Sprache geschrieben, die man nicht versteht, die andere Hälfte mit Bibliotheken, von denen man nie gehört hat
- Man sagt dem Vorgesetzten, dass der Code neu geschrieben werden muss, doch das wird mit dem Hinweis abgelehnt, dass er vom Rockstar-Entwickler stammt
- Während man sich durch chaotischen Code kämpft, schaut man Stellenanzeigen an und stellt sich vor, selbst zu gehen
Hinter den Rockstars aufräumen
- Viele Teams und Agenturen müssen die Codebasen aufräumen, die solche Rockstar-Entwickler hinterlassen haben
- Der Prozess, eine komplexe Codebasis zu verstehen und zu retten, lässt sich damit vergleichen, eine verknotete Lichterkette so zu entwirren, dass man sie wieder benutzen kann
- Rockstar-Entwickler lieben das Coden, das Lernen und die Nutzung neuer Paradigmen und treiben ihre Fähigkeiten bis ans Limit
- Sie versuchen, möglichst cleveren Code zu schreiben, und konzentrieren sich darauf, sich so schnell wie möglich zu bewegen
- Code zu schreiben, mit dem andere gemeinsam arbeiten können, hat für Rockstar-Entwickler die niedrigste Priorität
Der Auftritt der künstlichen Intelligenz
- In den letzten Jahren haben viele Teams erlebt, wie sie von einer ganzen Armee von Rockstar-Entwicklern überwältigt werden
- Jedes Mal, wenn jemand einen neuen Chat startet, besteht das Risiko, dem Team einen weiteren Rockstar-Entwickler hinzuzufügen
- Agenten erinnern sich nicht daran, was sie gestern getan haben, und erzeugen in wenigen Minuten Zehntausende Zeilen Code
- Agenten treiben den Abschluss von Aufgaben mit einer Geschwindigkeit voran, die für Menschen unmöglich wäre
- Sie kümmern sich nicht darum, ob der erzeugte Code zum restlichen System passt oder ob das System dadurch leichter verständlich wird
- AI verfügt über einen Werkzeugkasten mit Best Practices, die im jeweiligen Kontext unpassend sein können
- Selbst wenn die Komplexität den Nutzen übersteigt, beharrt AI auf übertriebenen Sicherheitsmaßnahmen nach dem Prinzip „doppelt hält besser“
- Bittet man um ein Code Review, erzeugt sie eine lange Liste von Verbesserungen, denen man oft nur schwer zustimmen kann
- Viele haben das Gefühl, für immer zurückzufallen, wenn sie keine LLMs verwenden
- Die Vorstellung, LLMs den gesamten Code schreiben zu lassen, führt am Ende jedoch gerade dazu, zurückzufallen
Hinter Hunderten von AI-Rockstars aufräumen
- Einen chaotischen Haufen generierten Codes aufzuräumen, macht noch weniger Freude, als den Code eines einzelnen Rockstar-Entwicklers zu bereinigen
- Bei Rockstar-Entwicklern gab es zumindest irgendeine Entwurfsabsicht und den Versuch, das Beste zu erreichen
- Ein chaotischer Codehaufen aus Vibe Coding stammt nicht von einem einzigen künstlichen Entwickler
- Stattdessen entsteht eine Codebasis, in der in vielen Chats und Kontexten jeweils nur einzelne Features oder Bugfixes generiert wurden
- Das ähnelt einer Codebasis, die von Hunderten unterschiedlicher Rockstar-Entwickler geschrieben wurde
- In manchen Fällen wird die technische Schuld so groß, dass sie niemals mehr abgetragen werden kann
Langlebige Software bauen
- Es gibt verschiedene Wege, LLMs so einzusetzen, dass sie sich nicht wie Rockstar-Entwickler verhalten
- Menschen können das Engineering führen und LLMs dazu anleiten, jeweils nur kleine Codefragmente zu erzeugen
- Man muss sicherstellen, dass Software so geschrieben wird, dass alle Teammitglieder sie leicht verstehen und bearbeiten können
- Wenn das LLM sich verirrt hat, ohne zu verstehen, was es tut und warum, sollte man das Tempo drosseln
- Es ist in Ordnung, langsamer vorzugehen, um die Qualität der entstehenden Software sicherzustellen
- Es ist in Ordnung, Overengineering zu vermeiden und die Architektur weiter zu vereinfachen, bis sie zur Komplexität des Problems passt
- Manchmal ist es auch in Ordnung, das LLM im Werkzeugkasten zu lassen und den Code direkt selbst zu schreiben
- Handwerkskunst bleibt immer in menschlicher Hand und ist ein Bereich, der sich nicht an Maschinen auslagern lässt
2 Kommentare
Meinungen auf Hacker News
Der letzte Satz, dass Handwerkskunst immer in menschlicher Hand bleiben und niemals an Maschinen ausgelagert werden könne, macht mir etwas Sorgen
Auch in anderen Branchen ist Handwerkskunst nicht ausgestorben, wurde aber von viel billigeren und leichter verfügbaren Alternativen verdrängt. Man kann immer noch handgefertigte Lederschuhe kaufen, aber nur wenige wollen dafür mehr als 1000 Dollar zahlen, und man kann auch Gemälde kaufen, in die Wochen an Arbeit geflossen sind, doch die meisten kaufen Wanddeko und Haushaltswaren bei HomeGoods
Der entscheidende Unterschied ist die Annahme der Wegwerfware, und leider wird auch Software zunehmend wie andere Produkte zu etwas „Wegwerfbarem“. Eine einfache Countdown-App kann man wegwerfen, aber Software, die lang laufende Geschäftsprozesse trägt, sollte man nicht so behandeln
Wenn man sich auf Software-Handwerkskunst fokussiert, kann das Problem wie „etwas, das ich für meinen Zweck brauche“ gegenüber „boutiqueartig, teuer und unnötig“ erscheinen. Tatsächlich sollte es aber um „wartbar und zuverlässig“ gegenüber „wegwerfbar“ gehen
Unabhängig davon, ob dieser Trend großen Modellanbietern wie OpenAI oder Anthropic nützt, ist das nicht der Punkt, den ich hier machen will
Mein billiger Schreibtisch, der in einem flachen Karton kam und den ich selbst mit dem Schraubendreher zusammengebaut habe, wurde zwar im Werk massenproduziert, aber in sein Design könnte weit mehr fachliche Handwerkskunst eingeflossen sein als in ein maßgefertigtes Einzelstück. Das Modell ist: hohe anfängliche Designkosten, danach Massenproduktion bei niedrigen Grenzkosten
Software war im Grunde von Anfang an so. Wenn ich Firefox herunterlade, baut kein Handwerker nur für mich einen Webbrowser; ein CDN-Server in irgendeinem Rechenzentrum kopiert Bytes aus einem Cache
Was AI bedroht, ist der Ersatz von vorab investierter Handwerkskunst, etwas, das in anderen Branchen nie in großem Maßstab passiert ist. Erfolgreicher ersetzt AI bisher günstige „handwerklich“ erzeugte Software, ein Bereich, der faktisch kaum existierte, weil er wirtschaftlich bisher zu unattraktiv war
Deshalb hat Investition in Qualität einen viel größeren Hebel
Ich finde es auch schwer, Software im gleichen Sinn als Wegwerfware zu sehen. Bei einem vorübergehenden Problem kann man den Code wegwerfen und beim nächsten Problem neuen schreiben. Aber bei einem dauerhaften Problem bleibt der Code bestehen
Schrauben waren einst wertvolle, kundenspezifisch gefertigte Güter, und es brauchte enorm viel Zeit und Mühe, auch nur eine gute Schraube herzustellen. Selbst das, was wir heute Maschinenschrauben nennen, konnte nur von sehr geübten Menschen unter extremem Aufwand gefertigt werden
Aber Maschinen können Handwerkskunst übertragen. Wenn man eine wirklich gute Schraube herstellt, überträgt die Maschine deren Qualität auf viele neue Schrauben
Heute sind Schrauben jeder Art und Qualität fast gleichermaßen Verbrauchsgüter, und Schrauben, die früher Tage oder Wochen per Hand herausgearbeitet worden wären, werden heute milliardenfach hergestellt
Ich sehe AI auch wie eine Drehbank ohne Leitspindel. Zuerst muss ich die Schrauben noch selbst von Hand machen, und danach kann ich die Qualität, die ich liefern kann, auf beliebig viele neue Schrauben übertragen. Wenn ich bessere Schrauben herstellen kann, setze ich sie in die Drehbank ein und fertige mehr und bessere Schrauben. Aber grundsätzlich bleibe ich durch die Qualität der Schrauben begrenzt, die ich selbst herstellen kann. Wenn ich nur krumme, unebene, chaotische Stücke hinbekomme, kommt aus der Maschine auch nicht mehr heraus
Softwareentwickler schaffen einzigartiges geistiges Eigentum, sie fertigen keine Software-Einheiten. Das ist eher mit Buchautoren oder Musikern vergleichbar
In Software gibt es kein Äquivalent zur Stückfertigung. Man kopiert einfach Bits
Deshalb bedeutet „Handwerkskunst“ im Softwarekontext, wie viel Sorgfalt man in den Entwurf guter Dinge steckt. Sie wird nicht verschwinden, solange uns die Qualität der Software, die wir benutzen, nicht egal wird, und es gibt derzeit keine Anzeichen dafür, dass wir uns in diese Richtung bewegen
Ein passenderer Vergleich wären vielleicht Ingenieure, die die Fertigungsanlagen einer Schuhfabrik bauen und warten. Sie sind vom Endverbraucher eine Ebene entfernt, aber auch dort steckt eindeutig Handwerkskunst drin
Ich mag es, AI- oder ausgelagerten Code zu reparieren. Letzte Woche habe ich erfahren, dass ein Kunde versucht hatte, ein Tool für seine Abteilung per Vibe Coding zu bauen; das Ergebnis war ein gigantischer Next.js-Müll, der 10 GB RAM zum Kompilieren brauchte, Tausende von Lint-Fehlern hatte und sogar laute Entwicklungslogs im Git-Repository enthielt
Jetzt müssen wir das reparieren, also sind solche Fälle immer wieder kostenlose Leads im Wert von 10.000 bis 50.000 Euro. Wenn man weiß, was man tut, ist es sehr leicht, und wenn nicht, ist es unmöglich. Immer her damit
Ich arbeite im Bereich Incident Response für KMU, und in den letzten Jahren ist die Menge an Arbeit so stark gestiegen, dass ich kaum hinterherkomme, und mein Bankkonto fühlt sich an wie der Goldhaufen eines Drachen
Ich bin völlig dafür, dass Security immer integriert und geplant sein sollte, und ich will damit keinesfalls sagen, dass ich Sicherheitsvorfälle sehen möchte
Aber dass Leute mit vager Fachkompetenz jetzt in einer Stunde Apps herauspumpen können, war für Menschen wie mich ein riesiger Glücksfall
Diese Denkweise kann man so sehen, als würden Menschen Geld in menschliche Spielautomaten schieben
Wenn Kunden zu dir kommen, wollten sie dann von Anfang an Hilfe beim Gang in die Produktion, oder ist das eher der letzte Ausweg, nachdem der ganze AI-Ansatz gescheitert ist?
Ich frage mich auch, ob es typische Arten gibt, wie solche Projekte scheitern, oder ob das Scheitern meist eher subtil verläuft
Ich habe im Leben ein paar Menschen getroffen, die man wirklich außergewöhnlich nennen kann. Solche, bei denen man sich fragt: „Wie kann jemand nur so klug sein?“
Bei wirklich klugen Menschen beobachtet man zwei Dinge, die meist einander ausschließen. Das eine ist, dass sie gar nicht merken, wie klug sie sind. Für sie ist etwas einfach, oder es ist eben ein Thema, das sie kennen, also nehmen sie an, jede Person mit einem Informatikabschluss wisse, erinnere und verstehe das ebenfalls. Wenn ich Freunde sehe, die mühelos kryptografische Mathematik herunterbeten, denke ich manchmal: „Ich habe den Kurs zwar bestanden, aber ich kann nicht behaupten, das Thema, über das du gerade gesprochen hast, wirklich zu beherrschen.“
Das andere sind Menschen, die sich schmerzhaft ständig bewusst sind, dass sie klüger sind als die meisten um sie herum. Manche werden dadurch gemein, andere sind einfach erschöpft davon, von relativ „dummen“ Menschen umgeben zu sein. Mit Letzteren habe ich ein gewisses Mitgefühl. Man muss sich nur vorstellen, wie es wäre, ein Leben zu führen, in dem alles klar, offensichtlich und leicht zu lösen ist, und dann zusehen zu müssen, wie die Menschheit immer wieder törichte Entscheidungen trifft, obwohl die Antwort längst bekannt ist
Wenn Menschen planlos herumirren oder X tun, obwohl dadurch offensichtlich das schlechte Ergebnis -Y entsteht, macht mich das fast wahnsinnig. Die meisten lernen einfach, es nicht laut auszusprechen
Besonders in engen Familienbeziehungen ist das ungesund. Ich sehe so viel davon, dass ich manchmal das Gefühl habe, ich könnte die anderen mit meinem Genörgel umbringen
Aber keiner von ihnen war ein 10x-Entwickler, der einen riesigen Scherbenhaufen hinterlassen hat, den mein Team und ich dann monatelang aufräumen mussten
So sehr man sich auch bemüht, es ist schwer, zu den meisten Menschen eine Beziehung aufzubauen, und für sie ist es besonders schwer, mich zu verstehen. Die Unterschiede in den Lebenserfahrungen sind sehr groß und oft schwer zu überbrücken
Nicht alle Entwickler können die gleiche Produktivität erreichen, aber wenn man sich entscheidet, weiterzudenken und über den kulturellen Durchschnitt hinauszugehen, kann jeder auf seine eigene Weise klüger werden
Die meisten merken nicht, dass sie dazu in der Lage sind
Diese beiden Sätze haben mich angesprochen
„Es war so schwer, dem Datenfluss zu folgen, dass es wirkte, als wolle jemand einen Mord vertuschen“
„Allein den Code auf dem Laptop zum Laufen zu bringen, hat eine Woche gedauert“
Ich dachte immer, ich sei der Einzige, der Schwierigkeiten damit hat, Datenflüsse zu verstehen oder eine vernünftige Entwicklungsumgebung aufzusetzen. Impostor-Syndrom und manchmal auch ein toxisches Umfeld, das auf „Geschwindigkeit“ drängt, helfen dabei natürlich nicht
Es war gut zu erfahren, dass ich nicht der Einzige bin
Claude Code in der CLI hat es viel einfacher gemacht als früher, eine App hochzufahren und beliebige Abhängigkeiten oder Docker-bezogene Probleme zu debuggen. Früher musste ich gleichzeitig die Architektur lernen und auch noch herausfinden, warum es auf meiner Maschine nicht lief
Bei AI-Code ist es noch schlimmer. Denn der wurde einfach als etwas erzeugt, das in dem Moment plausibel aussah
Ich beneide die Leute ein wenig, die hinterher aufräumen müssen. Wenigstens fühlt es sich an, als würde man ein Rätsel lösen
Meine aktuelle Arbeit ist wirklich langweilig. Es sind Aufgaben, die so einfach sind, dass selbst ein Junior sie erledigen könnte, und trotzdem heißt es, man brauche dafür einen Mid-Level-Entwickler. Ich will damit nicht sagen, dass ich für diese Arbeit zu gut bin oder dass Mid-Level-Leute so etwas nicht machen. Ich kann mich nur einfach nicht dazu zwingen, mich für den Code zu interessieren, den diese Firma produziert. Er ist alt, verstaubt und wird nicht einmal von wichtigen Leuten genutzt. Die Kunden haben das Tool irgendwann einmal gekauft und benutzen es nur weiter, weil es so langweilig ist, dass es ihnen nicht wichtig genug ist, es auszutauschen
Mir wurde versprochen, dass bald etwas kommt, das besser zu meiner Erfahrung passt, aber ich kann mir nicht vorstellen, dass in so einer stagnierenden Firma solche Kunden auftauchen
Es überrascht mich nicht, dass diese Firma Kunden und Mitarbeiter verliert. Aber ich muss eine Hypothek abbezahlen. Heute wurde angedeutet, dass mein Vertrag vielleicht nicht verlängert wird, und faktisch war das eine Drohung, für das gleiche Gehalt mehr Verantwortung und mehr Arbeit zu übernehmen
Leider muss ich wohl durchhalten, bis ich eine wirklich interessante neue Stelle finde. Ich brauche nicht einmal besonders viel Geld und an „Wachstum“ bin ich überhaupt nicht interessiert. Ich brauche einfach nur genug, um zu überleben
Dieser Kommentar ist vielleicht ziemlich off-topic, entschuldigt. Ich habe keinen anderen Ort, um das loszuwerden
Ich war L63, aber die Arbeit, die ich machte, hätten auch Leute auf L60~L61 erledigen können, und ich hatte oft das Gefühl, in einem von David Graeber beschriebenen Bullshit Jobs zu stecken. Die Bezahlung war großzügig, aber als die Aktien aus meinem Sign-on-Bonus ausliefen, wurde mir klar, dass ich nur noch wegen der Sicherheit dortblieb
Ich kam mir vor wie einer dieser Ingenieure, die auf der Terrasse eines Hooli-Büros in der Sonne liegen und auf das Vesting ihrer Aktien warten. Nach neun Berufsjahren schien mir das nicht das Beste für meine Karriere zu sein
Ich hatte allerdings keine großen finanziellen Verpflichtungen, deshalb war die Entscheidung für mich viel leichter
Schrottprodukte von Schrottfirmen leben von der Trägheit und Geschmacklosigkeit der meisten Menschen, und Marketer schlagen daraus Profit
Jetzt wird das Ganze noch schlimmer, weil der gesamte Bereich LLM-isiert wird und sich alles um das Hundertfache verstärkt. Es macht Code unwartbar und, schlimmer noch, uns alle dümmer
Ich wünschte wirklich, wir hätten das nie entdeckt
Ich frage mich, ob einfach mehr Überstunden und sinnlose Aufgaben gemeint sind, ob es tatsächlich mehr Möglichkeiten zum Coden gibt oder ob plötzlich erwartet wird, dass du beweist, mehr wert zu sein
Ich will nicht kleinreden, was du erlebt hast. Falls Letzteres gemeint ist, frage ich mich, ob man daraus tatsächlich etwas machen könnte
Die ersten paar Abschnitte haben mich angesprochen. Früher war ich wohl selbst so etwas wie ein Rockstar-Entwickler, aber mir wurde klar, dass das nichts Gutes ist
Vielleicht konnte ich Aufgaben 10-mal schneller erledigen als meine Kollegen. Aber irgendwann wurde mir klar, dass das nicht daran lag, dass ich 10-mal produktiver als normale Menschen war, sondern daran, dass meine Arbeitsweise die normalen Menschen um mich herum auf 1/10 ihrer Produktivität gedrückt hat
Danach habe ich bewusst einen Gang heruntergeschaltet, und für mein gesamtes Leben war das eine positive Veränderung. Ein Teamplayer zu sein bringt in dieser verrückten Branche zwar nicht dieselbe Aufstiegsmobilität, ist aber erstaunlich gut für die psychische Gesundheit
Bei mir lief es meist darauf hinaus, Dinge übermäßig zu abstrahieren oder etwas für Anwendungsfälle zu bauen, die in Wirklichkeit nie eintreten. Deshalb versuche ich, mich immer an YAGNI und KISS zu erinnern, sobald meine Gedanken in Richtung Überabstraktion abdriften
Dieser Beitrag hat einen viel zu geringen Wert
Ich bin mir nicht einmal sicher, was er eigentlich sagen will, und er wirkt einfach wie selbstgefälliges Schulterklopfen
Ein erheblicher Teil dessen, was als die riesigen Mengen an schlechtem Code bezeichnet wird, die ein „Rockstar-Entwickler“ hinterlassen habe, ist in Wirklichkeit das Ergebnis von Komplexität, die sich langsam und über lange Zeit als Reaktion auf geänderte Anforderungen aufgebaut hat
Außerdem glauben Leute oft, sie würden „für die Lesbarkeit refaktorieren“, während in Wirklichkeit häufig eher gilt: „Sie schreiben den Code neu und verstehen ihn dabei erst richtig“
Ich hatte auf mehr Inhalt oder konkrete Beispiele gehofft. 90 % des Artikels bestehen daraus, dass der Autor jammert und das Problem definiert, und im vorletzten Absatz kommt dann eine vage, hingeworfene Lösung. An tatsächlicher Relevanz oder Nützlichkeit ist da fast nichts
Es war wirklich dumm von mir, zwei Production Engineers massiv unter Druck zu setzen, damit sie die Infrastruktur rund um zwei profitable Projekte bauen, die ich entwickelt habe
Ich hätte viel mehr Geld verdienen können, wenn ich alles wie ein 10x-Boss als Spaghetti-Code hingeklatscht und dann zu Anthropic gewechselt wäre, um dort ein Vergütungspaket im neunstelligen Bereich zu kassieren. Wie dumm und noch dümmer ich doch war
Zumindest ist das die Schlussfolgerung, die ich hieraus mitnehme
Geschriebener Code muss in der Regel von jemand anderem als dem Autor gewartet werden. Wenn man also Code schreibt, den niemand versteht, führt das am Ende zu Wartungsversagen
Was man optimiert, kann unterschiedlich sein: für vom Team leicht verständlichen Code, für Geschwindigkeit, für technische Exzellenz usw.
Aber selbst wenn man auf technische Exzellenz optimiert hat, ist es trotzdem ein Scheitern, wenn sonst niemand im Team den Code verstehen kann
Ich habe schon überengineerten Code gesehen
Lobste.rs-Meinungen
Dieser Artikel enthält kaum wirklich brauchbare Ratschläge
Der Ausdruck „Rockstar-Entwickler“ ist immer verdächtig, aber hervorragende Entwickler gibt es tatsächlich. Nur verhalten sie sich nicht so, wie es im Artikel beschrieben wird: Sie arbeiten so gut wie möglich innerhalb der bestehenden Umgebung, verbessern die Codebasis, führen keine ungetesteten neuen Dinge wie Spielzeug ein und hinterlassen beim Weggehen durch Tests, skriptgesteuerte Deployments, Linting usw. einen stabileren Zustand.
AI wirkt hier wie ein Zusatz in der Art, dass dieses Verhalten noch schlimmer werde; das kann sein, aber es scheint noch nicht ausreichend belegt zu sein. Ich habe jahrzehntelang als Berater chaotische Codebasen aufgeräumt, und manchmal lag die Ursache bei Leuten, die es übertrieben haben, viel häufiger aber bei Teams, die keinen besseren Weg kannten. In keinem der Fälle dachte ich je: „Das muss ein Rockstar-/Ninja-/Buzzword-Entwickler gewesen sein“
Offenbar müssen wir jetzt nicht nur den Müll wegräumen, den Chatbots über unsere Köpfe kippen, sondern auch noch hinter Menschen herräumen, denen das egal ist.
Ich warte nur darauf, dass die Blase platzt
Wenn man 2026 zu einer Firma stößt und feststellt, dass dort noch create-react-app verwendet wird, frage ich mich, was dann tatsächlich das empfohlene Verhalten ist. Soll man einfach gar nichts sagen?
Bei einem älteren Projekt hat man eben technische Schulden entdeckt. Die hat jeder. Der beste Weg, Leute davon zu überzeugen, so etwas zu beheben, ist eine geschäftlich nachvollziehbare Begründung. Ist es wirklich ein Risiko, wenn es funktioniert? Welche Priorität hat es im Vergleich zu anderen technischen Schulden? Welche impliziten Risiken nimmt man in Kauf, wenn man nicht upgraded? Wie viel Aufwand erfordert das Upgrade?
Wenn der Aufwand gering ist und die Kollegen es auch wollen, kann man es manchmal einfach tun, ohne vorher um Erlaubnis zu bitten. Am besten funktioniert das allerdings, wenn man die Unterstützung der Betroffenen hat und es die eigene Arbeit nicht behindert. In der ersten Woche im neuen Job ist es vielleicht nicht das Richtige.
Im Allgemeinen ist es fast immer besser, zu fragen und herauszufinden, warum die Dinge aktuell so sind, statt zu sagen, „wie es sein sollte“. Jede Codebasis mit Geschichte ist das Ergebnis von tausenden Entscheidungen, die man noch nicht kennt. Man sollte sich mit Wissen und Empathie wappnen
Ich habe es schon gehasst, als es 2020 noch cool wirkte
Dass „ein Agent sich an nichts erinnert, was er gestern getan hat“, ist ein lösbares Problem. Man kann etwa Memory-Ansätze verwenden. Das ist nicht universell gut, wird aber allmählich besser.
Dass „es dem System egal ist, ob dieser Code gut zum restlichen Code passt“, deckt sich nicht mit meiner Erfahrung. LLM-generierter Code neigt meist dazu, dem ähnlichen Code im relevanten Bereich ziemlich stark zu ähneln. Der Code, den es zur Orientierung gelesen hat, spiegelt sich oft fast direkt wider.
Auch „es kümmert sich nicht darum, ob das System dadurch leichter oder schwerer verständlich wird“ ist lösbar. Man kann das von einem LLM bewerten lassen und den Wert schrittweise senken. Was leicht verständlich ist, ist oft eine nichtdeterministische Eigenschaft eines Systems, weshalb ein LLM paradoxerweise leichter zu messen sein kann als andere Werkzeuge. Man kann etwa in einer neuen Session fragen: „Wie viel des Systems muss man verstehen, um diesen neu hinzugefügten Code zu verstehen?“, und dann darauf optimieren, diesen Umfang zu verkleinern.
Der Teil „AI hat einen Werkzeugkasten mit Best Practices, die hier vielleicht nicht passen“ erinnert mich daran, dass die Arbeit mit AI oft dem Anlernen eines Junior-Entwicklers ähnelt, der mit denselben Idealvorstellungen in ein neues Projekt kommt. Einem Junior erklärt man Dinge verbal und hofft, dass er dieses Wissen behält und anwendet; bei AI dokumentiert man es in Dateien wie AGENTS.md / CLAUDE.md, und dieses Wissen bleibt erhalten.
Dass „man bei einer Code-Review-Anfrage jede Menge Verbesserungsvorschläge bekommt, denen man nicht zustimmt“, ist bei Codex so abgestimmt, dass die Liste klein, prägnant und wertvoll bleibt. Andere Modelle können anders sein, aber letztlich ist auch das ein Problem auf Instruktionsebene. Dinge, die einem wichtig sind, lohnen sich oft zu dokumentieren, und mit AI wird das notwendig
Die Hälfte des Problems im Umgang mit Rockstars ist zwar das Ego, aber selbst ein Rockstar, der von Menschen geschriebenen Code hinterlässt, hatte noch Reflexion und Absicht dahinter.
Dagegen haben „Rockstars“, die nur eine menschliche Hülle über AI ziehen, denselben oder noch größeren Bluff, wissen aber oft nicht einmal über die Hälfte der Probleme wirklich Bescheid, die sie angeblich lösen
Wenn man den funktionalen Programmieransatz so weit wie möglich anwendet und kontextunabhängige Komponenten baut, die sich auf unterschiedliche Weise zusammensetzen lassen, gewinnt man erheblichen Hebel.
Wenn man einzelne Bausteine, die Implementierungsdetails abstrahieren, von Aufgaben trennt, die vom konkreten Kontext abhängen, kann man diese Bausteine leicht neu anordnen, wenn sich Anforderungen ändern oder man einen anderen Ansatz wählt. Außerdem kann man über jedes Teil unabhängig nachdenken, ohne den gesamten Bereitstellungskontext zu kennen, und aus der Art, wie die Teile zusammengesetzt sind, die Logik auf höherer Ebene verstehen.
Funktionale Sprachen bieten eine gute Grundlage für die Arbeit mit LLMs, weil sie einen auf natürliche Weise dazu bringen, Code so zu schreiben, dass der Kontext begrenzt wird. Das hilft sowohl dem Modell als auch menschlichen Nutzern, weil es den Umfang reduziert, der zum Verständnis einer bestimmten Programmfunktion nötig ist