Viele angehende Softwareentwickler:innen fragen sich heute, ob ihre Job Chancen geringer werden, wenn die AI-Tools stetig besser und größer werden. In den sozialen Medien findet man dutzende Influencer die diese Angst weiter aufheizen.
Was denken wir bei CIIT? Es gibt eine klare Antwort: Nein, das ist definitiv falsch.
Wir bei CIIT beschäftigen uns mit AI-Tools und versuchen so viele Vorteile wie möglich aus Ihnen zu ziehen. Dafür entwickeln wir verschiedene Prototypen und forschen in welchen Bereichen wir verschiedene AI-Systeme als Vorteil in unserem Daily Business verwenden können. Dies umfasst sowohl die Nutzung im Entwicklungsprozess als auch die Einbindung von AI Technologien in die von uns entwickelte Software.
Ein Grund, warum AI-Tools so perfekt zu uns Entwickler:innen passen, ist, dass Sie uns unterstützen können, Neues schneller und einfacher zu verstehen.
Wenn wir vor ein paar Jahren auf eine neue Technologie aufmerksam gemacht wurden, mussten wir vorab analysieren, ob diese überhaupt zu unserem Lösungen passt. Dafür müssen wir „Get Started“-Dokumentationen lesen, Prototypen bauen, um Analysen durchzuführen und so weiter.
Heute helfen uns dabei Chat GPT, Co-Pilot und andere AI-Tools enorm. Beispielsweise ist es möglich den gesamten Workflow eines Setups für eine Angular Applikation per Anleitung von ChatGPT durchzuführen.
Wir wollen im Folgenden ein kurzes Szenario beschreiben, wie ein Tool wie Chat GPT in der Entwicklung genutzt werden kann.
Der einfachste Use Case den ich euch vorstellen möchte ist ein Fall, der als Programmierer zwar immer wieder notwendig ist, aber meistens eher zu jenen Aufgaben zählt, den viele Entwickler:innen aus meiner Erfahrung nicht gerne machen. Es geht um die Nutzung von Datenbanken – kurz: SQL!
Erstellen wir mit ChatGPT eine Datenbank Tabelle für Employees. Das funktioniert mit folgendem Prompt:
Die Antwort von ChatGPT enthält folgenden Response:
Das Großartige an der von ChatGPT bereitgestellten Lösung ist, dass wir sogar alle Datentypen richtig aufgeschlossen haben. Diese können wir mit Hilfe des „copy code“-Buttons ganz einfach in unseren SQL-Editor kopieren. Auch sehr praktisch ist, dass durch einen einfachen Prompt dieser SQL-Code in eine JavaEE oder Sprint Entity verwandelt werden kann.
Mein Prompt dazu lautete:
Die Antwort von ChatGPT kann 1:1 übernommen werden. Man bekommt auch noch zusätzliche Informationen welche Parameter und Annotationen für welchen Wert notwendig sind und welche Ausprägungen es dafür gibt.
Wieso es dennoch notwendig ist, dass erfahrene Programmierer diese Tools nutzen, sehen wir, wenn wir für diese Entitäten auch noch Lombok einbauen wollen.
ChatGPT baut diese Entität zwar richtig auf Lombok um wie folgt:
Allerdings mit einer Schwäche: die Annotation @Data inkludiert die Annotation @EqualsandHashCode und @ToString. Das hat zur Folge, dass die Equals- und HashCode-Methoden mit allen Attributen geprüft werden – das ist jedoch in unserem Fall nicht erwünscht. Uns reicht hierfür schon der Vergleich des Primary Keys.
Der zweite Nachteil ist, dass die generierte ToString-Methode auch Lazy Daten laden könnte. Das hängt natürlich vom Datenmodell ab – in unserem Beispiel wird das nicht passieren.
Wenn man ChatGPT über die Risiken die Lombok und JPA betreffen befragt, bekommt man folgende Antwort:
Diese Antwort lässt jedoch nichts auf die möglichen Probleme, die wir gerade besprochen haben, schließen. Erst wenn wir ChatGPT detaillierter fragen, welche Probleme spezifisch für Lombok und JPA auftreten können, bekommen wir die folgende Antwort:
Wir können also mit Sicherheit sagen, dass ChatGPT ist ein sehr hilfreiches Tool ist, um sich das Coden zu erleichtern, um Neues zu lernen und dieses schneller zu verstehen. Es ist aber nicht allwissend und man muss sehr genau darauf achten, wie man Chat-GPT zu einer Problemstellung befragt. Zum Beispiel welche Funktionen problematisch werden können und welche nicht.
Persönlich nutze ich ChatGPT vor allem dann, wenn ich an einfachen Tasks arbeite, und mir bei einer Problemstellung eine Recherche im Web ersparen möchte, oder aber zu Technologien wechseln muss, die ich schon lange nicht mehr verwendet habe oder wieder „reinkommen“ muss. Was allen AIs bisher noch fehlt ist kreatives Denken und Zusammenhänge selbständig zu erkennen.
Sonst hätte ich nicht verschiedene Fragen stellen müssen wieso Lombok und JPA manchmal zu Problemen führt. Erst nachdem ich die AI zum Problem geführt habe, bekam ich auch die richtige Auskunft. Der generierte Code ist daher auch mit Vorsicht zu genießen. Dafür braucht es uns Entwickler:innen.
Ein weiteres Problem bei der Nutzung von ChatGPT und Co ist das Teilen von Informationen. Was für viele Unternehmen zum Problem führen kann, ist, wenn Mitarbeiter ihren Code 1:1 kopieren und in ChatGPT einfügen, um sich dann die Performance verbessern zu lassen. Der Code geht damit in fremde Hände, weshalb es immer notwendig ist, vorher abzuklären, ob die Nutzung von AI-Tools in euren Projekten möglich und überhaupt erlaubt ist. Erste Unternehmen bannen bereits AI-Tools, damit so etwas eben nicht passieren kann.
Ansonsten: Happy prompting!
Peter Stangl, 25.08.2023