Blog

Wie AI die Produktivität von Entwicklern steigert

Erfahren Sie, wie Entwickler mithilfe von Copilot ihre Produktivität steigern können.
22. September 2022
Leonardo Benitez

In den letzten Jahren hat es viele Fortschritte bei der Verarbeitung natürlicher Sprache (Natural Language Processing (NLP)) gegeben: Beantwortung von Fragen, Textgenerierung, Korrekturlesen etc. Daher sollen Systeme nicht überraschen, die Entwickler unterstützen, oder?

Genauso ein System ist Github Copilot. Microsoft bewirbt dieses Tool mit dem Slogan: „your AI pair programmer“. Bei Skaylink ist Copilot seit einiger Zeit im Einsatz. In diesem Artikel stelle ich Ihnen das Produktivitäts-Tool kurz vor und geben Tipps zur Nutzung.

Wie funktioniert es?

Copilot basiert auf GPT-3. Dieses große neurale Netzwerk wurde mit großen Mengen an öffentlichen verfügbaren Texten aus dem Internet trainiert (Wikipedia, Blogs, StackOverflow, offene Repositories in Github, etc.). Daran ist nichts außergewöhnlich: Die Architektur wurde detailliert in akademischen Veröffentlichungen beschrieben. Die generelle Architektur ist seit Jahren im Einsatz – unter anderem in NLP-Projekten    bei Skaylink. Seit der Veröffentlichung haben viele Mitbewerber ähnliche Modelle trainiert. Dennoch erreicht GPT-3 beeindruckende Ergebnisse bei vielen NLP-Aufgaben, denn kein Entwickler kann alle Stack-Overflow Einträge auswendig aus dem Hut zaubern.

Die Stärke von GPT-3 liegt in der Textgenerierung: Sie können einen initialen Text eingeben und das Netzwerk wird Ihnen den Text zurückspielen, der am wahrscheinlichsten als nächstes folgen wird. Das ist sehr generisch. Aber genau das ist die Idee dahinter. Dabei kann dieser „Text“ alles sein:

  • Bei der Eingabe „what is the largest river by discharge volume of water in the world“ liefert GTP-3 als Antwort „amazon river“
  • Bei der Eingabe “Angela Merkel was elected because…” erhalten Sie drei Absätze mit einer politischen Analyse
  • Bei der Eingabe „int count = 20; for i in …“ vervollständigt GTP-3 den Code in einer sinnvollen Weise

Microsoft hat GTP-3 in ein System eingebaut, dass Code auto-vervollständigen kann. Copilot kann auf vielen IDEs (Integrated Development Environment) als einfaches Plugin installiert werden. Wenn Sie Code schreiben, zeigt es automatisch erste Vorschläge für die Weiterführung an (diese können auch einfach ein Kommentar sein). Sie können die Vorschläge mit der Tab-Taste übernehmen. Zu jeden beliebigen Zeitpunkt, können Sie STRG + Enter drücken. Copilot erstellt dann 10 Vorschläge, wie der Code fortgeführt werden könnte. Meistens umfassen die Vorschläge einige Worte oder einzige Codezeilen – manchmal bietet Copilot 10 oder bis zu 20 Codezeilen an.

Was gut funktioniert

Erstellung funktionalen Codes: Die Vorschläge sind meist funktional und sinnvoll im Kontext des Codes. Tief durchdachte Lösungen vom Entwickler braucht es dennoch.

Anpassung an individuellen Code-Stil: Copilot wählte Variablen und Naming passend zu meinen Code-Stil aus. Funktionen und Klassen passten zu denen von mir vorher geschriebenen.

Funktioniert für viele Libraries und APIs: Ursprünglich dachte ich, dass Copilot nur für „generischen“ Code und pure logische Probleme gut funktionieren würde. Es hat aber auch bei einigen sehr spezifischen Aufgaben wie bei der Beschreibung von AWS JSON LaunchSpecification geholfen.

Unterschiedliche Sprachen: Sowohl bei Programmiersprachen (Python, Javascript) als auch natürliche Sprache (Englisch, Spanisch) unterstützt Copilot. Sogar einen Kommentar auf Portugiesisch vervollständigte Copilot auf eine sinnvolle Weise. Fast so als würde es Gedanken lesen.

Was nicht so gut funktioniert

Es ist bekannt, dass GPT-3 Probleme mit „long term memory“ hat. Es erstellt Texte, in denen die einzelnen Phrasen Sinn ergeben. Der gesamte Text ist aber Kauderwelsch. Copilot kann Sie also dabei unterstützen, kurze Codestücke zu erstellen – die Architektur der Lösung bleibt weiterhin Ihre Aufgabe.

Müll rein, Müll raus: Wenn Sie nicht genügend Kontext bereitstellen (z. B. einfach eine neue leere Datei öffnen) oder widersprüchliche Daten bereitstellen (z. B. unzusammenhängender Code), wird das Ergebnis nichtssagend sein. Die Syntax würde vielleicht stimmen, aber des würde nichts dabei herumkommen. Der Entwickler bleibt in Kontrolle und das wird sich so schnell nicht ändern.

