In unserem beruflichen Alltag und während des Studiums oder der Ausbildung, lernen wir, dass es nicht darauf ankommt, alles zu wissen. Vielmehr ist es entscheidend, zu wissen, wo Informationen zu finden sind. Die Fähigkeit, hartnäckig Probleme zu lösen und effizient Informationen zu recherchieren, ist oft ausschlaggebend.

Die Realisierung dieser Arbeitsweise wird mir besonders dann bewusst, wenn ich ohne Internetzugang programmieren muss. Gewöhnlich beginnen die Herausforderungen, sobald ein ungewöhnliches Problem auftaucht. Dann merke ich, wie ich sehr ich darauf angewiesen bin, Informationen im Internet zu finden.

Bis vor Kurzem war es dann Teil meines Arbeitsprozesses, Problemstellungen bei Google einzugeben und die Ergebnisse auf StackOverflow zu durchforsten. Neuerdings habe ich jedoch diesen Schritt fast gänzlich durch ChatGPT ersetzt. Ich bin überzeugt, dass dies eine positive Entwicklung darstellt und mich zu einer besseren Programmiererin macht. Als Informatiker*innen ist unser Hauptanliegen das Lösen von Problemen. Die Mittel, die wir dazu einsetzen, sind von sekundärer Bedeutung. ChatGPT ist dabei ein weiteres wertvolles Werkzeug in unserem Werkzeugkasten.

Im folgenden Beitrag möchte ich anhand einiger Beispiele aufzeigen, wie ChatGPT 4.0 mich im beruflichen wie auch im privaten Alltag unterstützt und dazu ermuntern, dieses mächtige Werkzeug für die Entwicklungsarbeit zu nutzen.

Neues Terrain betreten: Lernen einer neuen Programmiersprache

Erst kürzlich ergab sich in einem Entwicklungsprojekt die Gelegenheit, ein bestehendes Tool, basierend auf Elixir/Phoenix, für einen neuen Anwendungsfall weiterzuentwickeln. Obwohl niemand im Team Erfahrung mit Elixir hatte, nahmen wir die Herausforderung an. Glücklicherweise ist Elixir/Phoenix strukturell sehr ähnlich zu Ruby on Rails, in dem wir erfahrener waren. ChatGPT unterstützte uns bei der Entwicklung maßgeblich, indem es uns Erklärungen lieferte, die genau auf unser Hintergrundwissen zugeschnitten waren oder Code Snippets generierte, die direkt eingesetzt werden konnten.

Die Einsatzzwecke waren dabei vielseitig. Wenn man eine neue Programmiersprache lernt, so weiß man oft erst nicht so richtig, wo man anfangen soll. In unserem Fall gab es zum einen eine bestehende Code-Basis, sodass der erste Schritt war, grob die Anwendung zu verstehen. Zum anderen halfen uns die konkreten Aufgaben, die umgesetzt werden mussten, dabei, die Komplexität in kleinere Schritte aufzuteilen.

Um ein erstes Codeverständnis zu bekommen, haben wir ChatGPT zum Beispiel gefragt:

Abb. 1:Ausschnitt aus einem Dialog mit ChatGPT. Der Prompt lautet
Abb. 1:Ausschnitt aus einem Dialog mit ChatGPT. Der Prompt lautet „Ich habe ein Array von Elementen in Elixir und möchte nach einer Eigenschaft filtern ähnlich wie ‚select‘ in Ruby. Wie mache ich das?“ ChatGPT antwortet ausführlich mit Erklärung und Code Beispielen

In Web-Frameworks wie Rails oder Phoenix funktioniert viel nach dem Prinzip „Convention over Configuration“, sodass die richtige Struktur von großer Bedeutung ist. Um zu verstehen, worauf wir bei der Implementierung achten mussten, fragten wir Dinge wie:

Sehr wertvoll ist hierbei, dass ChatGPT dazu eine detaillierte Erklärung, ggf. mit Schritt-für-Schritt-Anleitung, liefert.

Im Gegensatz zu StackOverflow, wo man entweder darauf angewiesen ist, dass jemand genau die richtige Frage schon mal gestellt hat oder jemand schnell genug auf die eigene Frage antwortet, bekommt man bei ChatGPT sofort eine Antwort, die auf den persönlichen Kontext maßgeschneidert ist. Man kann sogar bei Bedarf Rückfragen stellen, solange bis man ein Konzept verstanden hat. Hierbei ist ChatGPT ein geduldiger Zuhörer und Erklärer, dem keine Frage zu blöd ist. Durch die Erklärungen von ChatGPT haben wir uns vieles alleine erarbeiten können und mussten auf das Wissen der Kolleg*innen, die Elixir können, nicht für triviale Fragen, sondern nur bei komplexeren Sachverhalten zurückgreifen.

