Andrej Karpathy, der ehemalige Head of AI von Tesla, twitterte Ende Januar: ”The hottest new programming language is English“ und meinte damit die Entwicklung von Programmiercode über Textprompts mit ChatGPT (vgl. auch den Blog: ChatGPT für Softwareentwickler), Copilot (von GitHub), CodeWhisperer (von Amazon) und weitere mehr. Unter diesen Kodierassistenten genießt im Übrigen der CoPilot (GitHub) die höchste Popularität; diese Anwendung ist zudem die erste „Generative AI“ Anwendung, die es auf ein Umsatzvolumen von 100 mUSD bringt.

Kodierassistenten gewinnen an Verbreitung in Entwickler Communities, vor allem bei Juniors. Die zunehmende Nutzung dieser Angebote schlägt sich etwa auch in einem geringeren Zugriff auf die Seite Stackoverflow.com nieder: Lagen die Zugriffszahlen im Juli 2022 noch bei rund 20 Mio. pro Monat, liegen diese eine Jahr später bei nurmehr 10 Mio.; Stack Overflow hat darum bereits 100 Mitarbeiter entlassen. Ein weiterer Indikator des Trends zu Kodierassistenten: Steigende Zahlen von arbeitslosen IT Fachkräften in den USA; das Wall Street Journal formuliert: “Joblessness in IT last month surpassed the national rate of 3.8%, a sign that entry-level IT hiring might be slowing as AI-enabled automation takes hold” (vgl. Artikel IT Unemployment Soars to 4.3% Amid Overall Jobs Growth)

Mal ungeachtet des Hypes um KI-Kodierassistenten: Wo können KI-Kodierassistenten wirklich effizient eingesetzt werden, wo ist Vorsicht geboten?

Die Seite www.techmonitor.ai schafft Orientierung: Im Artikel Your AI coding assistant is a hot mess (vom 29.06.2023) stellen die Autoren einige relevante Erfahrungen zusammen:

Entwickler setzen die Tools gerne für die Code-Überprüfung ein, oder bei der Einarbeitung in neuen Code. Auch bei der Generierung von neuem Code werden die Tools eingesetzt – als Voraussetzung für ein zufriedenstellendes Ergebnis gilt allerdings, dass es sich um weit verbreitete Programmiersprachen handeln sollte – für selten genutzte Programmiersprachen fehle eine ausreichende Datengrundlage zum Trainieren der KI-Modelle.

Wo Vorsicht geboten ist, und auch das lässt sich auf die Datengrundlage zum Trainieren der KI-Modelle zurückführen: Je näher die Programmieraufgabe an Standard-Anforderungen liegt, desto verlässlicher das Ergebnis. Umgekehrt gilt: „They [Anm: the coding assistants] also might not be particularly useful for more ambitious projects. These models are trained on code that already exists, meaning the more novel or specific your use case, the less useful they’ll be.!“

Im Übrigen gilt, dass KI-Kodierassistenten natürlich auch „halluzinieren“. Und da KI-Modelle primär mit Open Source Code trainiert wird (der – wie anderer Sourcecode – auch Bugs enthält), reproduzieren KI-Assistenten eben solche Bugs auch. Das ist problematisch nicht zuletzt im Hinblick auf Cyber Resilienz des produzierten Codes. Hier ist unbedingt eine gute Portion an kritischer Durchsicht erforderlich – aber eben dieses kritische Mindset fehlt bei Entwicklern vielfach: Eine Studie der Stanford University (Dezember 2022) stellt fest, dass Entwickler mit Zugang zu KI-Programmierassistenten oft mehr Sicherheitslücken produzierten als Teilnehmer ohne Zugang, aber gleichzeitig eher glaubten, sie hätten sicheren Code geschrieben.

Unbedingt lesenswert zur Entwicklung eines solchen “kritischen Mindests“ ist folgender (sehr ausführlicher) Artikel: Modern software quality, or why I think using language models for programming is a bad idea (vom 30.03.2023). Dieser Artikel wurde mir vom Senior Entwickler einer Softwarefirma empfohlen, die nach einer Experimentierphase die Nutzung von KI-Kodierassistenten schlichtweg untersagt hatte, da (bei Junior Entwicklern) zu viel ineffizienter Code entstanden ist, der mit viel Zeitaufwand von den Senior Entwicklern wieder bereinigt werden musste.

Der Autor des vorgenannten Artikels hält dabei die Verwendung von Sprachmodellen für die Programmierung insgesamt für eine schlechte Idee; einige der Argumente habe ich bereits aufgeführt, führe diese Argumente aber nochmals auf, auch um die Relevanz dieser Einwände zu unterstreichen:

  • Erstens, Sprachmodelle sind ständig rückwärtsgerichtet und neigen dazu, das Gewöhnliche, Mittlere, Mittelmäßige und Vorhersehbare zu bevorzugen. Sie eignen sich jedoch hervorragend zum Ändern von Texten und sind gelegentlich für Zusammenfassungen nützlich.
  • Zweitens, die Sicherheitsrisiken, die sich u.a. aus fehlerbehafteten Trainingsdaten ergeben. Prompt-Injektionen können dazu verwendet werden, bösartigen Code in das Modell einzuschleusen, während Schwachstellen in den Trainingsdaten ausgenutzt werden können, um die Ausgabe des Modells zu manipulieren.
  • Drittens, Sprachmodelle sind so konzipiert, dass sie auf der Grundlage der Eingaben, die sie erhalten, Ausgaben generieren, ohne die Gültigkeit der Eingaben zu hinterfragen. Dies kann zu unrealistischen Spezifikationen führen, da das Modell einfach Ausgaben auf der Grundlage der empfangenen Eingaben generiert, ohne zu hinterfragen, ob die Eingaben gültig bzw. sinnhaft sind oder nicht.
  • Viertens, Automatisierungsvorurteile führen zu einer unkritischen Bewertung des ausgegebenen Codes, was wiederum eine schlechte Codequalität zur Folge hat [vgl. die Stanford Studie]. „automation bias“ ist dabei die Tendenz, sich zu sehr auf automatisierte Systeme zu verlassen, ohne deren Ergebnisse zu hinterfragen.
  • Fünftens, Sprachmodelle werden auf bestehenden Datensätzen trainiert, die Verzerrungen und veraltete Informationen enthalten können. Dies kann zur Erzeugung von veraltetem Code führen, was dem Open-Source-Ökosystem schaden kann.
  • Sechstens, die Verwendung von Sprachmodellen kann zum wortwörtlichen Kopieren von Open Source führen.
  • Zum Weiterlesen

  • ChatGPT für Softwareentwickler
  • Author

    Der Autor ist Manager in der Softwareindustrie mit internationaler Expertise: Prokurist bei einem der großen Beratungshäuser - Verantwortung für den Aufbau eines IT Entwicklungszentrums am Offshore-Standort Bangalore - Director M&A bei einem Softwarehaus in Berlin.