Copyright, Lizenzen, Privacy: Es bleiben Fragen offen, wie sich Copilot in diesen Bereichen schlägt. Zu diesen gehören:

  • Es ist vorgekommen, dass es valide API Keys generiert hat
  • Copilot könnte mit Code trainiert worden sein, der im Internet verfügbar ist, aber unter einer Lizenz steht. Diese könnte eine Nennung erfordern oder verlangen, dass Ihr Code ebenfalls Open Source wird
  • Copilot könnte Ihren eigenen proprietären Code zur Verfügung stellen

Microsoft hat all diese Punkte [zumindest teilweise] geklärt. Sie werden in der Community ausführlich diskutiert. Erst in Zukunft wird sich zeigen, wie das System funktioniert, wenn es immer beliebter wird.

Bei meiner eigenen Nutzung hat sich der Moment eingeprägt, als Copilot folgenden Vorschlag in einer Lua-Datei machte: „This file is part of love-platform“. (löve ist ein Game Engine für die Programmiersprache Lua. Mein Programm hatte keine Verbindung dazu.) Zudem hat Copilot kürzlich eine neue Funktion hinzugefügt „allow suggestions matching public code“. Als weitere Option können Sie folgendes freigeben: „Allow GitHub to use my code snippets for product improvements“. Interessant… Ich verstehe nicht genau, wie Microsoft meinen Code nutzen würde. Aber ich vertraue darauf, dass es einen guten Zweck dienen würde.

Wie Unternehmen Copilot nutzen können

Sie können Copilot als Einzelplatzlizenz oder für einzelne Accounts innerhalb einer Organisation erwerben. Es kostet 10 USD/Monat oder 100 USD/Jahr. Organisationen können noch keine Bulk-Lizenzen kaufen. Nach der Bezahlung des Abonnements müssen Sie lediglich das Plugin in Ihrer IDE (z. B. VS-Code) installieren. Danach können Sie direkt loslegen. Das Plugin verwendet nur die Web-API des Systems, so dass Ihr Computer dadurch nicht langsamer wird.

Alternativen

Eine bekannteste Alternative ist „Tabnine“. Die Preise starten bei 12 US-Dollar pro Monat pro Developer, kann aber auch kostenlos verwendet werden. Sie können das Programm lokal oder in der Cloud ausführen. Im Gegensatz zu Co-Pilot können Sie mit Tabnine die gewünschten Vorschläge konfigurieren: Sie können z. B. die Anzahl der Vorschläge einstellen und angeben, ob Vorschläge für leere Zeile erstellt werden sollen und noch vieles mehr. Meines Erachtens ist Qualität der Codevorschläge deutlich schlechter als bei Copilot. „Tabnine“ erfordert mehr Kontrolle durch den Entwickler und schlägt weniger von sich aus vor. Wenn ich die Tab-Taste drücke (um den Vorschlag zu akzeptieren), ist der erzeugt Code in der Regel Kauderwelsch. Disclaimer: Ich habe nur die kostenlose Version getestet. Die kostenpflichtige Version soll deutlich besser sein. Diese Version bietet auch erwähnenswerte Funktionen wie: Training eines Modells speziell für den Code Ihres Teams, kontinuierliche Verbesserung des Modells anhand Ihres Codes und Github-Integration.

Mitbewerber verfolgen andere Ansätze für das AI-assistierte Coding:

  • Captain Stack liefert Antworten von Stack Overflow (einem bekannten Online-Forum für Entwicklungsfragen);
  • OpenAI bietet eine Code Vervollständigungs-API (sie sind diejenigen, die tatsächlich hinter Copilot stehen, nicht Microsoft, aber darauf geht dieser Beitrag hier nicht näher ein);
  • Code Clippy bietet ähnliche Funktionen wie Copilot. Es ist aber komplett frei und Open-Source basiert. Es nutzt den Cloud Inference Engine von HuggingFace (der ebenfalls in der Open-Source-Community weiterverbreitet ist). Meines Erachtens sind 100 Dollar eine vertretbare Summe für die Qualität und Vertrauenswürdigkeit von Microsofts Copilot. Das Code-Clippy-Modell ist daher vor allem für Unternehmen von Interesse, die ausdrücklich die Open-Source-Gemeinschaft unterstützen wollen.

Fazit

Alles im allem hat mich Copilot beindruckt. Es macht Spaß, das Tool zu nutzen und es beschleunigt meinen Programmierungsprozess. Ich weiß, was ich schreiben möchte. Dann fange ich an und Copilot vervollständigt den Code. Ich korrigiere die Fehler und schreibe, was mir vorschwebt. Das Ergebnis ist eine schnelle Umsetzung und mehr Sicherheit, dass ich keine dummen Fehler gemacht habe.

Copilot hält mich dazu an, einen standardisierten und verständlicheren Code zu schreiben, da die Vorschläge von Copilot in den Fällen meisten besser sind. Das kann gerade für Anfänger von Vorteil sein, da ihr Code oft unordentlicher ist.

Zusammenfassend kann ich sagen, dass ich davon ausgehe, dass Copilot und ähnlichen Tools in Zukunft weit verbreitet sein werden. Möchten Sie bei AI-assistierten Entwicklungs- und Produktivitäts-Tools vorne mit dabei sein? Skaylink kann Ihnen die nötige Beratung und Unterstützung bieten. Nehmen Sie Kontakt mit uns auf und lassen Sie uns zusammenarbeiten.