Ein weiterer Einsatzzweck von ChatGPT beim Entwickeln in einer neuen Programmiersprache ist auch, ChatGPT als Reviewer zurate zu ziehen und ihn darum zu bitten, den Code auf Lesbarkeit und idiomatische Programmierung zu überprüfen. Dadurch hatten wir die Möglichkeit, Code zu schreiben, der sich an idiomatische Prinzipien des Ökosystems hält. Prinzipien, die man oft erst nach langem Gebrauch verinnerlicht. Gleichzeitig konnten wir auch noch dazulernen.

Aber nicht nur für Überprüfungen und Erklärungen kann ChatGPT genutzt werden. Es kann auch direkt einsatzfähigen Code generieren, den man - nach sorgfältiger Überprüfung - in den eigenen Source Code übernehmen kann.

Aus meiner Erfahrung ist der generierte Code in 95 % der Fälle einwandfrei. Einige wenige Male kam es jedoch vor, dass ChatGPT Code Snippets generierte, die nicht funktionierten. Da der generierte Code aber dieselben Qualitätstests wie selbst geschriebener Code durchläuft (Tests und Reviews), fiel dies schnell auf.

Mit diesen Maßnahmen gelang es uns innerhalb weniger Wochen, die gewünschten Features umzusetzen. Ein Blick in die Doku, exzessives googeln oder das Durcharbeiten von Anfänger-Tutorials war dabei dank ChatGPT nicht nötig. Als ich das letzte Mal eine (neue) Programmiersprache ohne ChatGPT gelernt habe, war das wesentlich beschwerlicher als es jetzt der Fall ist.

Optimierung von Scripting und Kommandozeilenarbeiten

Für unseren monatlichen Technology Lunch ist die Erstellung eines neuen Warteraumvideos erforderlich, das sich aus einem Videoloop, einem transparenten PNG mit Überschrift und Namen sowie einem Hintergrundgeräusch zusammensetzt. In Anbetracht der Möglichkeit, diese Komponenten mit dem Kommandozeilen-Tool ffmpeg zu kombinieren, wandte ich mich an ChatGPT, um das entsprechende Kommando zu erfragen. Hier stieß ChatGPT jedoch an seine Grenzen; der generierte Befehl funktionierte nicht wie erwartet. Dies lag wahrscheinlich daran, dass ich nicht präzise genug erklärt hatte, was für ein Ergebnis ich mir wünsche. Um das Problem zu lösen, zerlegte ich den Prozess in kleinere Schritte: Zunächst integrierte ich das PNG über das Video und fügte danach die Musik hinzu. Diese Herangehensweise hat funktioniert und spart mir jetzt jeden Monat Arbeit.

Abb. 2: ChatGPT wird nach dem ffmpeg Befehl gefragt ein transparentes PNG über ein Video zu legen. ChatGPT antwortet mit dem generierten Befehl und einer Erklärung

Debugging mit ChatGPT: Effizienzsteigerung durch präzise Fehleranalyse

Ein weiterer Bereich, in dem ChatGPT Unterstützung leisten kann, ist das Debugging. Oftmals ist es effektiv, ganze Fehlermeldungen direkt in ChatGPT zu kopieren, um maßgeschneiderte Lösungsvorschläge zu erhalten. Dies spart nicht nur Zeit bei der Suche nach Antworten in Foren und Dokumentationen, sondern führt auch oft zu direkten und praxisnahen Lösungen.

Weiterhin ermöglicht ChatGPT, komplexe Probleme Schritt für Schritt anzugehen. Indem man das Problem detailliert beschreibt, kann ChatGPT Anleitungen geben, welche Bereiche man überprüfen sollte – etwa bestimmte Codezeilen, Konfigurationseinstellungen oder das Zusammenspiel verschiedener Module. Diese interaktive Problemlösung führt nicht nur zu einer schnelleren Fehlerbehebung, sondern erweitert auch das eigene Verständnis für die zugrundeliegenden Mechanismen.

