Mein erstes Vibe-Coding-Projekt und was ich daraus gelernt habe
Schon seit mehreren Jahren nutzen wir auf der Arbeit KI-Tools. Aber meist für kleine oder spezifische Aufgaben. Also eine spezielle Funktion erstellen lassen, ein kurzes Bash-Script oder auch zu Recherche-Zwecken. Meist war es aber frustrierend, denn die KI hat sich ständig Funktionen ausgedacht, die es gar nicht gab (Halluzinationen) und nicht selten wurden wir durch die KI auch auf die falsche Spur geschickt. Erkennbar war aber auch, dass die Qualität von Code besser wird, je mehr Code es davon im Internet gibt. Bei der Hilfe zu einem WebExtension Add-On für Thunderbird, hat die KI extrem viel Halluziniert und war kaum zu gebrauchen. Es hat eher Zeit gekostet. Wenn man aber C, C++, JAVA oder go Code generieren lässt, ist es deutlich besser.
Dennoch ist es eine interessante und faszinierende Technologie. Aus passendem Anlass heraus, weil die Projekte klein und die Sprache go sein sollte, habe ich soeben mein erstes kleines Software-Projekt vollkommen mit KI-Unterstützung erstellt. Ich habe dabei viel über die Arbeit mit der KI gelernt und auch einen noch tieferen Einblick in die Materie erhalten.
Hier die Randbedingungen:
- Ich nutze Visual Studio Code mit dem Blackbox AI Coding-Assistenten.
- Das Projekt wurde in go (oder auch golang) geschrieben.
- Es verwendet die Cassandra-Datenbank.
- Es ist im Prinzip ein einfacher REST API Endpunkt, der im Netz verfügbar sein soll und dessen Verbindungen durch LetsEncrypt gesichert sein sollen (https).
- Ich kenne go bereits und habe bereits damit programmiert.
Weiter lesen? Klicke die Headline um den ganzen Artikel zu sehen!
Der initiale Prompt
Die Ausarbeitung des initialen Prompts war durchaus anspruchsvoll. Ich musste mir ja klar darüber werden, was ich haben möchte, welche Technologievorgaben ich mache und in welcher Sprache, an welchem Ort das Projekt abgelegt werden soll, ob und welche Konfig-Dateien verwendet werden sollen etc. Als besonders schwierig empfand ich, das so schreiben zu müssen als wenn ein Anfänger vor mir sitzt. Ich darf von kaum einer Sache erwarten, dass sie bereits bekannt ist. Also muss man sich gut sortieren und auch kleine Gedanken zum Aufbau oder der Struktur erfassen.
Mir fiel währenddessen sofort auf, dass ich diesen Prompt nur so schreiben konnte, weil ich bereits Ahnung von Softwareentwicklung habe und durch geschickte Vorgaben bereits viele Anfängerfehler vermeiden konnte.
Ich habe klare Vorgaben gemacht: Zur Struktur der API, der Konfig-Dateien und deren Werte, zur Verschlüsselung und dem Encoding, zu Prüfungen und Rückgabecodes und auch zu den Frameworks die in go verwendet werden sollen (zB echo als web framework und router). Ohne Erfahrung in diesem Gebiet wäre der erste Schuss deutlich wahrscheinlicher nach hinten los gegangen…
Nacharbeit
Nachdem der Prompt abgegeben wurde, hat die KI in wenigen Minuten das Projekt erstellt und auch gleich getestet. Aber einiges hat mir nicht gefallen und ich habe durch viele Prompts Dinge am Code korrigiert (Auszug):
- Es wurden viele Parameter einzeln an Funktionen übergeben, statt einfach die Konfigurations-Struktur zu übergeben.
- Verschlüsselungs-Keys wurden unnötig komplex und verbose gespeichert.
- Die Software hatte keinen sauberen Shutdown und damit beim Beenden der Software (SIGKILL oder Ctrl+d) die Datenbank potentiell beschädigt oder Verbindungen verwaisen lassen.
- Entscheidungen zur API und den Rückmeldungen nahmen keine Rücksicht auf die anderen Komponenten, die später darauf zugreifen sollen.
- Funktionen waren teilweise sehr Lang und Umfangreich, statt diese in leichter zu wartende Teilfunktionen zu unterteilen.
- Es wurde keinerlei Debugging-Log Funktion eingebaut. Die Suche nach Problemen ohne Debugging-Logs würde sich unnötig schwierig erweisen und sehr lange dauern.
- Ständig hat mir die KI neue Abhängigkeiten erzeugt. Mal eben ein anderes Framework für Logs, ein Framework für Stringverarbeitung etc. Ich musste das über mehrere Chats aus dem Projekt entfernen um ein möglichst wartbares Projekt zu erhalten.
Fazit
Die benötigte Entwicklungs-Zeit bis zum lauffähigen Produkt war unschlagbar kurz. In nur wenigen Stunden wurde das Projekt lauffähig erzeugt und auch dokumentiert. Das wäre mir, durch traditionelles Programmieren, völlig unmöglich gewesen. Keine Chance. Das kann also durchaus eine echte Hilfe im Alltag von Programmierern sein. Vor allem Routineaufgaben wie Validierung von API- und Nutzer-Eingaben oder die Errichtung eines Grundgerüstes und der Datenbank-Verbindung hat mir sehr gut gefallen und wirkliche Erleichterung gebracht.
Aber auch die Schattenseiten sind deutlich: Nur weil ich bereits programmieren kann und auch Erfahrung mit solchen Projekten habe, konnte ein brauchbares Konstrukt entstehen. Ohne mein Eingreifen und die bereits im Prompt, und dann später im Chat, erfolgten Korrekturen und Detailanweisungen, wäre es definitiv kein produktionsfähiges Softwareprodukt geworden. Also, es hätte schon irgendwie funktioniert, aber im Nachgang im Setup, im Betrieb, in der Weiterentwicklung und in der Wartung viele Probleme verursacht. Diese hätten die Zeitersparnis dann sicher zunichtegemacht und über lange Zeit für Probleme gesorgt.
Wir müssen in der nahen Zukunft wohl mit viel Software rechnen, die "irgendwie funktioniert".
Aber eben nicht gut, sicher oder performant arbeitet.
Es braucht also einen Senior-Entwickler, der Erfahrung hat und die Programmiersprache und die Tücken kennt. Aber woher lernt man das, wenn man nur Vibe-Coding macht? Ein Entwickler, der von Anfang an nur Vibe-Coding macht, wird diese Fertigkeiten und Erfahrung niemals aufbauen. Das bedeutet, wir bilden aus finanziellen Gründen, aber auch Bequemlichkeit, vermutlich bald keine Programmierer mehr aus. Solange es noch Senior-Programmierer gibt, welche die KI sinnvoll bedienen können, ist das eine nachvollziehbare Sache. Aber was ist in 10 bis 20 Jahren? Wenn die Entwickler mit Erfahrung in Rente gehen oder wegfallen? Hoffen wir mal, dass bis dahin diese Probleme keine Probleme mehr sind und die KI auch die Nebenschauplätze abdecken kann. Also den Kundenwunsch verstehen, in eine klare Definition und Anforderungs-Spezifikation umwandeln und dann auch Entwickeln und in Betrieb nehmen.
Auf Dauer wird demnach der Job des Entwicklers oder Programmierers wegfallen. Bisher habe ich das bezweifelt, aber mit der Zeit wird das wohl so kommen.
Für junge Leute mit Interesse am Programmieren gibt es, meines Erachtens, nur zwei mögliche Entscheidungen:
1) Lerne das Programmieren mit konsequentem Verzicht auf KI, um ein guter Programmierer zu werden. Das geht nur so! Dann, später, kann man die größeren Software-Projekte verstehen und mit KI-Einsatz gutes ermöglichen. Das wird auch in Zukunft ein guter Job sein, und auch gefragt sein.
oder
2) Verzichte auf eine Karriere als Programmierer und mach das allenfalls zu deinem Hobby für private Projekte. Nutze KI und akzeptiere, dass du es möglicherweise nicht richten kannst, wenn die KI versagt.

Es gibt keine veröffentlichten Kommentare.
Neuer Kommentar