Mal eben im Jahresurlaub
Wie ich eine alte Idee mit Hilfe von KI „im Vorbeigehen“ fertigstellen wollte – und das meinen Blick auf Softwareentwicklung verändert hat.
Ich hatte einen Plan für meinen Jahresurlaub 2026.
Andere fahren ans Meer, wandern durch die Berge oder nehmen sich zeitvergessen ihren Stapel lange ungelesener Bücher vor.
Ich hatte mir in den Kopf gesetzt, „mein“ Frontmatter-Format endlich fertig zu machen.
Genauer gesagt wollte ich eine Idee, die mich vermutlich seit zehn bis fünfzehn Jahren immer mal wieder beschäftigt – oder verfolgt, so genau weiß ich beides nicht - sowie in verschiedenen kleinen Implementierungen hier und dort im Einsatz ist, fertigstellen: Lima.
Die Grundidee ist schnell erklärt: Für Frontmatter – also die Metadaten am Anfang von Markdown-Dokumenten – war mir YAML schon immer zu schwergewichtig. Zu viel Datenformat, einige unschöne Sonderfälle und insgesamt zu viele Möglichkeiten für eine Aufgabe, die in meinem Alltag überaus klein und klar umrissen ist. 1
Also hatte ich irgendwann begonnen, nach meinen „eigenen Regeln“ zu spielen. Na ja, eigentlich nur nach einer Regel: verwende stets eine möglichst kleine, aber feine Untermenge von YAML, perfekt geeignet für die Art von Metadaten, die ich brauchte.
Das funktionierte.
Für mich.
Eine sehr lange Zeit lang.
Und so blieb es dann – bis heute.
Die Zeit ist reif – ich mache es einfach mit KI
Immer wieder hatte ich an „Lima“ herumgebaut. (Der Name ergab sich irgendwann auf dem Weg – Lima Is Metadata Annotation , ein rekursives Akronym wie YAML.) Kleine Parser, Detailverbesserungen, manchmal neue Ideen - einige gute und viele schlechte. Mitunter durchaus produktiv, aber selten so, wie man Software entwickelt, die man anschließend anderen Entwicklern erhobenen Hauptes und mit stolz geschwellter Brust vorstellen möchte.
Tests? Sagen wir: Das Ausprobieren konkreter Eingaben ist technisch betrachtet ja auch eine Form der Prüfung.
Dokumentation? Ich wusste schließlich, wie es funktioniert!
Eine Spezifikation? Die hatte ich im Kopf. Reicht doch.
Dort war sie übrigens ausgezeichnet aufgehoben. Niemand konnte Widersprüche finden. 😊
Mit den neuen KI-Werkzeugen, die ich seit 2025 immer intensiver einzusetzen begann, änderte sich schließlich meine Einschätzung grundlegend. Plötzlich erschien mir das alte Projekt realistisch umsetzbar.
Innerhalb kürzester Zeit.
Null Problemo!
Deshalb feixte ich zu Beginn meines Urlaubs sinngemäß:
„Das mache ich mal eben mit KI – aber richtig.“
Es war eine bemerkenswert schlechte Aufwandsschätzung – und vermutlich eine der produktivsten Fehleinschätzungen meiner Entwicklerlaufbahn.
Denn sobald ich Lima nicht mehr nur funktionieren lassen, sondern tatsächlich veröffentlichen wollte, wurde sichtbar, was „richtig“ eigentlich bedeutet.
Doch KI machte es nicht einfach
Mein erstes Aha-Erlebnis: KI zeigte mir nicht, dass Softwareentwicklung plötzlich unglaublich leicht geworden war. Sie zeigte mir zunächst, wie viel Arbeit ich all die Jahre unterschätzt hatte.
Ein Parser ist das eine. Ein definiertes Format etwas völlig anderes!
Plötzlich brauchte es eine normative Spezifikation.
Klare Semantik.
Definiertes Fehlerverhalten.
Grenzfälle.
Constraints.
Ressourcenlimits.
Einen Conformance-Korpus.
Versionierte Tests.
Dokumentation.
Eine Website.
Und wenn ich schon behaupten wollte, dass die Spezifikation unabhängig von einer konkreten Implementierung funktioniert, wäre eine zweite Implementierung natürlich auch nicht schlecht.
Oder eine dritte.
Was dabei tatsächlich herauskam, findet man auf https://github.com/limaformat/lima und https://limaformat.dev : eine normative Core-Spezifikation, eine References-Spezifikation, Implementierungen in TypeScript, Rust und Go und ein eingefrorener Conformance-Korpus mit 250 Cases für Core 1.0 und References 1.0 sowie weiteren 119 Cases für References 2.0.
Mein kleines Frontmatter-chen entwickelte plötzlich ein Eigenleben und einen erstaunlichen Appetit auf Text und Code! Daran wurde allmählich sichtbar, was „fertig“ bedeutet – und warum Lima über zehn Jahre lang unfertig geblieben war.
Zwischen „funktioniert für mich“ und „dafür stehe ich öffentlich mit meinem Namen“ liegen manchmal Welten. Und bei Lima war dieser Abstand sehr viel größer, als ich mir hätte träumen lassen.
Früher wäre wahrscheinlich genau an dieser Stelle wieder Schluss gewesen. Nicht aus mangelndem Interesse, sondern aus einer ziemlich banalen Kosten-Nutzen-Rechnung: Wie viele Abende investiert man in einen Conformance-Korpus für ein kleines persönliches Format? Wie viele Wochenenden in eine zweite Implementierung? Und wie viel Lebenszeit in die Frage, ob irgendein obskurer Grenzfall wirklich eindeutig genug spezifiziert ist?
Nur geschah diesmal etwas Neues: Mit KI blieb der Berg derselbe – aber ich konnte ihn plötzlich besteigen.
KI machte die Arbeit nicht trivial.
Aber sie machte ambitionierte Sorgfalt bezahlbar.
Das ist für mich rückblickend der entscheidende Unterschied.
Früher bestimmte der Aufwand, wie umfangreich ich ein kleines Projekt machen konnte. Heute kann ich zuerst entscheiden, welchen Umfang es haben soll – und KI hilft mir, die dafür benötigte Zeit auf ein vertretbares Maß zu reduzieren.
Wie Schuppen von den Augen
Dann, es muss gegen Ende meines Experiments gewesen sein, wurde mir bewusst, dass ich selbst keine einzige Zeile ge-schrieben hatte.
Keine Zeile TypeScript.
Keine Zeile Rust.
Keine Zeile Go.
Keine Zeile Spezifikation.
Keine Zeile Dokumentation.
Nicht einmal einen kleinen Teil der Website.
Ich hatte be-schrieben: Diktiert. Fragen gestellt. Entscheidungen getroffen. Anforderungen verschärft. Vorschläge verworfen. Widersprüche verfolgt. Reviews angefordert. Reviews von anderen KI-Systemen wiederum reviewen lassen. Erkenntnisse zurückgespiegelt und in die nächste Runde gegeben.
Planung, Umsetzung, Prüfung, Korrektur, Gegenprüfung.
Immer wieder.
Eine ziemlich lange Kaskade aus Mensch und Maschinen.
Zugegeben: Mein Vorhaben war nicht von Anfang an als „Experiment“ geplant. Erst am Ende sah es verdächtig danach aus. Und an dieser Stelle musste ich mir zwangsläufig die etwas unangenehme Frage stellen: Habe ich Lima überhaupt entwickelt, wenn ich keine einzige Zeile davon selbst geschrieben oder getippt habe?
Meine Antwort darauf lautet inzwischen eindeutig:
Ja.
Denn mein Beitrag – und der war ohne Übertreibung nicht gering – steckte trotzdem überall im Ergebnis.
Fragen über Fragen über Fragen
Während dieser Wochen hatte ich keineswegs das Gefühl, weniger zu denken.
Eher im Gegenteil.
Ich musste unfassbar viele Entscheidungen treffen: Was bedeutet diese Regel exakt? Was geschieht hier im Grenzfall? Brauchen wir diese Freiheit wirklich? Ist diese Formulierung eindeutig? Ist das Verhalten der drei Implementierungen tatsächlich dasselbe? Prüft der Korpus das, was die Spezifikation verspricht? Ist der Einwand dieses Reviews richtig – oder hat der Reviewer die Spec missverstanden? Und wenn er sie missverstanden hat: Ist dann vielleicht die Spec das Problem?
Zeitweise kam ich mir vor wie ein kleiner Junge, der seinen Eltern Löcher in den Bauch fragt.
Wieso?
Weshalb?
Warum?
[…]
Der große Vorteil von KI: sie schickt einen selbst nach der x-ten Nachfrage nicht ohne Abendbrot ins Bett. 😅
Langsam wurde mir klar: Je weniger ich selbst verfasste 2, desto mehr musste ich fragen. Mein schärfstes Schwert war plötzlich nicht mehr die IDE – sondern, wer hätte es gedacht, die Frage.
Damit verschob sich auch der Engpass meiner Arbeit: weg vom Coden und Produzieren, hin zum Entscheiden.
KI kontrolliert KI kontrolliert KI
Mein zweites Aha-Erlebnis: Ich hätte Lima ohne KI wahrscheinlich nicht nur nicht in diesem Umfang erstellen können, ich hätte diesen Umfang vermutlich auch nicht zuverlässig allein kontrollieren können.
Eine Spezifikation, ein größerer Conformance-Korpus, drei Implementierungen, Dokumentation und all ihre Wechselwirkungen erzeugen irgendwann mehr Oberfläche, als ein Einzelner zuverlässig gleichzeitig im Kopf behalten kann.
Also ließ ich verschiedene KI-Systeme miteinander interagieren und ihre Ergebnisse gegeneinander prüfen. Nicht blind. Nicht nach dem Prinzip: „Zwei KIs werden sich schon irgendwie einig sein“, sondern über explizite Regeln, Spezifikationen, Tests und kaskadierende Reviews.
Damit skalierte KI plötzlich beide Seiten: die Produktion UND ihre Kontrolle.
Der Mensch verschwindet dadurch aber nicht aus dem Prozess (oder der Loop), im Gegenteil: Wenn zwei oder mehr Systeme zu unterschiedlichen Ergebnissen kommen, muss jemand entscheiden, welche Begründung trägt. Wenn ein Review einen Widerspruch findet, muss jemand beurteilen, ob Implementierung, Test oder zum Beispiel Spezifikation falsch sind.
Damit wird Urteilskraft zum Engpass.
Hoppla, war das jetzt Vibe Coding?
Logisch, bei „Ich habe keine einzige Zeile selbst geschrieben“ drängt sich ein Begriff geradezu auf: Vibe Coding. Nur beschreibt dieser außerordentlich schlecht, was wirklich stattgefunden hat.
Mein Lima-Experiment war jedenfalls das Gegenteil von:
Prompt → sieht gut aus → fertig.
Es war eher:
Beschreiben → spezifizieren → begrenzen → erzeugen → testen → reviewen → hinterfragen → entscheiden → wiederholen.
Ich hatte keine Zeile selbst geschrieben, das ist wahr.
Aber ich hatte auch keine Zeile einfach so hingenommen.
Das führt zur eigentlichen Ironie der Geschichte: Meine früheren Lima-Versionen waren handgeschrieben – aber schlecht getestet, wenig dokumentiert, mehr improvisiert als geplant. Die vollständig KI-erzeugte Version dagegen bekam Spezifikation, Korpus, drei separate Implementierungen, eingefrorene Test-Suites und systematische Reviews.
Handgeschrieben ist nicht automatisch handwerklich.
Ausgerechnet nachdem ich (jedenfalls zeitweise) aufgehört hatte, Code direkt selbst zu schreiben, betrieb ich Software Engineering konsequenter als je zuvor.
Dass ich damit nicht allein war, wurde mir erst später klar. Martin Fowler unterscheidet etwa zwischen Vibe Coding und Agentic Programming : Der entscheidende Unterschied ist nicht, ob KI Code erzeugt, sondern ob der Mensch sich weiterhin für den Code, seine Qualität und sein Verhalten interessiert und die Ergebnisse prüft. 3
Noch näher an meinem eigenen Experiment lag für mich OpenAIs Beschreibung von Harness Engineering : Dort verlagert sich die menschliche Arbeit stärker auf Ziele, Regeln, Umgebung und Feedback-Schleifen; auch automatisierte beziehungsweise agentengestützte Reviews werden Teil dieses Systems. 4
Ich hatte diese merkwürdige Art zu entwickeln also offenbar weder als erster noch völlig allein entdeckt.
Das beruhigt.
Jedenfalls ein bisschen.
Und dann war da noch „Markdown+“
Lima hatte für mich noch eine unerwartete Nebenwirkung: es öffnete eine Tür. Denn ähnlich lange wie meine Frontmatter-Idee begleitet mich ein zweites Thema: Markdown.
Nur war dieses Projekt bis dato noch namenlos.
In meinem Kopf war es einfach Markdown+ . Markdown plus meine eigenen Regeln, plus Dinge, die von mir als Autor und Publisher immer wieder kläglich vermisst wurden.
Interessanterweise empfinde ich bei Markdown fast gegensätzlich zu YAML.
Bei YAML denke ich: Zu groß, zu viel.
Bei Markdown dagegen: Irgendetwas fehlt immer.
Die vielen Dialekte und Varianten lösen einiges davon. Aber mir fehlt eine klare Linie – und manches, auf das ich in meiner täglichen Arbeit einfach nicht verzichten kann.
Nach Lima hatte sich eine entscheidende Fragestellung verändert. Vorher hätte die Frage gelautet: Wann soll ich das alles jemals ordentlich machen? Jetzt lautet sie: Wie soll es eigentlich richtig aussehen?
Ich beschloss, das Experiment in meinem nächsten Urlaub (wahrscheinlich im Herbst oder Winter) wiederholen zu wollen. Kurzerhand taufte ich das bis dahin namenlose Markdown+ nun Markanto. – Markdown, zu einer vollständigen Autorensprache weitergedacht.
Lima entfernt, was nicht dazugehört.
Markanto ergänzt, was wirklich fehlt.
Das ist zumindest mein Plan.
Ein kleiner Sprach-Exkurs
Was ich aus diesem Urlaub mitnehme
Mein Ansinnen war es, schlicht und einfach ein altes Projekt – endlich! – abzuschließen. Tatsächlich mitgenommen habe ich etwas Größeres.
Lima ist fertig (für den Moment jedenfalls) – und das ist gut so.
Darüber hinaus erhielt ich einen überwältigenden Einblick in das, was ich als einzelner Entwickler zu leisten vermag.
Nicht, weil plötzlich mit KI alles puppeneinfach (Grüße an Thomsen!) wäre. Auch nicht, weil Expertise keine Rolle mehr spielen würde. Und erst recht nicht, weil man nur noch freundlich genug prompten müsste, um anschließend Cocktails schlürfend und gelangweilt darauf zu warten, dass die Software fertig aus dem System herausfällt.
Sondern weil sich das Verhältnis zwischen Idee, Aufwand und Sorgfalt verschoben hat.
Eine lange gereifte Idee sollte „mal eben mit KI“ fertiggestellt werden. Stattdessen wurde sie zum Selbstexperiment und zeigte: KI beschleunigt nicht nur einfach das Schreiben von Code – sie verschiebt die Grenze dessen, was ein Einzelner überhaupt mit professioneller Sorgfalt zu leisten imstande ist.
Das ist die Erkenntnis, die ich aus meinem Urlaub mitnehme.
Sie verändert die erste Frage, die ich mir bei jeder neuen Idee stellen werde.
Bis vor kurzem fragte ich noch: Wie aufwendig wäre das? Kann ich mir das überhaupt leisten?
Jetzt werde ich fragen: Wie könnte es richtig aussehen?