ClickCease
Share on linkedin
Share on facebook
Share on twitter
Share on email

Ein GitHub-Copilot-Erfahrungsbericht: Tipps für mehr Effizienz und Spaß beim Coden

Markus Brand

Markus Brand

Ein GitHub-Copilot-Erfahrungsbericht: Tipps für mehr Effizienz und Spaß beim Coden

In den vergangenen Jahren hat sich die Welt der KI-Entwicklungstechnologien stark gewandelt. Large Language Models (LLMs) und neuerdings auch Large Multimodal Models sowie zahlreiche neue Tools eröffnen viele Möglichkeiten für einzelne Entwickler:innen, ganze Teams und Unternehmen.   

Eines der weltweit am weitesten verbreitete KI-Entwicklungstools heißt GitHub Copilot. Es wurde von GitHub und OpenAI mit dem Ziel entwickelt, die Arbeit von Entwicklern wie mir durch automatische Vervollständigung von Code zu beschleunigen.  

Ich selbst nutze Copilot seit April 2022. In diesem Artikel zeige ich Ihnen einige meiner Tipps und Tricks, die es mir ermöglichen, repetitive Programmieraufgaben deutlich schneller zu erledigen und ganz allgemein meine Effizienz zu steigern. Daneben werfe ich einen Blick auf den technologischen Ansatz von Copilot und die Risiken von KI-generiertem Code. 

 

Warum ich GitHub Copilot nutze 

Copilot wurde mit Milliarden von Codezeilen speziell darauf trainiert, Entwickler:innen bei der Programmierung zu unterstützen. Die Funktionsweise ist sehr intuitiv. Copilot generiert Autovervollständigungen für einen gegebenen Quellcode und das unabhängig von Programmiersprachen und Frameworks. Dafür nutzt GitHub das Codex Sprachmodell – eine Variante von GPT-3 – welches ausreichend generalisierbar ist, um selbst domänenspezifischen Sprachen (DSL) zu verstehen. 

Als Entwickler ist es mein persönlicher Anspruch, so effizient wie möglich zu programmieren. Dementsprechend möchte ich, vorausgesetzt es ist sinnvoll, so viel wie möglich automatisieren. Das ist schließlich der größte Vorteil von Copilot: Ich muss weniger langweiligen repetitiven Code schreiben und kann mich stattdessen stärker auf die Architektur und Business Logik fokussieren. Das erhöht meinen Spaß an der Arbeit und verbessert meine Effizienz.  

Darüber hinaus lässt sich Copilot nahtlos in die gängigsten Code-Editoren einbinden. Ich habe es bspw. über das GitHub Copilot Plugin in meine gewohnte Entwicklungsumgebung, die JetBrains IntelliJ IDE integriert.  

 

Tipps und Tricks für eine effiziente Verwendung  

Um Ihnen zu zeigen, welche Rolle Copilot in meiner täglichen Arbeit einnimmt, möchte ich kurz auf Pair-Programming eingehen. Wie der Name schon sagt, wird bei dieser Technik zu zweit programmiert. Eine ist die Fahrerin, die den Code am Computer schreibt. Der andere ist der Beifahrer, der nur über die Schulter schaut. Dabei konzentriert sich der Beifahrer auf die Problemstellung und unterstützt die Fahrerin aktiv durch Verbesserungsvorschläge.  

Durch das zusätzliche Augenpaar werden Fehler vermieden und die Codequalität erhöht. Des Weiteren wird Wissen untereinander geteilt. Was sind die Nachteile beim Pair-Programming? Zwei Entwickler:innen werden gleichzeitig benötigt und bei einfachen Tasks kann der Beifahrer nur wenig beisteuern und langweilt sich. 

Sie haben es bestimmt geahnt: GitHub bewirbt Copilot mit „Your AI pair programmer“ und so fühlt es sich auch an. Der einzige Unterschied: Statt einem menschlichen Beifahrer, gibt es einen KI-Beifahrer. 

Im Folgenden möchte ich Ihnen anhand von drei Beispiele zeigen, wie sich Copilot als mein Beifahrer schlägt, welche Best Practices ich nutze und welche Vor- und Nachteile ich gegenüber einem menschlichen Beifahrer beobachtet habe. 

 

1 Passive Verwendung 

Direkt nach der Installation wird Ihnen auffallen, dass beim Programmieren automatisch Autovervollständigungen angezeigt werden. In diesem Beispiel schreibe ich gerade eine Social-Media-Share-Komponente. Ich wollte gerade den entsprechenden Link für Twitter im Browser suchen, als mir Copilot den passenden Link vorschlug (siehe roter Text im GIF). Natürlich habe ich den Vorschlag anschließend noch überprüft, um sicherzugehen, dass der Link korrekt und vor allem aktuell ist.  