Ein eindrucksvolles Beispiel hierfür erlebte ich kürzlich bei meiner Arbeit an einer Ruby on Rails (RoR) Anwendung. Ich wollte eine Helper-Methode aus einem Modell heraus aufrufen, was normalerweise aufgrund der Trennung von Modellen und Views in RoR nicht direkt möglich ist. Durch das Eingeben der Fehlermeldung und der Beschreibung des Problems konnte ChatGPT mir nicht nur erklären, warum der Aufruf so nicht funktioniert, sondern bot auch alternative Ansätze, wie ich meine gewünschte Funktionalität erreichen könnte. Diese Lösungsvorschläge reichten von der Nutzung von Concerns bis hin zu Design-Pattern-Anpassungen, die eine saubere und wartbare Code-Struktur fördern.

Durch solche Erfahrungen wird deutlich, wie KI-Unterstützung das Debugging revolutionieren kann, indem sie eine sofortige, interaktive Unterstützung bietet, die spezifisch auf das jeweilige Problem zugeschnitten ist.

Anmerkung zur Sprache

ChatGPT ist bei Programmierfragen äußerst gnädig, was die Ausdrucksweise und die Formulierung des Prompts angeht. Kann man ein Konzept oder eine Frage nicht gut auf Englisch formulieren, ist es auch problemlos möglich, auf Deutsch zu fragen. Auch wenn man sich nicht gut auskennt und vielleicht im Prompt Dinge nicht immer korrekt beschreibt, liefert ChatGPT trotzdem oft eine hilfreiche Antwort.

Über den Tellerrand hinaus: Ideengenerierung

In diesem Artikel konzentriere ich mich auf die Anwendungen, für die ich ChatGPT tatsächlich bereits eingesetzt habe. Während des Schreibens kam mir aber der Gedanke, ChatGPT selbst zu fragen, welche Möglichkeiten es gibt, wie ChatGPT mich noch bei meiner Arbeit unterstützen könnte.

Ich fragte also

„Ich möchte gerne einen Artikel darüber schreiben, wie ChatGPT beim Programmieren und in meinem Arbeitsalltag als Programmiererin unterstützen kann. Gib mir ein paar Vorschläge, wie du mich unterstützen kannst.“

Die Antwort (in gekürzter Form) lautet in etwa wie folgt:

Dieses vielfältige Spektrum an Unterstützungsmöglichkeiten verdeutlicht, wie ChatGPT als multifunktionales Werkzeug in der Softwareentwicklung und darüber hinaus eingesetzt werden kann.

Kreativität im Einsatz: Plakat-Design mit ChatGPT

Die Nutzung von ChatGPT in meinem beruflichen Alltag hat mich neugierig gemacht, welche Einsatzmöglichkeiten es abseits der IT noch gibt. Für einen ehrenamtlichen Verein, in dem ich tätig bin, wollte ich ein Plakat für eine bevorstehende Veranstaltung entwerfen. Obwohl ich eine klare Vorstellung vom Design hatte, konnte ich kein passendes, kostenloses Stockfoto finden. Daraufhin wandte ich mich an ChatGPT, erklärte meine Designvorstellungen und erhielt mithilfe von DALL-E prompt ein treffendes Bild. Die Herausforderung bestand jedoch in der Auflösung: Das Bild war nur 1024 Pixel breit, und ich benötigte eine Auflösung von etwa 3000 Pixeln für einen hochwertigen DIN A3-Druck. Glücklicherweise existieren auch KI-Tools, die Bilder hochskalieren und qualitativ verbessern können. Obwohl diese Lösung - ebenso wie viele Stockfotos - nicht kostenfrei ist, sparte sie mir erheblich Zeit und das Ergebnis übertraf meine Erwartungen. Das Design des Plakats ist gelungen, allerdings muss ich den Text noch eigenhändig ergänzen.

Abb. 3: Ein von ChatGPT und DALL-E generiertes Bild einer Bühne, die rechts und links von roten Samtvorhängen umgeben ist. Von oben strahlt ein Scheinwerfer auf die Bühne. Der Prompt lautete

Diese Erfahrung verdeutlicht nicht nur die breite Anwendbarkeit von KI in verschiedenen Bereichen, sondern betont auch die Bedeutung des verantwortungsvollen Umgangs mit solchen Technologien. Es zeigt, dass KI uns unterstützen kann, kreative Visionen umzusetzen, ohne dabei den menschlichen Einfluss zu ersetzen. Vielmehr erweitert sie unsere Möglichkeiten und fördert innovative Lösungen.

IDEs, Programme und Shortcuts

