Neubau der Kurvenheld App
Nachdem der Kurven Tracker ein Erfolg war, hatten wir Beschlossen diesen nicht in die alte App zu integrieren, sondern auf der Basis des Trackers einmal alle Technischen Schulden hinter uns zu lassen und diesen von Grund auf neu Aufbauen.
Das Kernelement war bereits neu Entwickelt!
Wie fängt man einen Rewrite einer App an?
Nachdem der Tracker neu entwickelt wurde und die Entscheidung gefallen ist, die komplette App auf dieser Basis neu aufzubauen, war die Erwartung natürlich umso größer, dass die neue App genauso solide und zuverlässig wird wie der Tracker selbst.
Die Herausforderung dabei war allerdings: Wie baut man eine komplexe App neu auf, wenn man selbst zuvor noch keinen vollständigen Neuaufbau dieser Größenordnung umgesetzt hat?
Eine Test-App war bereits vorhanden, ebenso mein Budget-Tracker-Projekt, das ich zu dieser Zeit begonnen hatte. Trotzdem sollte die neue App langfristig stabil und sauber aufgebaut sein. In dieser Phase hatte ich einen externen Entwickler als Ansprechpartner, der mich beim Neuaufbau unterstützt und regelmäßige Code-Reviews durchgeführt hat.
Zu den ersten Schritten gehörten die Mehrsprachigkeit, IOC, Routing für spätere Deeplink-Funktionen sowie natürlich die Integration des Tracker-Packages.
Der geplante Zeitraum bis zum Release lag bei etwa sechs Monaten. Für eine App mit vielen Funktionen war das natürlich sehr optimistisch. Besonders, weil viele Verbesserungen der neuen App auch mit der Backend-Struktur abgestimmt werden mussten.
Ein gutes Beispiel dafür war das Thema Login, das aufgrund fehlender Kapazitäten immer wieder verschoben werden musste.
Als wir uns dem geplanten Release näherten und klar wurde, dass die App nicht rechtzeitig zum Saisonstart im März fertig sein würde, haben wir uns bewusst dafür entschieden, die App im Kern nochmals zu verbessern. Gerade durch externe Unterstützung, ausführliche Code-Reviews und die Erfahrungen aus dieser Zeit konnte ich mich fachlich enorm weiterentwickeln.
Probleme und Erfolge
Eins der größten Probleme während des Rewrites der Kurvenheld v7 war die hohe Fluktuation im Team. Insgesamt waren jeweils mehrere Entwickler im Frontend- und Backend-Bereich beteiligt, viele jedoch nur für wenige Monate. Gleichzeitig lag die Verantwortung mit darin, dass die App rechtzeitig zum nächsten Saisonstart veröffentlicht werden kann.
Das hat den Entwicklungsfortschritt natürlich immer wieder ausgebremst. Kaum kam das Projekt richtig in Fahrt, fehlten erneut Personen im Team oder neue Kollegen mussten erst eingearbeitet werden.
Im letzten halben Jahr bestand das Kernteam aus einem sehr erfahrenen externen Entwickler, der meine Code-Reviews durchgeführt und bei allgemeinen App-Themen unterstützt hat, sowie zwei Backend-Entwicklern, mit denen wir eng zusammengearbeitet haben, damit die Backend-Struktur den Anforderungen der v7 gerecht werden konnte.
Zusätzlich gab es wöchentliche Refinement-Meetings, in denen aktuelle Probleme, Fortschritte und der allgemeine Projektstatus besprochen wurden.
Anfang 2026 waren es nur noch wenige Monate bis zum geplanten Release. Gleichzeitig waren noch einige Features offen und es gab Probleme mit dem Tracker, der im Hintergrund teilweise keine Daten mehr aufgezeichnet hat, mitten in einer ohnehin stressigen Release-Phase.
Zusätzlich mussten in der heißen Release-Phase organisatorische Aufgaben teilweise direkt innerhalb des Teams übernommen werden. In dieser Zeit lag der Fokus stark auf dem Testen des Trackers, allgemeinem Bugfixing und schnellen Entscheidungen im Entwicklungsprozess. Tickets wurden teilweise direkt selbst erstellt, um keine zusätzliche Zeit durch lange Abstimmungen oder Sprint-Planungen zu verlieren.
Gearbeitet wurde in zweiwöchigen Sprints, wobei sich Anforderungen und Prioritäten regelmäßig verändert haben. Besonders an den Wochenenden wurden häufig kurzfristig neue Releases erstellt, damit Tracker und Dev-App weiter getestet werden konnten, um den Hintergrundfehler zuverlässig reproduzieren und beheben zu können.
Ende März 2026 konnte die App schließlich veröffentlicht werden. Einige kleinere Crashlytics-Fehler konnten bereits mit dem ersten Bugfix-Release 7.0.1 behoben werden, das noch vor Ostern veröffentlicht wurde. Auch wenn der ursprüngliche Zeitplan sehr ambitioniert war, konnte das Projekt erfolgreich und nahezu termingerecht abgeschlossen werden.
Was macht am Ende den Unterschied?
Ist die App nun besser als die alte?
Es gibt viele Punkte, über die man sprechen kann, wenn man die v6 mit der v7 vergleichen möchte. Am Ende sprechen die Ergebnisse jedoch für sich. Die neue App konnte ohne fatale Crashes veröffentlicht werden. Möglich wurde das einerseits durch umfangreiche Tests, andererseits durch eine deutlich verbesserte Architektur sowie die Entscheidung, verschiedene Flavors für unterschiedliche App-Zustände zu verwenden.
Hier nochmal die Unterschiede zur v6.
Testing
Zum Release verfügte die App über mehr als 200 automatisierte Tests, der Tracker separat zusätzlich über 100 weitere. Ziel war es nicht nur, Funktionen zu testen, sondern vor allem erwartbares Verhalten zuverlässig sicherzustellen.
CI/CD Pipeline
Unsere CI-Pipeline ermöglicht automatisierte Prüfungen bei jeder Änderung. Dazu gehören unter anderem Linting, Unit-Tests sowie die Überprüfung der Verbindung zu den App Stores. Probleme werden dadurch früh erkannt, bevor sie überhaupt in den Release-Prozess gelangen.
Lesbarkeit
Code sollte den Entwickler nicht überfordern, sondern nachvollziehbar und strukturiert aufgebaut sein. Deshalb wurde während der Reviews besonders auf klare Strukturen, saubere Kapselung und gut lesbaren Code geachtet.
Keine unübersichtlichen Dateien mit über 1000 Zeilen mehr.
Das Team
Auch wenn die Zusammenarbeit durch wechselnde Teamstrukturen teilweise herausfordernd war, konnte das Team den Release gemeinsam erfolgreich umsetzen. Bei Problemen wurde sich gegenseitig unterstützt, wodurch die App am Ende nahezu im geplanten Zeitraum veröffentlicht werden konnte.
Noch nicht überzeugt?
Die beste Möglichkeit ist, die App selbst zu testen.
Ob Motorrad, Auto oder Rennrad – die App funktioniert überall dort, wo Strecken erlebt werden.