Softwarearchitektur kommt vor Technologie
Vor Kurzem habe ich meine Jackie-Leven-Tribute-Seite mit Coding-Agenten innerhalb eines Tages von PHP auf Go umgestellt. Inhalt und Erscheinungsbild blieben gleich.
Die Seite begann als kleines persönliches Projekt über einen schottischen Songwriter, dessen Musik und Persönlichkeit mir sehr viel bedeuten. Je mehr Material ich zusammentrug, desto umfangreicher wurde das Projekt. Ich wollte das Archivmaterial über eine semantische Suche erschließen und entschied mich für Go als Grundlage für die nächste Entwicklungsstufe der Anwendung.
Dass der Umzug überschaubar blieb, lag an einer Entscheidung, die ich viel früher getroffen hatte: Texte und Kataloge von der Programmlogik zu trennen. Auch das nach außen sichtbare Verhalten der Seite war klar genug beschrieben, um die alte und die neue Fassung miteinander vergleichen zu können. Damit hatten die Agenten eine Struktur, innerhalb derer sie arbeiten konnten, und ich eine Möglichkeit, das Ergebnis zu überprüfen.
Das hat meinen Blick auf die Technologiewahl verändert. Früher bestimmten vor allem die Sprachen, die ich beherrschte, und die Werkzeuge, die in meinem Umfeld bereits etabliert waren, meine Entscheidungen. Durch die Arbeit mit Agenten kann ich heute auch Möglichkeiten in Betracht ziehen, in die ich mich früher erst aufwendig hätte einarbeiten müssen, bevor ich etwas Brauchbares hätte bauen können.
Zugleich achte ich stärker auf die Struktur der Anwendung: wofür die einzelnen Teile verantwortlich sind, wovon sie abhängen und wo ihre Grenzen liegen. Agenten arbeiten mit dem Code, den sie vorfinden. Klare Grenzen erleichtern es, eine Änderung auf den betroffenen Bereich zu beschränken und ihre Auswirkungen zu prüfen. Verschwimmen diese Grenzen, kann sich selbst eine kleine Idee durch die gesamte Codebasis ziehen.
An diesem Projekt konnte ich ganz konkret sehen, was mir eine durchdachte Architektur gebracht hat: die Freiheit, die Implementierung auszutauschen und dabei die Arbeit zu bewahren, die ich in die Seite gesteckt hatte.