Die Nutzung von ChatGPT in der Softwareentwicklung
Inhaltsverzeichnis
Pro: Beschleunigung der Ideenfindung und Problemlösung
Kontra: Mangelnde Kontrolle und Qualität
Pro: Unterstützung bei der Dokumentation und Kommunikation
Kontra: Fehlendes Domain- und Kontextwissen
Ein anderer Argumentationsweg in der Kontroverse
Killerargumente gegen eine umfassende Nutzung von ChatGPT in der Softwareentwicklung
Fazit
Es ist kaum zu übersehen: Künstliche Intelligenz (KI) macht riesige Fortschritte und verändert viele Branchen nachhaltig¹:
- Im Gesundheitswesen wird KI zur Behandlungsplanung, medizinischen Bildanalyse und Arzneimittelforschung eingesetzt,
- im Finanzsektor wird KI für die Analyse von großen Datenmengen, zur Betrugserkennung oder Kundenbetreuung genutzt,
- und in der Automobilindustrie hilft KI bei der Interpretation von Sensordaten in Echtzeit und unterstützt den Betrieb von selbstfahrenden Autos.
Auch in der Softwareentwicklung ist künstliche Intelligenz – namentlich ChatGPT – auf dem Vormarsch, allerdings gibt es eine Kontroverse, wie sinnvoll das tatsächlich ist.
In diesem Artikel möchte ich einige Aspekte der Kontroverse beleuchten und Vor- bzw. Nachteile diskutieren. Vermutlich bin ich als Mitarbeiter eines Softwareentwicklungsdienstleisters nicht ganz objektiv, aber evtl. hilft das eine oder andere Argument, sollten Sie vor der Frage stehen, ob Sie ChatGPT aktiv für Ihre Softwareentwicklung nutzen wollen.
Pro: Beschleunigung der Ideenfindung und Problemlösung
Ein Hauptargument für die Verwendung von ChatGPT in der Softwareentwicklung ist die Fähigkeit des Modells, schnell Ideen zu generieren und bei der Lösung von Problemen zu unterstützen. Entwickler können Fragen stellen oder Probleme beschreiben und erhalten sofort Vorschläge und Ansätze zur Lösung. Dies kann den kreativen Prozess beschleunigen und neue Perspektiven eröffnen. Wie heißt es so treffend: Zeit ist Geld. Pluspunkt: ChatGPT.
Die Fähigkeit von ChatGPT, Quellcode-Snippets zu generieren, wird gerne als weiterer Vorteil beschrieben. Programmierer können nach bestimmten Funktionen oder Implementierungsbeispielen suchen und den generierten Code als Ausgangspunkt verwenden. Dies kann besonders nützlich sein, wenn sie in einem bestimmten Bereich nicht so erfahren sind oder wenn es darum geht, repetitive Aufgaben zu automatisieren. Repetitive Aufgaben machen keinen Spaß: 2:0 für ChatGPT.
Kontra: Mangelnde Kontrolle und Qualität
Trotz der Beschleunigung der Ideenfindung und Problemlösung gibt es ernsthafte Bedenken bezüglich der Verwendung von ChatGPT in der Softwareentwicklung. Ein Hauptkritikpunkt ist der Mangel an Kontrolle über die generierten Inhalte. ChatGPT kann zwar Vorschläge machen, aber die Qualität und Relevanz der generierten Ideen können stark variieren. Entwickler laufen Gefahr, minderwertigen Code zu erhalten, der später zu erheblichen Problemen führen kann. Minuspunkt: ChatGPT.
Ein weiteres Problem liegt in der Beachtung von Clean Code Prinzipien oder der Einhaltung von Sicherheitsstandards. KI-basierte Tools wie ChatGPT haben keine Kenntnis von den spezifischen Anforderungen eines Projekts oder den zugrunde liegenden Sicherheitsaspekten. Die Verwendung von generiertem Code ohne sorgfältige Prüfung könnte daher zu schwerwiegenden Sicherheitslücken führen. Und schon steht es nur noch 2:2.
Pro: Unterstützung bei der Dokumentation und Kommunikation
Die Verwendung von ChatGPT kann bei der Dokumentation und Kommunikation innerhalb eines Entwicklungsteams hilfreich sein. Entwickler können klare und verständliche Erklärungen für komplexe Konzepte erhalten, die sie anderen Teammitgliedern oder Stakeholdern erklären müssen. Dies kann die Zusammenarbeit erleichtern und Missverständnisse reduzieren.
Darüber hinaus kann ChatGPT dazu beitragen, technische Dokumentationen oder Benutzerhandbücher zu erstellen. Durch die Generierung von leicht verständlichen Inhalten können Programmierer Zeit sparen und sich auf andere wichtige Aufgaben konzentrieren. ChatGPT geht wieder in Führung: 3:2.
Kontra: Fehlendes Domain- und Kontextwissen
Ein entscheidender Nachteil von ChatGPT ist seine begrenzte Fähigkeit in Bezug auf Domänenwissen und Kontextualität. Softwareentwicklung erfordert oft spezialisierte Kenntnisse und Verständnis der spezifischen Anforderungen eines Projekts. ChatGPT kann diese tiefen Einsichten nicht bieten und könnte daher ungeeignete Ergebnisse produzieren.
Die fehlende Fähigkeit, den konkreten Systemkontext zu verstehen, kann auch dazu führen, dass generierte Antworten oder Lösungsvorschläge nicht vollständig relevant sind. Im günstigen Fall führt dies lediglich zu Diskussionen, im ungünstigen Fall wird es sehr teuer, insbesondere wenn Probleme erst zu einem späteren Zeitpunkt im Vorhaben entdeckt werden. 3:3 und das Spiel kippt langsam.
Ein anderer Argumentationsweg in der Kontroverse
Ein anderer Weg, sich der Kontroverse über die Nutzung von ChatGPT in der Softwareentwicklung zu nähern, ist die Frage: Was unterscheidet einen guten von einem weniger guten Entwickler?
- Ein guter Entwickler kann sauberen, effizienten und gut strukturierten Code schreiben. Und er kann entsprechenden Code auch lesen und verstehen.
- Gute Entwickler haben die Grundlagen von Algorithmen und Datenstrukturen verinnerlicht, und können so nützliche Lösungen für komplexe Probleme entwickeln.
- Gute Entwickler haben tiefgehende Erfahrung mit relevanten Frameworks, Bibliotheken und Entwicklungstools, so dass Sie effektiv arbeiten können. Zeit ist zwar Geld, effektives Arbeiten spart beides: Zeit und Geld.
- Ein guter Entwickler versteht Softwarearchitekturprinzipien und kann Anwendungen mit einem klaren, skalierbaren Design erstellen.
- Gute Entwickler können komplexe Probleme in kleinere, handhabbare Teile aufteilen und schrittweise Lösungen entwickeln.
- Gute Entwickler sind bereit, sich kontinuierlich weiterzubilden, um mit den neuesten Technologien und Trends Schritt zu halten. Das bedeutet natürlich auch, dass Sie sich mit ChatGPT oder ähnlichen Tools auseinandersetzen müssen, um zu erkennen, wie punktuell eine sinnvolle Kooperation funktionieren kann.
- Angesichts der sich ständig ändernden Technologielandschaft können gute Entwickler sich leicht neuen Tools, Sprachen und Paradigmen anpassen.
- Gute Entwickler schreiben leserlichen, gut dokumentierten Code, der leicht zu warten und zu erweitern ist. (Der Fairnesshalber: das wird in der Praxis gerne behauptet, ist aber nicht immer gegeben.)
- Gute Entwickler können gut im Team arbeiten, kommunizieren effektiv, teilen ihr Wissen und akzeptieren konstruktive Kritik. In der gelebten Praxis der Softwareentwicklung als Dienstleistung ist dies ein unfassbar wichtiger Punkt, denn häufig arbeiten in einem Projekt Entwickler von verschiedenen Unternehmen zusammen.
- Gute Entwickler berücksichtigen die User Experience und gestalten die Benutzeroberfläche intuitiv und ansprechend.
Insgesamt zeichnen sich gute Entwickler also durch eine Kombination von technischem Können, Problemlösungsfähigkeiten, Lernbereitschaft, Teamgeist und Engagement für Codequalität aus. Es ist wichtig zu beachten, dass diese Eigenschaften in einem sich ständig wandelnden Umfeld eine kontinuierliche Entwicklung und Anpassung erfordern. Bietet ChatGPT dies auch? Gänzlich oder teilweise? Wenn es dies nur in Teilen bietet, ist ChatGPT dann ein guter Entwickler?
Killerargumente gegen eine umfassende Nutzung von ChatGPT in der Softwareentwicklung
Steht es immer noch 3:3 oder liegt ChatGPT schon deutlich zurück?
Ich glaube, es gibt zwei zentrale Argumente, die deutlich gegen eine umfassende Nutzung von ChatGPT bei der Entwicklung von Software sprechen:
1. Haftung
Übernehmen Sie die Verantwortung – intern oder extern – wenn Sie durch die Verwendung von ChatGPT eine Entwicklung an die Wand fahren? Haften Sie für etwaige Schäden? ChatGPT macht dies nicht:
“ChatGPT haftet nicht für die Entwicklung von Software oder die Ergebnisse, die durch seine Verwendung erzielt werden. ChatGPT ist ein Werkzeug, das entwickelt wurde, um Texte zu generieren und auf Fragen zu antworten. Es kann bei der Ideenfindung, dem Verständnis von Konzepten und der Bereitstellung von Informationen unterstützen, aber es übernimmt keine Verantwortung für die tatsächliche Implementierung oder die Konsequenzen der entwickelten Software.”²
2. Empathie
Kennen Sie die größte Herausforderung in einem Softwareentwicklungsprojekt? Es ist der Mensch! Sie und ich, Auftraggeber und Entwicklungspartner, Vertreter von Fachabteilungen und Dienstleister.
Die Entwicklung von Software ist häufig nicht die größte Herausforderung, es ist das gemeinsame Verständnis zwischen den Beteiligten. Gute dokumentierte Lastenhefte, sauber gepflegte Backlogs, zyklische Absprachen und definierte Vorgehensweisen – all das sind wichtige Zutaten für eine erfolgreiche Softwareentwicklung.
- Ohne Empathie zwischen den Beteiligten,
- ohne ein Aufeinanderzugehen,
- ohne Verständnis für die jeweilige Situation der Beteiligten,
- ohne die Möglichkeit, zwischen den Zeilen zu lesen,
- ohne aktives Zuhören und Nachfragen,
wird eine Softwareentwicklung sehr selten wirklich erfolgreich sein. Es ist fast schon ein bisschen unfair, dies einer künstlichen Intelligenz vorzuwerfen – es ist aber das, was uns Menschen allgemein und auch als Softwareentwicklungsdienstleister ausmacht.
Fazit
Wie steht nun die Kontroverse? 3:5? Wenn Sie die beiden Killerargumente mit besonderem Gewicht in die Betrachtung einbeziehen, steht es dann vielleicht 3:10?
Unabhängig davon, wie der Spielstand ist, unabhängig davon, wie Sie die verschiedenen Pros und Kontras werten, insgesamt zeigt die Diskussion um die Verwendung von ChatGPT in der Softwareentwicklung, dass es sowohl Vor- als auch Nachteile gibt. Die Beschleunigung der Ideenfindung und die Unterstützung bei der Dokumentation sind zweifellos attraktive Aspekte. Allerdings darf nicht übersehen werden, dass die mangelnde Kontrolle über die generierten Inhalte, die fehlende Domänenkenntnis und die potenzielle Unsicherheit in Bezug auf die Qualität der generierten Lösungen ernsthafte Risiken darstellen.
Wenn Sie sich also für die Verwendung von ChatGPT entscheiden, sollten Sie einen vorsichtigen Ansatz verfolgen. Es ist wichtig, die generierten Inhalte sorgfältig zu überprüfen, die Empfehlungen kritisch zu bewerten und sicherzustellen, dass die generierten Lösungen den Standards und Anforderungen des jeweiligen Projekts entsprechen.
Hinweise:
Im Laufe des Beitrags habe ich einen Kniff angewandt: ich verwende den Ausdruck “umfassende Nutzung”. Es macht sicherlich einen großen Unterschied, ob ich das Tool punktuell – bspw. als Ideengeber – nutze, oder damit einen oder gar mehrere Softwareentwickler ersetzen möchte. Die punktuelle Nutzung kann ich nachvollziehen, immerhin hat ChatGPT auch 3 Punkte erzielt, die umfassende Verwendung erschließt sich mir aber nicht. Bitte sehen Sie mir den Kniff nach; wie angekündigt, bin ich vermutlich nicht ganz objektiv. 😉
Und möglicherweise unterliege ich auch Amara’s Law, das besagt, dass Menschen dazu neigen, die Auswirkungen einer Technologie auf kurze Sicht zu überschätzen und auf lange Sicht zu unterschätzen.
Wenn Ihnen der Beitrag gefällt oder Sie darüber diskutieren wollen, teilen Sie ihn gerne in Ihrem Netzwerk. Und falls Sie sich für weitere Tipps aus der Praxis interessieren, dann testen Sie gerne unseren wöchentlichen Newsletter mit neuen Beiträgen, Downloads, Empfehlungen und aktuellem Wissen. Vielleicht wird er auch Ihr Lieblings-Newsletter!
[1] Mit Sicherheit sehen wir momentan gerade erst die Anfänge der Möglichkeiten, die uns KI zukünftig bietet wird. Im Sinne des Hype-Zyklus dürften wir als Gesellschaft nach dem technischen Auslöser auf dem Weg zum Gipfel der überzogenen Erwartungen sein.
[2] Diese Aussage stammt von ChatGPT und beantwortet die Frage, ob ChatGPT haftet, wenn Software mithilfe des Tools erstellt wird.
Michael Schenkel hat im t2informatik Blog weitere Beiträge veröffentlicht, u. a.
Michael Schenkel
Leiter Marketing, t2informatik GmbH