Copilot weiß häufig sofort, welchen State ich in React einführen möchte, kann den korrekten Regex schreiben oder sogar gesamte React-Komponenten basierend auf einem umgebenden Datenmodell generieren. Das passiert alles automatisch nebenher und hat mir ab der ersten Minute geholfen, effizienter Code zu schreiben. Im Gegensatz zu einem menschlichen Beifahrer, der mir zwar auch helfen kann, kann ich einzelne Zeilen bzw. ganze Absätze mit einem einzigen Knopfdruck einsetzen. Ich werde immer noch positiv überrascht von einigen Vorschlägen, die nicht selten genau dem Code entsprechen, den ich gerade selbst schreiben wollte. 

 

2 Arbeiten mit Kommentaren 

In Gegensatz zu einem menschlichen Beifahrer können wir mit Copilot (noch) nicht reden. Hier kommen Kommentare ins Spiel. Sie eignen sich ausgezeichnet, um Copilot beim Programmieren mitzuteilen, was als nächstes passieren soll. Ein positiver Nebeneffekt: Mein Code wird automatisch kommentiert und somit besser lesbar, was wiederum die Wartbarkeit erhöht. 

Außerdem hilft mir Copilot, bestehenden Code zu kommentieren. So kann ich Copilot bei Bedarf auch als Code Comprehension Tool einsetzen.  

Hierfür starte ich einfach einen neuen Kommentar über einer Klasse oder Methode und Copilot erklärt mir, was im nachfolgenden Code passiert. Wenn mir der Vorschlag gefällt, klicke ich auf Akzeptieren. So wird mein Code für mich und meine Kolleg:innen mit wenigen Klicks verständlicher. 

 

3 Strukturiertes Arbeiten 

Wenn ich mich bspw. in einer existierenden Komponente befinde, gibt es sehr viele potenzielle Erweiterungen. Ohne weitere Informationen, kann Copilot also nicht wissen, was es vorschlagen soll. Welche Informationen braucht das Tool also für sinnvolle Vorschläge? Allein mit dem Namen, Input und Output kann es schon sehr viel anfangen. Mehr braucht es häufig gar nicht. Das heißt, wenn ich Code von Anfang an in kleinere verständliche Pakete strukturiere, kann es mir deutlich besser helfen und größere und genauere Vorschläge generieren. 

Ich möchte an dieser Stelle ein Beispiel mit folgendem Setup geben: Unten sehen Sie eine Klasse, die einen Dijkstra Algorithmus implementieren soll – das ist ein gängiger Algorithmus, um kürzeste Wege in einem Graphen zu finden. Außerdem sieht man noch ein weiteres Feature des Copilot-Plugins: Man kann für eine Stelle mehrere und größere Vervollständigungen generieren lassen und dann eine davon wählen. 

Allein durch die Interface-Deklarationen versteht Copilot das Format, in dem der Graph übergeben wird und mit der Zusatzinformation, dass die Methode Dijkstra heißt, wurde der gesamte Inhalt mit einem Knopfdruck gefüllt. Doch ist das jetzt auch korrekt? 

Dafür kann ich mir auch automatisch einen Test-Case generieren lassen: 

Der Test (Bild unten) hat gezeigt, dass es tatsächlich noch ein kleines Problem gab – in Zeile 29 hat noch eine Bedingung gefehlt. In diesem Beispiel musste ich das noch manuell finden, aber in naher Zukunft könnte man mit einem in die IDE integrierten Chat vielleicht auch den fehlerhaften Output einfach in den Chat schreiben und fragen, was das Problem in dem Code ist. 

Das Beispiel verdeutlicht, je besser ich den Code strukturiere, desto besser kann er sowohl von Menschen als auch von Copilot gelesen werden. Und wenn Copilot meinen Code besser versteht, kann es mich wiederum auch besser unterstützen. 

 

Risiken von KI-generiertem Code mit Copilot 

Die Chancen als auch die Risiken von KI-generiertem Code liegen für Sie wahrscheinlich auf der Hand. Trotzdem möchte ich kurz auf drei Punkte eingehen. 

 

Urheberrechtsverletzungen 

Inwiefern durch die Nutzung von Copilot das Urheberrecht verletzt wird, muss von Gerichten noch ausverhandelt werden. Allerdings bietet Microsoft für den Fall eines Rechtsstreits nun eine Art Versicherung (Copilot Copyright Commitment) an. Klar ist aber auch, dass fast alle Entwickler:innen beim Programmieren verschiedene externe Quellen, wie z. B. Stack Overflow verwenden. Und auch dort ist das Risiko in Bezug auf Copyright-Verletzungen ähnlich wie bei GitHub Copilot. Denn auch dort bekomme ich passende Vorschläge für mein Problem geliefert und ich weiß nicht, woher diese kommen oder unter welcher Lizenz sie ursprünglich erstellt wurden. Deswegen sollte man stets verantwortungsvoll mit den KI-Vorschlägen umgehen.  

 

