Ich habe ein Experiment gewagt. Ich habe ein Programm mittels Vibecoding erstellt. Hier hatte ich es kurz angeteasert. Das Projekt ist aber doch anders gelaufen als gedacht.
Die Aufgabe
Meine Partnerin und ich wollen ein zentrales Display in der Wohnung haben. Auf diesem Display sollen unsere Termine aus unseren jeweiligen Kalendern abrufbar sein. Ebenso benötigen wir eine Übersicht über die Abfahrten des Nahverkehrs hier in Bargteheide sowie die Pendelrouten meiner Partnerin. Und ein Dashboard wäre kein Dashboard, wenn es nicht auch die Wetterinformationen anzeigen kann.
Die Herausforderung
Die Daten müssen aus unterschiedlichen Quellen zusammengestellt und bereitgestellt werden. Die API des Nahverkehrverbunds HVV und eine Wetter-API müssen angebunden werden. Mein Kalender liegt als Emacs-Org-Datei vor. Und der Kalender meiner Partnerin kann als ICS-Kalenderlink abgerufen werden. Wir benötigen als idealerweise mehrere Komponenten.
Ein Backendsystem: Das Backend soll auf meinem Raspberry Pi 4 laufen. Dieser Computer läuft 24 Stunden am Tag und kann in regelmäßigen Intervallen die APIs abrufen. Die Daten sollen gesammelt und in einer JSON-Datei bereitgestellt werden. Die JSON-Datei kann dann per http von dem Display abgerufen werden.
Ein Dashboard: Die Ursprungsidee war hier ein 7-Zoll-Display mit integriertem ESP32 zu nutzen. Das System soll die JSON-Datei in regelmäßigen Intervallen laden, verarbeiten und darstellen. Im Verlauf der Umsetzung habe ich aber bemerkt, dass das Leben am Limit ist. Die Ressourcen sind wirklich begrenzt. Also bin ich auf einen Raspberry Pi Zero 2 mit einem 7-Zoll-HDMI-Display umgestiegen.
Benachrichtigungen: Das System sollte auch in der Lage sein Benachrichtigungen für Zugausfälle und Verspätungen an einen gemeinsamen Chat auf meinem Matrix-Server zu senden. Das sollte im Backend idealerweise geschehen.
Die Herausforderung ist damit klar umrissen.
Das Problem
Ich bin kein Software-Entwickler. Ich habe zwar vor ca. 25 Jahren einige Semester Informatik studiert, aber seitdem nicht eine Zeile Code mehr geschrieben. Mir sind die grundsätzlichen Strukturen eines Programms bewusst. Und als Productowner für ein Backendsystem kenne ich mich auch mit APIs gut aus. Also war das hier für mich ideal, um Vibecoding zu testen.
Vibecoding - Wenn man gefühlt der Regisseur ist…
Konzeptionierung mit Gemini als Sparringspartner
Ich bin es gewohnt mir durchaus umfangreichere Konzepte zu überlegen, zu beschreiben und zu dokumentieren. Ich habe hier für dieses Projekt mit Hilfe von Gemini sehr umfangreich im Vorfeld die Konzeptarbeit durchgeführt. Ich habe die APIs gesichtet, mich um die Zugangsdaten für die HVV-API gekümmert und das Konzept beschrieben. Gemini diente mir hier als Sparringspartner für meine Idee. Resultat war eine recht umfangreiche Datei, die Gemini dann noch einmal überarbeitet hat.
Wir hatten gemeinsam entschieden, dass das Backendsystem in Python umgesetzt werden soll. Das Dashboard soll Python mit dem Grafikframework Slint nutzen. Dadurch kann dann auf dem Raspberry Pi das Programm später direkt aus der Konsole gestartet werden und wir sparen uns einen X- bzw. Waylandserver/Kompositor.
Das war die Ausgangsbasis, um das Projekt zu realisieren (oder eben nicht, falls es scheitern sollte).
Antigravity - Coding ohne Codeeditor…
Ein Kollege gab mir den Tipp, dass ich Antigravity von Google verwenden soll. Dabei handelt es sich um die Entwicklungsumgebung, mit der man lokal auf seinem Computer Projekte erstellen und umsetzen kann. Antigravity ist keine klassische Entwicklungsumgebung. Man legt ein Projekt an. Fügt einen Arbeitsordner hinzu, in dem man idealerweise bereits das Konzepts, notwendige Assets, Mockups und andere Dateien abgelegt hat, die benötigt werden. In der Mitte ist ein Prompt. Rechts werden Resultate der KI angezeigt. Mehr ist nicht zu sehen. Kein Editor für Code, kein Compiler, kein Debugger… nichts, was ein Entwickler erwarten würde. Ich fing also an mit dem ersten Prompt. Gemini in Form von Antigravity las das Konzept und fing an die Umsetzung in Projektphasen zu unterteilen. Mir wurden Implementierungspläne vorgelegt, Fragen gestellt und wenn ich einverstanden sein sollte, würde Gemini loslegen.
Der Zyklus
Ich habe schnell bemerkt, dass die Umsetzung einem gewissen Zyklus erfolgt. Es erinnert stark an agile Entwicklung. Antigravity zerteilt solch ein Projekt in einzelne Unterprojekte. Und erstellt dafür dann Pläne für die Umsetzung. Bei Go legt Gemini dann los und fängt an zu entwickeln. Man kann der KI dabei zuschauen, wie sie überlegt, Code erzeugt, testet, Fehler selber findet, Fehler korrigiert und irgendwann ist sie einfach fertig. Ab und zu muss man gewisse Aktionen freigeben. Wenn z. B. ein Ordner angelegt werden soll, oder Python-Code ausgeführt werden muss oder in das Git-Repository Code gepusht wird, fragt die KI nach. Einige Freigaben kann man permanent erteilen, andere müssen jedes Mal bestätigt werden. Aber eigentlich habe ich immer nur kurz kontrolliert, was die KI machen möchte (also z. B. nicht einfach das Dateisystem löschen), es bestätigt und dann gewartet.
Gemini hat selber Entscheidungen getroffen, wie sie etwas umsetzen möchte. Die Technologien wurden bereits in der Konzeptphase beschlossen.
Wenn Gemini fertig war, habe ich das Ergebnis getestet. Fehler wurden von mir gemeldet. Gemini hat dann die Fehler analysiert, korrigiert und mir ein neues Ergebnis präsentiert. Und so ging dieser Zyklus so lange, bis ein Implementierungsplan abgearbeitet und fehlerfrei abgenommen wurde.
Das Projekt
Durch diesen Zyklus haben wir uns dann Schritt für Schritt durch das Konzept gearbeitet und zuerst das Backend erstellt. Anschließend wurde das Dashboard umgesetzt. Und als beide Komponenten soweit fertig und lauffähig waren, kamen noch diverse Erweiterungen hinzu, die mir dann während der Umsetzung noch eingefallen sind (das kennt wohl jeder… der Kunde hat immer während der Umsetzungsphase weitere Ideen).
Schlussendlich waren wir dann irgendwann fertig und das Dashboard stand. Es funktioniert bisher fehlerfrei. Das Backend ist robust und kann auch bei Problemen mit den externen APIs dennoch noch teilweise Daten liefern (und ich konnte beide wichtigen Fälle, Ausfall der HVV- und der Wetter-API, bereits testen).
Wie ist Vibecoding nun?
Erst einmal… es hat sehr viel Spaß gemacht. Ich habe innerhalb von ca. einer Woche das gesamte System mit Gemini entwickeln und einrichten können. Ich war wirklich positiv überrascht, wie schnell dieses Projekt umgesetzt werden konnte. Und mich hat auch die Qualität überrascht, die Gemini hier produziert hat.
Qualität? Was für Qualität?
Gemini hat grundsätzlich ein performantes und robust funktionierendes System entwickelt. Es gab während der Umsetzung nur sehr wenige Programmierfehler, die zum Versagen des Programms geführt haben. Gemini konnte die durch mein Feedback immer korrigieren, so dass wir schnell wieder lauffähigen Code hatten.
Aber wo Licht ist, ist auch Schatten…
Backenend-Entwicklung war für Gemini kein großes Problem. Es gab einige konzeptionelle Änderungen, die wir nachträglich noch integriert haben. Z. b. war eine Wetter-API an einem Tag teilweise nicht erreichbar. Also habe ich Gemini angewiesen, die alten Daten erst dann zu aktualisieren, wenn ein API-Call erfolgreich war. Und sollten wir nach einer Stunde immer noch keinen Erfolg haben, wird als Fallback eine andere API angesprochen, über die auch Wetterdaten bezogen werden können. Solch eine nachträgliche Änderung für Gemini ist kein Problem. Die KI analysiert jedes Mal den Code, plant die Änderungen und setzt sie um. Geht es schief, kann die KI sogar per Git selber wieder den alten Stand herstellen. Das ist cool. Viel Licht also…
… und es gibt auch viel Schatten…
Das Frontend umzusetzen war anstrengend. Gemini kann grundsätzlich aus einer textlichen Beschreibung recht gut, ansprechbare Oberflächen erzeugen. Wir wollten Slint dafür verwenden. Aber oh je… wenn man dann Layoutfehler hat wie z. B. überlappende Elemente, zu große oder kleine Texte, Ein- und Ausbau von Animationen, dann tut sich Gemini wirklich schwer. Das hat die meiste Zeit gekostet. Nach einer Änderung alle Masken kontrollieren, Screenshots von Layoutfehlern machen, einen Prompt schreiben mit den Problemen und auf die jeweiligen Screenshots hinweisen. Gemini denkt wieder nach, korrigiert etwas, man kontrolliert… und wenn es dann richtig dumm gelaufen ist, hat Gemini alles zerschossen.
Ich habe wirklich für diesen Part sehr lange mit Gemini gebraucht. Und ganz ehrlich: ich hatte vorher schon großen Respekt vor den Kollegen bei uns im Frontend… aber jetzt noch mehr. Das ist ja wirklich gruselig im Code etwas zu definieren und dann zu hoffen, dass es auch so aussieht, wie man es sich vorstellt. Und Gemini kann sich wohl nicht viel vorstellen.
Hier habe ich auch gemerkt, dass eine KI eben nicht kreativ ist und selber auch proaktiv bei Problemen Alternativen vorschlagen kann. Wir hatten mit gewissen Layoutideen von mir massive Probleme. Ein Mensch würde dann wohl einfach eine Alternative vorschlagen. Die KI versucht auf Biegen und Brechen meinen Wunsch umzusetzen und dreht sich dann irgendwann im Kreis. Den Kreis musste ich dann durchbrechen.
Wie ist Vibecoding nun wirklich?
Es macht Spaß und es ist anstrengend. Ich habe mich manchmal gefühlt, als wenn ich mit einem Programmiergenie zusammenarbeite, das aber überhaupt nicht selber denken kann. Und dann gab es Momente, da dachte ich: wow… wie genial ist Gemini hier an dieser Stelle plötzlich. Manchmal ist Gemini super pfiffig und erkennt Probleme.. und manchmal versagt er dann völlig.
Und der Zyklus ist anstrengend. Man bekommt so schnell neue Ergebnisse zum Testen vorgelegt, dass man wirklich keine Zeit hat durchzuatmen und einen Kaffee zu trinken.
Hätte ich das Projekt alleine umsetzen können? Auf gar keinen Fall! Ich kann keinen Code schreiben.
Hätte ein andere Mensch das für mich machen können? Ja klar… aber ich frage mich, wie lange ein Entwickler dafür gebraucht hätte? Wenn ich schätzen muss, habe ich für alles vielleicht 20-25 Stunden benötigt. Und da ist das “Experiment” mit dem ESP32 schon enthalten. Und meine nachträglichen Wünsche. Ich bezweifle, dass ein Entwickler das in der Zeit umgesetzt hätte.
Was denkst du nun?
Für so ein Einzelprojekt, dass ich privat nutze, ist das schon cool. Es senkt die Hürde massiv. Ein Nicht-Entwickler kann in einem akzeptablen Zeitrahmen solch ein Projekt auf die Beine stellen. Das finde ich schon cool.
Würde ich den Code jetzt kommerziell irgendwie einsetzen? Auf gar keinen Fall. Ich kann fachlich nicht beurteilen, ob der Code von Gemini wirklich gut ist (Fun fact: ich habe Claude Code ein Code-Review durchführen lassen - Der Code ist ausgezeichnet).
Ich frage mich, was das jetzt mit einem Softwareentwickler macht? Was würde ein Auszubildender sagen oder denken, wenn ich von dem Projekt erzähle? Wofür macht er eigentlich die Ausbildung?
Meine Antwort dazu: damit du auch weiterhin die Konzepte und Hintergründe kennst, wie ein gutes, performantes Programm entwickelt werden kann. Ob dafür der Entwickler zukünftig selber noch den Code schreibt oder eine KI die Hauptarbeit macht, werden wir wohl in einigen Jahren erleben. Aber wir benötigen, meiner Meinung nach, weiterhin die Experten, die sich wirklich auskennen. Irgendjemand sollte fachlich in der Lage sein, den Code zu kontrollieren und auch zu verstehen. Denn wenn man große Systeme betreut (unser Backend in der Firma ist wirklich gigantisch), dann kann eine KI das große ganze nicht überschauen und verstehen. Und der Code ist auch nur ein Teil des Ganzen. Die Hintergründe, die Prozesse und das Zusammenspiel mit anderen Komponenten ist das Know How der Entwickler. Das kann man einer KI schlecht erklären. Ansonsten müsste man alles sauber dokumentiert haben… und wer hat das schon.
Fazit
KI-Systeme werden nicht mehr verschwinden. Ob man sie liebt, hasst oder ihnen neutral gegenüber steht. Es ist eine Technologie, die bleiben wird. Egal, ob die KI-Blase platzen wird oder nicht. Das verzögert vielleicht alles nur. Mit Sicherheit wäre das sogar gut für uns. Denn das Tempo ist aktuell sehr hoch. Vielleicht zu hoch für uns alle. Ein etwas langsameres Tempo wäre für uns wohl besser.
Ich habe aber für mich erkannt, dass man durchaus etwas Tolles mit KI-Unterstützung erschaffen kann. Dass es auch die Einstiegshürde senken kann… und ein letztes: ich habe unfassbar viel in den letzten Tagen gelernt. Vieles, was ich auch für meinen Job nutzen kann. Besseres Verständnis für Technologien aber auch präzisere Beschreibung von Anforderungen. Denn am Schluss ist es egal. Wenn ich ein Ticket schlecht beschreibe, weiß weder eine KI noch ein Mensch, was ich haben möchte.
Zwei Bildern von Layoutfehlern
Einfach zwei Beispiel, die zeigen, wie schlecht eine KI ein Layout auf Anhieb bauen kann…
Die Maske sollte eigentlich mehr Widgets enthalten. Widget 2 und 3 sind einfach verschwunden.

Abbildung 1: Beispiel für Layoutfehler
Klare Anforderung: ein Monatskalender. Jede Spalte soll exakt die selbe Breite haben. Der Kalender soll die gesamte Breite des Layouts nutzen.

Abbildung 2: Ein weiteres Beispiel