ChatGPT kennt sich mit einer Vielzahl von Programmen aus. Wenn ihr auf der Suche nach einer bestimmten Funktionalität für eure IDE, ein Programm oder ein Betriebssystem seid, zögert nicht, danach zu fragen. Ich war erst kürzlich vollkommen verblüfft, dass ChatGPT mir den genauen Shortcut für eine Funktion in IntelliJ auf dem Mac liefern konnte. Diese Fähigkeit, spezifische und praktische Informationen zu liefern, ohne dass man lange suchen muss, macht ChatGPT zu einem unverzichtbaren Werkzeug in meinem Entwicklungsalltag.

Korrekturlesen und Feintuning mit ChatGPT: Ein Dialog in Aktion

Beim Schreiben dieses Artikels habe ich mich nicht nur auf ChatGPT als Werkzeug zur Informationsbeschaffung und Ideengenerierung verlassen, sondern auch als Partner im Korrekturleseprozess. Hier ein Blick hinter die Kulissen unserer Zusammenarbeit:

Diese Erfahrung zeigt, dass die Unterstützung durch KI, speziell durch ChatGPT, weit über einfache Aufgaben hinausgeht. Sie kann ein dialogorientierter Prozess sein, der durch gezieltes Feedback und Anpassungen zu einem hochwertigen Ergebnis führt. Es unterstreicht die Bedeutung von ChatGPT als vielseitiges Werkzeug, das nicht nur in der Code-Entwicklung, sondern auch im kreativen Schreibprozess einen erheblichen Mehrwert bietet.

Tipps und Tricks

Datenschutz und generative KI in der Softwareentwicklung

Ein entscheidender Aspekt, der im Umgang mit generativen KI-Tools wie ChatGPT nicht außer Acht gelassen werden darf, ist der Datenschutz. Da die kostenfreien Varianten von ChatGPT und ähnlichen Tools die Eingaben der Nutzer*innen als Trainingsdaten verwenden können, sollte besonders bei projekt- oder unternehmensspezifischen Informationen Vorsicht geboten sein. Es besteht das Risiko, dass sensible Daten unbeabsichtigt in Trainingsdatensätze einfließen, was den Datenschutzbestimmungen der EU widerspricht. Unternehmen, die generative KI sicher und datenschutzkonform nutzen möchten, haben jedoch die Möglichkeit, auf kostenpflichtige Varianten mit Unternehmenslizenzen umzusteigen. Diese bieten die Option, die Verwendung der Eingaben als Trainingsmaterial auszuschließen und somit den Datenschutz zu gewährleisten. Dennoch muss sichergestellt sein, dass keine personenbezogenen Daten oder Firmengeheimnisse eingegeben werden. Man sollte sich stets der Verantwortung bewusst sein, die mit der Nutzung solcher Technologien einhergeht und sich mit dem/der zuständigen Datenschutzbeauftragten abstimmen. Dieser Artikel gibt keine rechtlich verbindliche Auskunft.

Zukunftsperspektiven und Schlussfolgerungen

Die in diesem Artikel beschriebenen Erfahrungen und Methoden haben sich über die letzten Monate hinweg fest in meinem Arbeitsalltag verankert. Ich nutze ChatGPT für die Generierung von Codeabschnitten mit wenig Komplexität bis hin zu der Generierung von komplizierten SQL Abfragen.

Das Ende der Fahnenstange habe ich aber noch lange nicht erreicht. Es gibt sicherlich noch viele weitere Möglichkeiten, generative KIs unterstützend im Arbeitsalltag einzusetzen. Neben ChatGPT existieren weitere KIs, die sich hervorragend für die Softwareentwicklung eignen. Ein herausragendes Beispiel ist Perplexity, das sich besonders für Recherchen eignet, die tagesaktuelle Quellen und einen Suchindex voraussetzen. Es bleibt spannend, welche Entwicklungen in den kommenden Monaten und Jahren auf uns warten.

Persönlich kann ich mir die Arbeit ohne ChatGPT als Assistenten für tägliche Aufgaben nicht mehr vorstellen. Stetig entdecke ich neue Möglichkeiten, generative KI effektiv zu nutzen. Die Fähigkeit, schnell und unkompliziert Informationen zu finden, und die beinahe magische Art, wie eine Maschine meine Anfragen versteht und relevante Antworten liefert, faszinieren mich immer wieder aufs Neue.

So bleibt die Reise mit ChatGPT und anderen KI-Technologien eine fortwährende Entdeckung, die meinen Alltag als Entwicklerin bereichert und ständig neue Türen zu unerforschten Möglichkeiten öffnet. Und das ist es doch, worum es beim Programmieren geht.