Von MVPs, Iterationen und Pairprogramming: Was ein Camperausbau mit agiler Softwareentwicklung gemeinsam hat
Es ist ein ambitionierter Plan gewesen, der sich da plötzlich aufgetan hat. Die Lust, mal etwas „mit den Händen” zu bauen, so ganz ohne Tastatur und Bildschirm, und die grundsätzliche Abneigung gegen das Zelten rief eine Idee auf den Plan: Warum nicht einen VW-Bus zu einem gemütlichen Camper ausbauen, das haben andere auch schon geschafft und sollte kein Problem sein!
Ein unschlagbares Angebot für einen VW T4 später stehen wir vor der Herausforderung, in den kommenden zwei bis drei Monaten fertig zu sein. Da kündigt sich nämlich das erste Festival im Kalender an — eines, auf dem man möglichst nicht zelten möchte.
Dass sich bei der Umsetzung dieses Projektes eine ganze Menge überraschende Parallelen zwischen meiner Arbeit als Softwareentwickler und der Arbeit an diesem privaten Handwerksprojekt gezeigt haben, darum soll es im folgenden Beitrag gehen.
Planung und Userstories: Die Roadmap definieren
Schnell wird klar: Das ist alles gar nicht so einfach und überhaupt dauert alles immer länger als gedacht. Ein „fertig” wird es in absehbarer Zeit nicht geben.
Also muss ein Plan her. Was hat die höchsten Prioritäten und was ist eher nicht so wichtig? Es soll auf jeden Fall möglichst schnell etwas Benutzbares bei dem Vorhaben herauskommen, aber auch die Wohnlichkeit darf nicht fehlen!
Ein iterativer Ansatz erscheint am sinnvollsten, sich vortasten und probieren, was gut funktioniert. Immerhin haben wir so etwas noch nie gemacht.
In der agilen Softwareentwicklung gehört zur Planungsphase die Erstellung von Userstories und die Definition einer Roadmap für die Entwicklungs-Iterationen. Beim Camperausbau ist die Perspektive auf die Anforderungen in Form von Userstories ebenso nützlich, denn diese in sich abgeschlossenen Einheiten beinhalten die gewünschten Funktionen und Eigenschaften und beschreiben in wenigen Worten das Ziel der Iteration.
Userstory 1: Als Festivalbesucher möchte ich in meinem Van auf einer echten Matratze gemütlich schlafen können.
Userstory 2: Als Festivalbesucher möchte ich autark 12V-Strom zur Verfügung haben, um mein Handy zu laden und Getränke zu kühlen.
Userstory 3: Als Festivalbesucher möchte ich im Van praktischen Stauraum für Kleidung und Pflegeartikel zur Verfügung haben.
Durch die Priorisierung und das weitere Präzisieren dieser Userstories ist es dann möglich, die einzelnen Schritte sauber zu planen und zumindest im Ansatz eine Vorstellung davon zu haben, wie lange jede Story in etwa dauern könnte.
Die obigen Beispielstories passen von den Prioritäten her schon gut. Schlafen können ist unsere oberste Priorität, danach der Strom und erst dann Stauraum. Denn zur Not tut es erstmal auch eine Reisetasche auf dem Vordersitz. Nachdem wir die Stories dann auf kleinere Teilaufgaben heruntergebrochen hatten, fiel es leichter, die benötigte Zeit zu schätzen.
Ein Beispiel hier für die Userstory 1:
Userstory 1: Als Festivalbesucher möchte ich in meinem Van auf einer echten Matratze gemütlich schlafen können.
1. Holz und weitere Materialien kaufen
2. Basis des Bettes aus Holz bauen
3. Matratze kaufen und zuschneiden
4. Matratzenbezug nähen
So näherten wir uns den, unter Beachtung der zur Verfügung stehenden Zeit, realistisch umsetzbaren Zielen an.
Iterative Entwicklung: Prototyping und Refactoring
Das Prototyping steht, üblicherweise und gerade bei komplexeren Aufgabenstellungen, am Anfang der Entwicklungsiteration. Diese Herangehensweise führt schnell zu ersten Ergebnissen und ermöglicht frühzeitiges Feedback bezüglich der Eignung eines Lösungsansatzes.
Beim Camperausbau können Prototypen ebenso hilfreich sein, um Irrwege frühzeitig aufzudecken und hohe Kosten zu vermeiden. Ein 1:1-Modell eines Möbelstücks aus Pappe und Tape beispielsweise kann Fragen nach der geeigneten Höhe oder der Bedienbarkeit schnell beantworten.
Zur iterativen Vorgehensweise gehört in der Softwareentwicklung außerdem zwingend das Refactoring. Softwareentwickler führen regelmäßig Refactorings durch, um ihren Code schrittweise zu optimieren und zu verbessern.
In der echten Welt ist Refactoring allerdings zuweilen etwas schwieriger umsetzbar. Denn es geht hier nicht um abstrakten Quellcode, sondern um handfeste Möbelstücke oder Elektroinstallationen.
Trotzdem ist es möglich, das Mindset zu übernehmen und dadurch das Endprodukt Camper Stück für Stück zu verbessern. Fehlt beispielsweise beim ersten Übernachten eine Ablage an einer bestimmten Stelle, kann man diese nachrüsten. Die Bedürfnisse der Nutzer müssen stets im Fokus bleiben und Designanpassungen vorgemerkt werden. Wie in einem Softwareprojekt sollte man seinen Backlog stets pflegen und neue Anforderungen einreihen.
Wichtig ist dann, sich in der nächsten Iteration nicht zu scheuen, Dinge neu zu denken, um die Umbauten nach und nach zu optimieren.
Gleichzeitig sollte man aber ebenso aufpassen, sich nicht im “Kleinklein” zu verlieren. Priorisierung ist hier, genau wie zu Anfang des Projekts, total wichtig.
Ein gutes Beispiel für eine solche Priorisierung war unsere Entscheidung, den „Küchenschrank” nicht von Grund auf selbst zu bauen, sondern einen von den Maßen ungefähr passenden Schrank zu kaufen und anzupassen. Das spart eine Menge Zeit, man muss das Rad nicht neu erfinden und erlaubt den Fokus auf andere wichtige Dinge, wie z.B. die Wasserversorgung, zu legen. Vergleichbar ist dieses Vorgehen in der Softwareentwicklung mit der Nutzung von fertigen Libraries, zu denen man nur noch auf das konkrete Projekt speziell abgestimmte Teile hinzufügen muss.
Kollaborative Teams und tägliche Besprechungen: Teamarbeit und Kommunikation
Wir arbeiten überwiegend zu zweit am Bus. Die Teamgröße ist also eher klein. Allerdings ist die Kommunikation untereinander trotzdem sehr wichtig:
Es sollte stets klar sein, wer an was arbeitet und wie der aktuelle Stand ist. Und auch wenn es keine Dailys beim Camperausbau gibt, so macht es doch Sinn, sich vor jedem Arbeitseinsatz erstmal kurz zu besprechen.
Wie in einem Softwareprojekt sollten die Teammitglieder stets im Bilde darüber sein, woran die anderen gerade arbeiten und ob es Probleme oder auch neue Anforderungen gibt.
Weiterhin ist es wichtig, auch kleine Erfolge zu sehen und zu feiern! Die Kommunikation sollte wertschätzend sein und im Team sollten die Stärken der jeweiligen Teammitglieder bekannt sein und an den richtigen Stellen ausgespielt werden.
Problemlösung und Pair Programming: Gemeinsames Beheben von Fehlern
Agile Methoden fördern die gemeinsame Problemlösung. Während, wie oben beschrieben, die Teammitglieder ihre Stärken natürlich in den Aufgaben ausspielen sollen, ist es trotzdem immer gut, Wissen möglichst breit aufzuteilen. In der Softwareentwicklung ist das Pair-Programming hierbei eine bekannte Praxis, beim Umbau eines Vans kann dieses Prinzip ähnlich adaptiert werden.
Ich habe mich beispielsweise beim Thema Solar- und 12-Volt-Elektroinstallation eingelesen, die nötigen Werkzeuge und Komponenten besorgt und ein wenig geübt. Die Installation haben wir dann, zumindest teilweise, gemeinsam gemacht, um später zu wissen, wo die Kabel verlaufen und wo es Probleme geben könnte.
Umgekehrt hat meine Camperausbau-Partnerin sich intensiv mit den Holzkonstruktionen beschäftigt und ich habe bei ihr viel darüber gelernt, als ich daran mitgearbeitet habe.
Gemeinsam kann man somit von Wissen und Erfahrung profitieren und ganz nebenher noch Neues lernen.
Kontinuierliche Integration und Testing: Qualitätssicherung
Der iterative Ansatz wurde weiter oben bereits vorgestellt, zieht sich aber durch alle Bereiche einer Produktentwicklung. Und nichts anderes ist ein selbst ausgebauter Camper: ein hoch individualisiertes Produkt, zugeschnitten auf die eigenen Bedürfnisse.
Um in der Softwareentwicklung die Qualität sicherzustellen, wird viel Wert auf kontinuierliche Integration und Testing gesetzt. Ähnlich können Camperausbauer einen iterativen Ansatz verfolgen, um Komponenten zu integrieren, Funktionalität zu testen und potenzielle Probleme frühzeitig zu identifizieren.
Der Einbau der Wasserversorgung ist dafür ein gutes Beispiel. Zuerst haben wir die Tanks probeweise aufgestellt, um zu sehen, ob alles passt wie erwartet. Dann wurde der Schrank installiert, das Waschbecken eingesetzt und die Tanks erneut gestellt. Alles sah gut aus, bis wir die Tanks mit Wasser befüllt haben und feststellen mussten: Wir brauchen hier dringend noch eine Sicherung für die (jetzt schweren) Tanks, sonst fliegen sie in der ersten Kurve durch den ganzen Bus. Außerdem fiel auf, dass die vollen Tanks sich nur schwer wieder in den Schrank einsetzen lassen. Der Punkt ist jetzt im Backlog gelandet.
Schritt für Schritt verbessert sich durch dieses Vorgehen die Qualität und auch die Sicherheit. Einzig automatisierte Tests, wie sie in der Softwareentwicklung gern genutzt werden, erscheinen im Camper-Kontext etwas schwer umsetzbar.
Retrospektiven und Anpassung: Lernen und Weiterentwicklung
Agile Methoden fördern regelmäßige Retrospektiven, in denen Teams ihre Arbeit reflektieren, Bereiche zur Verbesserung identifizieren und Pläne für zukünftige Iterationen erstellen.
Ähnlich können beim Camperausbau Retrospektiven durchgeführt werden, um den Fortschritt zu bewerten, Feedback zu sammeln und Möglichkeiten zur Verfeinerung zu identifizieren. So geschehen nach dem ersten Festival, zu dem wir tatsächlich mit einem zu 75 % fertigen Camper fahren konnten. Die Retro nach dem Festival war spannend. Es sind dann doch einige Punkte aufgefallen, die in der Praxis so nicht gut funktionieren oder wo schlicht etwas kaputt war. Zum Beispiel offenbarte ein starker Regenguss, dass die Lederschiene an der Schiebetür nicht ganz dicht ist und bei offener Tür für ein kleines Rinnsal direkt in den Bus sorgte. Der Punkt wurde direkt aufgenommen und eine Lösung gesucht, in diesem Fall die Schiene oberhalb mit Silikon abzuziehen.
Wird, ähnlich wie bei der Softwareentwicklung, eine Kultur des kontinuierlichen Lernens und der transparenten Kommunikation inklusive Benutzerfeedback etabliert, so hilft dies, das optimale Endergebnis zu erreichen.
Mein Fazit: Agile Prinzipien lassen sich für unüberschaubare Projekte aller Art nutzen.
Agile Prinzipien scheinen auch jenseits der digitalen Welt wirksam zu sein. Auf den Camperausbau übertragen, bringt dies echte Vorteile mit sich. Es ist meine Überzeugung, dass wir durch diese Vorgehensweise schneller zu einem besseren Ergebnis gekommen sind.
Wer also in nächster Zeit vorhat einen Camper auszubauen oder ein vergleichbares Projekt anzugehen, dem kann ich diesen iterativen und kollaborativen Ansatz, die wiederholte Auswertung von Feedback nachd er Benutzung und die daraus folgende kontinuierliche Verbesserung nur empfehlen.
Umgekehrt zeigt mir die Erfahrung mit diesem Projekt sehr deutlich, dass gute Softwareentwicklung eine im weiteren Sinne sehr handwerkliche Tätigkeit ist. Genau wie ein handwerkliches Hobby braucht es gute Werkzeuge, Wissen und eine vernünftige Herangehensweise, um erfolgreich ans Ziel zu kommen.
Das Thma würde sich auch gut als Beispielsprojekt mit Lego (egal ob Serious Play oder nicht) eignen, um agile Planung und floworientiertes Arbeiten zu erlernen. Zugegeben: den RL Test, ob der Camper zum Übernachten taugt, kann man nicht machen. Außer man baut sehr, sehr groß :).
Schön auch zu sehen: Wissensaufbau ist Teil eines agilen Projektes. Warum? Weil Komplexität durch “unkown unkown” gekennzeichnet ist. Die Einzellösungen sind deshalb zwangsweise iterativ mit Erkenntnisgewinnen.
Schön auch dein Ansatz für die Nachhaltigkeit bei der Lösung: aktives verhindern von Wissensinseln durch crossfunktionales Arbeiten, trotz Respekt für die Disposition von einzelnen Teamteilnehmenden für bestimmten Handwerkstätigkeiten.
Ganz interessant: die erste Retro nach dem ersten Release (aka Festivalbesuch) offenbart qualitative Herausforderungen. Warum “so spät”? Weil das Leitmotto “release early & often” bei Hardware-Lösungen aufwendig ist ist und nachträglich einen gesonderten Testaufbau erfordert. Beispiel für einen vorherige Regentest: Waschanlage. Simuliert das 8 Stunden Dauerregen? Nein, aber es ist ein klassischer Tradeoff.
Da sind wir dann auch beim hypothesengestützen Arbeiten bzw. Annahmen: “Die Tür ist dicht”. Auch Liebe und Sorgfalt helfen hier nur begrenzt weiter: uns erwischt – gerade im Komplexen – nie das Risiko, dass wir vorausahnen, sondern das “was wir sicher wissen”. Wichtiger als die Risikoplanung ist also ein geringer Explosionsradius und die Fähigkeit schnell nachkorrigieren zu können. Das geht mit Kabelbindern, Panzerband und … Agilität.
Vielen Dank für dein tolles Feedback, lieber Arne!
Den großen Legocamper würde ich mal probieren, man braucht aber auf jeden Fall eine gute Matratze weil sonst die Steinchen echt zwicken 😉
Tatsächlich haben wir einen Regentest mit Gartenschlauch für die Solarkabel-Dachdurchführung gemacht!
“Kabelbindern, Panzerband und … Agilität” – find ich ein super Motto 🙂