Software Maintenance bei onOffice
Software-Maintenance ist ein oft unterschätzter, aber unverzichtbarer Teil des Softwareentwicklungsprozesses. Obwohl die Entwicklung und das Deployment neuer Features oft im Rampenlicht stehen, macht die Instandhaltung der Software langfristig einen Großteil der Arbeit aus. Studien zeigen, dass ein hoher prozentualer Anteil der Kosten im Lebenszyklus einer Software auf Maintenance entfällt. Dieser Aspekt der Softwareentwicklung sichert nicht nur die Stabilität und Zuverlässigkeit, sondern bietet auch die Chance, Systeme kontinuierlich zu verbessern und anzupassen, während sich Anforderungen und Technologien weiterentwickeln. Wir stellen uns bei onOffice dieser Herausforderung, indem wir Software-Maintenance als einen Teil unserer Kultur ansehen und es strategisch in unsere tägliche Arbeit einfließen lassen.
Software Maintenance: Ein Blick hinter die Kulissen bei onOffice
„There is nothing permanent except change.“ – Heraclitus
Die Arbeit in der Entwicklungsabteilung von onOffice ist geprägt von ständigen Anpassungen, neuen Anforderungen und der laufenden Pflege bestehender Systeme. Diese Pflege, wir sprechen von Maintenance, ist ein für uns entscheidender Prozess, der die langfristige Stabilität und Effizienz unserer Software sicherstellt. Auch die ständig wachsenden Anforderungen durch mehr Benutzerzahlen und steigender zu verarbeitender Datenmengen sorgen für stetig neue Herausforderungen. Doch wie funktioniert das eigentlich bei uns? Schauen wir uns den Ablauf einmal genauer an.
Um onOffice und unsere Werte besser verstehen zu können, hier einen weiteren Blick hinter die onOffice Kulissen. Bei onOffice haben wir für uns den Leitsatz „Eat your own dog food“. In der Praxis bedeutet das für, dass wir selbst Anwender unserer eigenen Software onOffice enterprise sind. Neben einem Ticket- und Projektmanagement System gepaart mit einer Zeiterfassung bietet es für uns die ideale Umgebung, um unsere internen Prozesse abzubilden. Entsprechende Boards und Reports komplementieren das Bild für uns und ermöglichen es uns als Entwickler in die Rolle des Endanweders unseres eigenen Produktes zu schlüpfen, um so ebenfalls Maintenance Themen in der Real-Live Nutzung zu identifizieren und zu adressieren.
Tickets als Basis unserer Arbeit
Das Ticket als kleinstes, in sich abgeschlossenes Arbeitspaket sollte immer einen klaren und aussagekräftigen Titel sowie eine detaillierte Beschreibung haben. Bei Bug-Tickets bedeutet das zum Beispiel, dass wir folgende Informationen mindestens aufnehmen:
Was ist der aktuelle Zustand (IST) und wie ist der erwartete Zustand (SOLL)?
Diese Tickets sind auf der einen Seite mit unserem Zeiterfassungssystem und auf der anderen Seite mit einem Projekt verknüpft. So behalten wir den Überblick über die Zeit, die in jedes Ticket investiert wird, und können die Arbeit effizient planen.
Projekte: Mehr als nur Aufgaben
Projekte bündeln bei uns zusammenhängende Aufgaben. Jedes Projekt hat einen klaren Titel und eine Beschreibung, die definiert, was durch die Umsetzung erreicht werden soll. Ein großer Vorteil unserer Projekte ist, dass die enthaltenen Aufgaben flexibel miteinander verknüpft werden können. Das erlaubt uns, komplexe Workflows übersichtlich abzubilden und zum Beispiel die zeitliche Reihenfolge, in der Tickets bearbeitet werden sollen, vorzugeben. Unsere Arbeit wird in verschiedene Projektphasen unterteilt, die wir nach dem Kanban-Prinzip organisieren.
Der Lebenszyklus eines Projekts
Sobald ein Projekt erstellt wurde, landet es zunächst im Backlog – einer umfangreichen Liste von Projekten, die auf ihre Priorisierung warten. Im monatlichen Queue Replenish Meeting (QRM) wird entschieden, welche Projekte im kommenden Monat bearbeitet werden. Ausgewählte Projekte werden in die Input Queue verschoben, um dort auf die Umsetzung zu warten.
Sobald ein Entwickler alle aktuellen Aufgaben abgeschlossen hat, wählt er gemäß dem Kanban-Prinzip das höchstpriorisierte Projekt aus der Input Queue aus. Anschließend beginnt er mit der technischen Planung der Anforderungen, woraufhin das Projekt in die Phase Umsetzung übergeht. Nach der Fertigstellung der Arbeit wird das Projekt in die Input Queue QA verschoben, wo unser QA-Team die Änderungen testet. Fallen die Tests positiv aus, wird das Projekt für den Release freigegeben.
Milestones: Unsere großen Arbeitspakete
Milestones fassen bei uns thematisch verwandte Projekte zusammen. Obwohl sie in ihrer Struktur den Projekten ähneln, repräsentieren Milestones die größten und strategisch wichtigsten Arbeitspakete. Sie bieten uns eine langfristige Orientierung und helfen, den Fortschritt in größeren Entwicklungsschritten zu verfolgen.
Was sind Software Maintenance-Projekte?
In der Entwicklung bei onOffice unterscheiden wir zwischen zwei Arten von Projekten: diejenigen, die vom Produktmanagement angestoßen werden, und Maintenance-Projekten, die von den Entwicklern selbst initiiert werden. Maintenance-Projekte beinhalten:
- Refactorings
- Abbau technischer Schulden
- Sicherheits-Updates
- Technologische Modernisierung
- Verbesserung der Codequalität
- Dokumentation und Testabdeckung verbessern
- Aufwändigere Bug-Fixes
Der entscheidende Punkt bei Maintenance-Projekten und somit maßgeblich differenzierende Faktor zu anderen Projektarten ist: Der Workflow für den Kunden darf sich nicht ändern. Für die Entwicklung bedeutet das: Bestehende Logiken dürfen sich nicht ändern. Es gibt keine Anpassungen am Layout, an Texten oder an Bildern – der Fokus liegt ausschließlich auf Backend-Optimierungen, um so die Performance und Stabilität der Software zu gewährleisten.
Budget und Priorisierung von Maintenance-Projekten
Eine allgemeine Richtlinie für unser monatliches Budget ist, dass jedes Team etwa 10 % der Entwicklungszeit für Maintenance-Projekte einplanen kann (und auch angehalten ist dies zu machen). Das zwingt jedes Team, die wirklich dringenden Themen zu identifizieren und vorantreiben, statt wahllos zu optimieren. Natürlich kann dieses Budget nach Absprache angepasst werden, aber es sorgt dafür, dass der Fokus immer auf den wichtigsten Aufgaben liegt.
Die Priorisierung erfolgt auf Basis mehrerer Kriterien, wie zum Beispiel:
- Impact: Wie viele Kunden profitieren von der Änderung?
- Dringlichkeit: Müssen wir handeln, bevor z. B. Server überlastet werden?
- Wichtigkeit: Ist ein wesentliches Feature für eine bestimmte Anzahl von Kunden nicht nutzbar?
- Aufwand: Projekte mit wenig Aufwand und hohem Impact werden bevorzugt.
Wie identifizieren wir Maintenance-Themen?
Maintenance-Projekte entstehen häufig dann, wenn Kunden wiederholt Fehler melden, deren Ursachen sich nicht “mal eben” beheben lassen. Ein weiteres Beispiel ist die Notwendigkeit, die Codequalität in bestimmten Bereichen zu verbessern. Regelmäßige Refactorings und das Entfernen veralteter oder komplexer Codeabschnitte sind unverzichtbar, um die Lesbarkeit und Wartbarkeit des Codes langfristig zu gewährleisten.
Solche Themen identifizieren die Entwickler im Rahmen ihrer täglichen Arbeit und besprechen die Ideen dann mit ihrem Tech-Lead oder Team-Manager, bevor sie in Projekte umgewandelt und priorisiert werden. Bei onOffice verfügt jedes Entwicklungsteam über einen Tech-Lead und einen Team-Manager, die gemeinsam mit dem Team sicherstellen, dass die Maintenance Themen kontinuierlich thematisiert und adressiert werden.
Und was ist jetzt mit dem Thema Performance?
Eine Website wird als performant empfunden, wenn sie schnell und effizient auf Nutzeranfragen reagiert und eine flüssige, reibungslose Nutzererfahrung bietet. Wichtige Kriterien dafür sind
- Ladezeit: die Ladezeit sollte als reaktiv und zügig wahrgenommen werden und darf den Arbeitsfluss nicht negativ beeinflussen
- Responsiveness: Buttons, Formulare oder Links reagieren ohne Verzögerung
- Ressourcenschonend: Ressourcen wie Speicherplatz, Rechenleistung oder Netzwerke werden effizient genutzt
Performance-Probleme, die sich abzeichnen oder möglicherweise bereits durch Wachstum bestehen und womöglich auch unsere Infrastruktur langfristig belasten, sind für uns also von strategischer Bedeutung. Aus diesem Grund definiert das Produktmanagement, in Abstimmung mit den Teams zusätzlich zu den regulären Maintenance Themen quartalsweise Meilensteine, um die dringlichsten Themen dieser Bereiche regelmäßig und mit ausreichendem Budget gezielt anzugehen.
Fazit
Die Wartung und Pflege von Software ist ein kontinuierlicher, strategischer Prozess, der für onOffice von zentraler Bedeutung ist. In einer Welt, die sich ständig wandelt, sind Anpassungen und Optimierungen unverzichtbar, um Stabilität, Performance und Benutzerfreundlichkeit zu sichern. Dieser Ansatz sorgt nicht nur dafür, dass wir in der Lage sind, schnell auf neue Anforderungen zu reagieren, sondern erlaubt es uns auch, nachhaltig und vorausschauend zu arbeiten.
Die tägliche Nutzung der eigenen Software bringt für uns den entscheidenden Vorteil mit sich, dass Maintenance-Themen direkt von den Entwicklern entdeckt und somit von den Teams kontinuierlich adressiert werden. Unterstützt durch einen klar definierten Prozess und einer strategischen Budgetplanung stellt onOffice so sicher, dass dringende Maintenance-Themen effizient bearbeitet werden. Diese Ansätze sorgen langfristig für eine robuste und leistungsstarke Software, die den wachsenden Anforderungen der Nutzer auch zukünftig gerecht wird.
Abschließend zeigt sich: Maintenance ist weit mehr als ein Aufwand, den es zu minimieren gilt; sie ist eine Investition in Qualität und Langlebigkeit. In diesem Sinne bleibt onOffice dem Grundsatz „Eat your own dog food“ treu und integriert Maintenance konsequent in die eigene Unternehmenskultur – mit dem Ziel, unsere Software ständig weiterzuentwickeln und zu verbessern.