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:
Wie lautet das Pendant zu ActiveRecord in Elixir/Phoenix?
Ich habe ein Array von Elementen in Elixir und ich möchte nach einer Eigenschaft filtern ähnlich wie
select
in Ruby, wie mache ich das?was bedeutet “|>” in Elixir?
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:
Was ist der Unterschied zwischen einer View und einem Template?
Wie erstelle ich einen neuen Endpunkt in Elixir, der eine erweiterte Ansicht meines Objekts “Knusperhaus” ist?
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.
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:
Generieren von Codebeispielen: Die KI kann Codebeispiele in verschiedenen Programmiersprachen generieren, um zu zeigen, wie bestimmte Funktionen implementiert werden können.
Empfehlungen für Lernmaterialien: ChatGPT kann hilfreiche Ressourcen für das Erlernen neuer Technologien oder das Vertiefen bestehender Kenntnisse vorschlagen.
Beantworten von Fachfragen: Die KI kann Fragen zu einer Vielzahl von Themen beantworten und somit bei der Lösung spezifischer Probleme helfen.
Unterstützung bei der Projektplanung: ChatGPT kann bei der Strukturierung von Projekten helfen, von der Definition der Aufgaben bis hin zur Priorisierung und Zeitplanung.
Automatisierung und Scripting: Die KI kann Vorschläge für die Automatisierung wiederkehrender Aufgaben durch Skripte machen, um Effizienz zu steigern.
Brainstorming und Ideenfindung: ChatGPT kann als kreativer Partner fungieren, der neue Perspektiven und Lösungsansätze bietet.
Architektur- und Designberatung: Die KI kann bei der Ausarbeitung von Softwarearchitekturen und -designs beraten und Vor- sowie Nachteile verschiedener Ansätze diskutieren.
Generierung von Dokumentation: ChatGPT kann helfen, umfangreiche und verständliche Dokumentationen für Projekte zu erstellen.
Übersetzungen: Die KI kann technische Dokumente oder Kommunikation in verschiedenen Sprachen übersetzen und so die internationale Zusammenarbeit erleichtern.
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.
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:
Erste Anfrage: Ich teilte meinen ursprünglichen Entwurf und bat um Hilfe bei Grammatik, Rechtschreibung und der Anpassung an die INNOQ Tone and Voice Guidelines. Diese Anfrage startete unseren Dialog, der darauf abzielt, den Text zu verfeinern und zu verbessern.
Erste Überarbeitung durch ChatGPT: ChatGPT, als mein digitaler Assistent, lieferte eine überarbeitete Version meines Textes. Diese enthielt Korrekturen und Verbesserungen im Hinblick auf Lesbarkeit und Stil, orientiert an den Richtlinien von INNOQ.
Feedback und spezifische Wünsche: Ich merkte an, dass einige meiner ursprünglichen Beispiele und Abschnitte, die ich für besonders aussagekräftig hielt, gekürzt oder weggelassen wurden. Insbesondere bat ich darum, die Beispiele im Abschnitt zum Codeverständnis wieder einzufügen und den Prozess des Korrekturlesens genauer zu beleuchten.
Zweite Überarbeitung und Ergänzung: Basierend auf meinem Feedback nahm ChatGPT Anpassungen vor, fügte die gewünschten Beispiele wieder ein und beschrieb den Prozess unserer Zusammenarbeit ausführlicher.
Finalisierung: Mit den durchgeführten Anpassungen und dem gegenseitigen Austausch erreichten wir eine Version des Artikels, die sowohl inhaltlich als auch stilistisch meinen Vorstellungen entsprach.
Dennoch durchlief dieser Artikel auch noch mal einen menschlichen Review-Prozess; vielen Dank an die Kolleg*innen, die Korrektur gelesen haben.
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
Nutzung von ChatGPT 3.5: ChatGPT 3.5 ist kostenlos und eignet sich gut, um mit einfachen Problemstellungen erste Erfahrungen zu sammeln. Für komplexere Aufgaben ist es jedoch besser, ChatGPT 4.0 zu nutzen.
ChatGPT als ständiger Begleiter: Halte während der Arbeit ein ChatGPT-Fenster offen und nutze es für alles, wofür du normalerweise Google konsultieren würdest.
Einfach drauflos fragen: Mach dir keine Sorgen um komplexes Prompt Engineering. Beginne einfach mit deinen Anfragen. Falls ein Ergebnis nicht deinen Erwartungen entspricht, frage nach einer Präzisierung.
Optimierung von Prompts: Wenn du deine Prompts dennoch optimieren möchtest, frage ChatGPT, wie ein effektiver Prompt für deine spezifische Problemstellung aussehen könnte, und verwende diesen Ansatz. Oft ist es auch hilfreich, sich mit wenigen, kleinen Prompts dem gewünschten Ergebnis zu nähern anstatt einen sehr großen Prompt zu verwenden. Eine weitere Technik ist der Few-Shots Ansatz, bei dem man im Prompt ein oder mehrere Beispiele gibt, an denen sich die KI orientieren kann.
Nutzung in Deutsch und Englisch: ChatGPT eignet sich hervorragend für die Nutzung in deutscher Sprache und kann auch dazu beitragen, deinen englischen Texten den letzten Schliff zu verleihen.
Obacht vor falschen Aussagen: ChatGPT ist nicht unfehlbar. Antworten können plausibel klingen und trotzdem falsch sein - bei erzeugtem Code merkt man das allerdings recht schnell.
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.
Technology Briefing#1: Large Language Models und Commodity AI