Viele Projekte in der Softwareentwicklung werden heutzutage über agile Prozesse gesteuert. Gearbeitet wird oft nach den Scrum Prinzipien, welche Teil des agilen Projektmanagements sind. Dies schafft den Vorteil einer guten Struktur der Arbeitsabläufe sowie Übersichtlichkeit aller Aufgaben im Projekt.
Aber: Sollte jedes Projekt diesen Prinzipien folgen und welche Probleme kann es mit sich bringen? Diesen Fragen gehen wir in diesem Blogeintrag auf den Grund.
Vorab: Was ist agile Softwareentwicklung?
Agile Softwareentwicklung ist ein Ansatz zur Entwicklung von Software, der auf iterative und inkrementelle Prozesse setzt. Hierzu die wichtigsten Punkte:
- Iterative Entwicklung: Das Projekt wird in kurze, wiederholte Zeiträume unterteilt, sogenannte Iterationen oder Sprints. Die Dauer einer Iteration wird meist einmalig festgelegt. Im Normalfall dauert diese für eine bis vier Wochen an.
- Inkrementelle Entwicklung: In jeder Iteration wird ein funktionsfähiges Teil Software entwickelt, das dem Endprodukt einen zusätzlichen Wert verleiht. Dieses Stück Software wird dann dem Kunden präsentiert.
- Kundenzentrierter Ansatz: Die Anforderungen und Bedürfnisse des Kunden stehen im Mittelpunkt des Entwicklungsprozesses. Durch kontinuierliches Feedback und enge Zusammenarbeit werden Anpassungen und Verbesserungen vorgenommen.
- Selbstorganisierte Teams: Agile Teams arbeiten autonom und organisieren sich selbst. Jedes Teammitglied trägt Verantwortung für den Erfolg des Projekts und die Umsetzung der Aufgaben.
- Flexibilität und Anpassungsfähigkeit: Agile Methoden ermöglichen es, Änderungen und neue Anforderungen während des Entwicklungsprozesses einzubeziehen. Dadurch kann das Endprodukt den sich ändernden Bedürfnissen des Kunden besser angepasst werden.
- Kontinuierliche Verbesserung: Durch regelmäßige Reflektion und Anpassungen können agile Teams den Entwicklungsprozess kontinuierlich verbessern.
Um diese Prinzipien umzusetzen, werden Methoden wie Scrum, Kanban oder Extreme Programming eingesetzt, um die Softwareentwicklung agil zu gestalten.
Im genaueren wollen wir auf Scrum eingehen, ein agiles Framework für die Softwareentwicklung, welches sich auf Flexibilität, Zusammenarbeit und schnelle Lieferung konzentriert.
Welche Probleme birgt diese Art der Softwareentwicklung?
Macht es Sinn, dass jedes Softwareunternehmen agil arbeitet?
Um der Frage nachzugehen, sollten auch mögliche Probleme berücksichtigt werden. Im Folgenden werden wir darauf eingehen.
Problem 1 - Meetings
In Scrum werden Abläufe abgearbeitet. So sind die Teammitglieder auch Teil einiger Sprint-Meetings. Darunter fallen unter anderem die Sprintplanung, Weekly- oder Daily-Meetings, das Sprint Review und die Retrospektive.
Neben den Weeklys und Dailys, welche für Statusupdates gedacht sind und dem Namen entsprechend öfter pro Sprint vorkommen, wiederholen sich die anderen jeden Zyklus.
Diese Treffen bringen eine gute Struktur in die Entwicklung und helfen dabei, mit wenig offenen Fragen an das Ziel des jeweiligen Sprints zu kommen.
Wo liegt hier das Problem?
Nehmen wir als Beispiel das Daily Meeting, in welchem jeder Teilnehmer auf den letzten Stand, sowie die heutige Aufgabe eingeht. Hier können sich die Mitarbeiter über aktuelle Probleme austauschen und gegebenenfalls Unterstützung finden.
Oftmals ist es aber so, dass einer nach dem anderen zu Wort kommt und das ganz ohne Austausch. Das führt dazu, dass man nicht nur unnötig Zeit verschwendet, welche in die tatsächliche Entwicklung fließen könnte, sondern auch dazu, dass wichtige Informationen gegebenenfalls nicht zum Vorschein kommen.
Sollte sich dies nämlich ständig ohne Input anderer wiederholen, so kann es dem Mitarbeiter vorkommen, als wäre sein Beitrag nicht relevant und dieser versucht deswegen das Meeting einfach hinter sich zu bringen.
Es kann aber auch andersrum ablaufen. So kann ein Austausch in eine regelrechte Diskussion ausarten. Das kann auch Sinn machen, wenn jeder im Team betroffen ist, jedoch sind das meist zwei bis drei Personen, welche sich eigentlich im Nachgang besprechen sollten. Passiert das nicht und dies wird auch nicht unterbrochen, so büßen die anderen Teilnehmer wiederum Zeit ein.
Das mag auf den ersten Blick nicht allzu schlimm wirken, jedoch macht hier die Häufigkeit der Meetings das Problem aus. Außerdem haben die meist festgelegten Zeiten auch Auswirkungen auf die Arbeit der Mitarbeitenden. Man ist beinahe gezwungen, an jedem Meeting teilzunehmen. So wird der Workflow temporär unterbrochen. Dies ist besonders ärgerlich, wenn man sehr fokussiert an der anstehenden Aufgabe arbeitet. Zudem muss man nach jedem Meeting auch erst wieder in den Flow finden. Nicht jeder kann danach mit gleichem Fokus die Tätigkeit fortsetzen.
Problem 2 - Zu hoch angesetzte Schätzungen
Ein Punkt der Sprintplanung ist die Schätzung der anstehenden Aufgaben im kommenden Sprint. Hier wird meistens die voraussichtlich benötigte Zeit geschätzt, um die Machbarkeit des Sprints zu gewährleisten.
Sehr aufwändige Tätigkeiten können auch über mehrere Sprints laufen. Die summierten Schätzungen sollten nicht die Kapazitäten der Team-Mitglieder übersteigen. Die Zeitschätzungen werden meist sehr vage getroffen und in gewisse Staffelungen unterteilt. Beispielsweise in “< 1 Tag”, “1 - 3 Tage”, etc.
Dies kann dazu führen, dass ein unnötig großer Puffer für so manche Aufgaben zur Verfügung steht. Eine 15-Minuten Tätigkeit wird mit “< 1 Tag” getagged.
Natürlich ist zusätzlicher Puffer nichts Schlechtes, vor allem wenn dieser für herausfordernde Tasks verwendet werden kann.
Aber, wie kann es noch laufen?
Zwei Szenarien kommen in den Kopf, wenn es um falsche Zeitschätzungen geht. Zum einen nutzt der Mitarbeiter die zusätzliche Zeit, um sinnvollen Tätigkeiten nachzugehen oder mit der nächsten Aufgabe zu beginnen.
Zum anderen wird die Restzeit verwendet, um entweder nichts zu machen, da der Task ja erledigt ist oder die Umsetzung auf die ganze Dauer zu strecken. So kann es durchaus sein, dass an einem ein Wochen Sprint nur effektiv drei bis vier Tage, im schlimmsten Fall noch weniger, gearbeitet wird.
Wenn sich der Mitarbeiter zu sehr daran gewöhnt, fällt es ihm schwerer, mit Fokus wieder an die Arbeit zu gehen und schätzt eventuell Zeiten für die tatsächlichen Umsetzungen zukünftig falsch ein.
Problem 3 - Flexibilität
Je nachdem wie streng Scrum eingesetzt wird, wird es oftmals nur sehr ungern gesehen, dass während eines Sprints Aufgaben nachgezogen oder Sonderwünschen nachgegangen wird. Immerhin kann dies Auswirkungen auf die Releasezyklen haben und zu Verschiebungen kommunizierter Features in späteren Releases führen.
Diese strikte Art hat auch ihre Berechtigung, da so auch die Unternehmensziele vorangetrieben und für die Zukunft besser geplant werden kann. Nur würde man sich ab und an wünschen, auch etwas flexibler arbeiten zu können. Sei es Zwecks Weiterbildung oder um sich um interne Arbeiten abseits des Sprints zu kümmern.
Vor allem die persönliche Weiterbildung ist hier wichtig. Sehr oft befindet man sich in einer technischen Bubble und stößt nur sehr selten auf neue Technologien und Programmiersprachen. Wenn der Mitarbeiter sich aber hin und wieder neuen Themen widmen kann, kann dies nicht nur für mehr Motivation sorgen, sondern auch Referenzen schaffen.
So kann es sein, dass beim Aufbau eines neuen Projekts bereits Erfahrung existiert und nicht von null begonnen werden muss oder auch Projektteam übergreifend mehr Informationen ausgetauscht werden können.
Fazit
Im Großen und Ganzen ist die agile Softwareentwicklung toll, um eine gute und zuversichtliche Struktur in ein Projekt zu bringen, nur sollte man sich bewusst sein, dass sie nicht immer die perfekte Lösung für jedes Unternehmen oder jedes Projekt ist.
Es gibt verschiedene Probleme, die berücksichtigt werden müssen, und diese hängen stark davon ab, wie Agilität im jeweiligen Unternehmenskontext implementiert wird. Es ist wichtig anzumerken, dass die genannten Punkte lediglich als Anregung dienen sollen.
Vielleicht ist Scrum nicht in allen Unternehmensstrukturen sinnvoll einsetzbar oder es bedarf einer maßgeschneiderten Anpassung, die an bestimmten Stellen etwas flexibler ist.
Zusammenfassend lässt sich sagen, dass agile Softwareentwicklung eine effektive Methode ist, um Struktur und Zuversicht in Projekte zu bringen, jedoch sollte man stets bedenken, dass sie nicht universell anwendbar ist und möglicherweise Anpassungen erfordert, um optimal zu funktionieren.