Datenschutzverstöße 

Copilot ist Cloud-basiert. Der Dienst erfordert also eine ständige Kommunikation mit den Servern von GitHub. Laut GitHubs Datenschutzverordnung werden Anfragen von „Copilot for Business“-Nutzer:innen nach der Verarbeitung direkt verworfen und nicht für das Training des Models genutzt. Wie bei allen closed-source Diensten kann man natürlich nicht einsehen, was wirklich mit den eigenen Daten passiert. Wenn man GitHub nur als Versionsverwaltungsplattform einsetzt, muss man GitHub dieses Vertrauen allerdings auch schon entgegenbringen. Sensible Daten wie Passwörter oder Adressen sollten Sie unabhängig davon sowieso nicht im Klartext des Codes verwenden. 

 

Sicherheitsprobleme 

Der generierte Code wird von Copilot selbst nicht detailliert geprüft und kann daher Sicherheitslücken oder andere Fehler enthalten – häufige Fehler hat Copilot beim Lernen natürlich auch häufiger gesehen und diese werden deshalb auch wahrscheinlicher vorgeschlagen. Wenn Sie die Vorschläge der KI also ohne weitere Maßnahmen übernehmen, können auch über diesen Weg unbemerkt Sicherheitsrisiken in den Code gelangen. Beim Übernehmen von Code aus dem Internet gilt also das gleiche wie bei Vorschlägen von Copilot: Der Entwickler sollte stets den Code verstehen und genug technisches Verständnis haben, um gängige Sicherheitslücken zu vermeiden. Auch wenn Copilot ein zweites menschliches Augenpaar bei der Entwicklung ersetzt, sollte auch deshalb immer ein Code Review durch eine weitere Person geschehen, bevor Code produktiv verwendet wird.  

 

Fazit 

Copilot nimmt mir schon heute einen konkreten manuellen Teil meiner Arbeit ab, sodass ich mehr mentale Kapazität für abstraktere Überlegungen haben. Daher sind AI Programming Tools für mich erstmal nur Werkzeuge, die mich beim Programmieren unterstützen. Persönlich möchte ich aufgrund der zahlreichen Vorteile nicht mehr ohne Copilot arbeiten.   

In naher Zukunft freue ich mich auf noch größere Integrationen in meine IDE, z. B. darauf, dass Probleme und Bugs, die von Linting oder Code Quality Tools gefunden werden, automatisch behoben werden. Auch die automatische Generierung von Commit-Messages und Merge-Request-Beschreibungen sowie eine in die IDE integrierte Chat-Funktion sind vielversprechende Erweiterungen, die in naher Zukunft durch Tools wie Copilot X oder IntelliJS AI Assitant das Programmieren unterstützen. 

Wenn Sie mehr darüber erfahren wollen, wie wir Sie im Bereich der Künstlichen Intelligenz unterstützen können, werden Sie auf unserer KI-Leistungsseite fündig.

Wie können wir helfen?

Herausfordernde Plattform- und App-Projekte treiben uns an. Wenn Sie auf der Suche nach einer Agentur sind, mit der Sie Ihr Geschäftsmodell digitialisieren wollen, sind wir der richtige Partner.

Prozessdigitalisierung (Prozesse digitalisieren) für große und mittlere Unternehmen

Prozessdigitalisierung: Ihr Weg zur erfolgreichen Transformation

Prozessdigitalisierung bedeutet Zukunft. Wer sie meistert, wird die wirtschaftlichen Herausforderungen unserer Zeit erfolgreich bewältigen. Denn digitale Prozesse sind nicht nur fehlerfreier und kosteneffizienter als analoge …

RAG Chatbot: Wie das Chatten mit eigenen Daten Unternehmensprozesse revolutioniert

RAG Chatbot: Wie das Chatten mit eigenen Daten Unternehmensprozesse revolutioniert

Im digitalen Zeitalter sind Daten der Schlüssel zu Ihrem Erfolg. Um sie effizient zu verwalten, zu analysieren und in wertvolle Erkenntnisse zu verwandeln, benötigt Ihr …

HPI Connect Interview mit Fabian Georgi

Über die HPI Connect zum Traumjob als Werkstudent in der Softwareentwicklung

Vor eineinhalb Jahren ist Fabian Georgi auf der HPI Connect Messe das erste Mal auf SPRYLAB aufmerksam geworden. Im Interview gibt er euch Einblicke in …

Tech-Newsletter

Erhalten Sie zusammen mit unseren 2.000+ Abonnent:innen einmal im Monat Updates zu Fachartikeln, Case Studies, Webinaren, Veranstaltungen und Neuigkeiten von uns und aus der Branche.