GitHub Copilot
Ist GitHub Copilot ein nützlicher Assistent oder doch eher rausgeschmissenes Geld und eine Arbeitsbehinderung? Meine persönliche Erfahrung damit.
Ganz grundsätzlich vorweg. Ich stehe diesen Systemen ausgesprochen kritisch gegenüber. Entsprechend ist dieser Artikel auch einzusortieren. Es gibt sicherlich Personen, die das deutlich optimistischer sehen als ich.
Nach mehreren Monaten mit GitHub Copilot ist mein Urteil sehr durchwachsen. Da der Preis von Copilot aber relativ niedrig angesetzt ist und es hervorragend zu integrieren ist, ist das aber nicht zwingend ein KO-Kriterium. Das geht aber auch mit anderen Lösungen, wenn man die schon nutzt und es geht grundsätzlich auch mit hausgemachten Lösungen. Letztere haben allerdings in der Regel den Nachteil, dass man da nur Modelle bis zu einer bestimmten Größe laufen lassen kann, denn selbst eine 4090 macht halt bei knapp über 20GB dicht und die Modelle, die deutlich darunter liegen haben häufig sehr viel mehr Schwächen und sind dann entsprechend nur sehr bedingt nützlich.
Was Copilot richtig gut kann, wenn es den Code einmal intus hat, ist Autocomplete auf Steroiden. Man muss nur aufpassen, dass man nicht anfängt auf das System zu warten und dabei habe ich mich mehrfach erwischt. In den meisten Sprachen und gut bekannten Frameworks ist auch das Erstellen von Skeletten kein größeres Problem. Allerdings sind hier die üblichen Verdächtigen Tools hier in der Regel deutlich besser am Start und auch schneller.
Bei diesen Systemen ist die Frage aber wohl eher wie das Ding programmieren kann. Kann es mich ersetzen oder zumindest unter Aufsicht zum Schulterblicker degradieren? Und die Antwort darauf ist ein ganz klares nein. Sofern man als Schulterblicker nicht durchdrehen will. Und hier liegt auch das große Risiko dieser Systeme im Allgemeinen.
Sie können erfahrene Entwickler bei eher lästigen Aufgaben ganz gut unterstützen. Es hängt recht konkret davon ab was man gerade macht. Für Anfänger sind diese Systeme aber brandgefährlich, denn sie machen sehr viele Fehler, die man sehen muss. Das liegt teilweise auch an der Art und Weise wie diese Systeme funktionieren.
LLMs werden nicht kontinuierlich aktualisiert. Für Copilot und Co gilt dasselbe wie für ChatGPT und alle anderen auch. Copilot selbst nutzt auch mehrere Systeme andere Anbieter. U.a. auch ChatGPT. Die Modelle werden trainiert und dann werden sie genutzt. Man kann hier nachsteuern aber nur sehr eingeschränkt. D.h. das Data Cutoff Datum (das Datum ab dem keine Informationen vorhanden sind) liegt in der Regel Monate in der Vergangenheit. ChatGPT-4o z.B. ist aus dem Mai 24. Das Knowledge cutoff date ist aber im Oktober 23. GPT-4 Turbo ist April 23 und GPT-4 ist aus dem September 21. Etwaige Updates bei den älteren Systemen hier nicht berücksichtigt.
Hieraus ergeben sich offensichtliche Probleme, die insbesondere bei der Programmierung sehr relevant sind. Wer diesen Systemen mehr Freiraum lässt - insb. als Anfänger - der läuft sehr schnell Gefahr, dass sie hier veraltete Bibliotheken nutzen, die entweder ganz grundsätzlich nicht mehr verwendet werden sollten oder gerne auch mal solche Versionen nutzt, die bekannte Sicherheitslücken haben.
Ich habe vor ein paar Wochen Code vorgesetzt bekommen bei dem man sofort gesehen hat, dass der aus einer KI kam. Unter anderem eben auch an den 19 sicherheitsrelevanten Updates und ganz grundsätzlich der bizarren Auswahl an Versionen, die überhaupt keinen Sinn machen. Diese bizarren Entscheidungen, die nicht wirklich erklärbar sind ergeben sich aus dem Umstand, dass diese Systeme in der Vergangenheit existieren.
Und das ist ein enormes Risiko für Anfänger, die das nicht auf dem Schirm haben oder Personen, die grundsätzlich nicht wissen wie diese Systeme funktionieren. Mit veraltetem Code kommen dann nicht nur häufig Sicherheitsprobleme sondern auch ganz grundsätzliche Späßchen wie "den Scheiß nutzt heute keiner mehr". Dies ist insb. bei Sprachen und Frameworks ein Problem, die (noch) eine hohe Frequenz haben. Viele Rust und Golang Bibliotheken z.B. Bei sowas wie PHP und Symfony oder Laravel eher weniger ein Problem. Aber auch hier muss man bei Versionssprüngen der Frameworks die Augen weit offen haben.
Das andere große Problem ist falscher Code, der funktioniert. Und das ist ein richtig böses Problem. Ich hatte vor geraumer Zeit mal einen Test mit Dijkstra gemacht. Ein Algorithmus, um den kürzesten Weg zwischen Knoten im System zu finden. Da habe ich Copilot mal in mehreren Sprachen rangelassen und mir den Spaß dann angesehen.
Richtig war es in meinen Tests nur in PHP, was mich überrascht hat, denn PHP ist hier nicht häufig zwingend oben in der Liste der üblichen Verdächtigen zu finden. In C und Rust weigerte sich der Compiler und bei Golang gab es ein offensichtliches Problem im Code. Ausgerechnet Python aber hat Code produziert, der funktionierte und auf den ersten Blick auch ziemlich korrekt aussah. War es aber nicht. Und das ist brandgefährlich, denn hier wird Code produziert, der ohne Probleme läuft aber eben nicht richtig. Der Fehler war so subtil, dass ich mir das gründlich ansehen musste, um es zu finden.
Copilot und Co tatsächlich selbständig Code schreiben zu lassen ist ein Risiko, dass man nicht eingehen sollte und auch häufig nicht förderlich für die Produktivität ist. In vielen Fällen ist da viel zu viel Nacharbeit oder Austausch nötig, um das vernünftig zu machen. Häufig ist auch viel zu viel Kommunikation mit dem System nötig, um es dahin zu drücken, wo man genau hin will. In der Zeit hat man es schlicht selbst gemacht oder zumindest eine Basis geschaffen, mit der man dann besser mit der KI arbeiten kann.
Man sollte sich nicht von den vielen Beispielen auf Social Media blenden lassen. Wenn ich eine Anwendung brauche, die quasi als Tutorial in jeder Sprache existiert (bspw. eine Einkaufsliste) und keinerlei Ansprüche an die Umsetzung habe, dann geht das natürlich besser. Hier sollte man aber realistisch sein, denn diese sehr spezielle Anforderung hat man idR. eher selten. Abgesehen davon gibt es auch hier häufig die o.g. Problemchen, wenn man sich das mal genauer ansieht. Dasselbe gilt für die üblichen Verdächtigen bei Einstellungsgesprächen. Das ist im Allgemeinen jetzt eher wenig kreativ und man sieht dieselben Aufgaben in minimal abgewandelter Form immer wieder. Auch da sind diese Systeme idR. gut aufgestellt. Auch das ist häufig nicht was man konkret gerade macht.
Mein grundsätzliches Fazit zu Copilot - und auch vielen anderen Systemen - ist, dass sie sehr häufig als Autocomplete auf Steroiden gut funktionieren, wenn man nicht anfängt sich die Arbeitsweise vom System diktieren zu lassen. Das kann die Verwendung schon rechtfertigen. Für alles andere würde ich einen ziemlich großen Bogen um diese Systeme machen, denn da sind sie nicht mal Stack Overflow, was hier immerhin noch den Vorteil hat, dass es da möglicherweise jemanden gibt, der darauf hinweist, dass die vermeintliche Lösung kompletter Bullshit oder eben auch total veraltet ist.