Scrum

Funktionierende Software im Rythmus

Scrum basiert auf einem einfachen Prinzip. Man macht eine Liste von Produktanforderungen. Dann wählt man einige davon aus und entwickelt über einen relativ kurzen Zeitraum Software, die diese auswählten Anforderungen erfüllt. Danach liefert man, erhält Rückmeldungen vom Anwender/Kunden und beginnt erneut mit der Auswahl.

Scrum Rahmenmodell

Nicht verhandelbar ist, daß am Ende eines Durchlaufs (Sprint) funktionsfähige, getestete und produktionsreife Software steht. So wird dem Auftraggeber eine Wahlmöglichkeit geschaffen. Er kann entscheiden die Software mit dem jetzigen Funktionsumfang einzusetzen oder auf die nächste verbesserte Version zu warten.

Schlüsselbegriffe

Produktverantwortlicher (Product Owner)
Seine Aufgabe ist die Liste der zukünftigen Produktanforderungen zu pflegen und dem Entwicklungsteam für Fragen bgzl. der Details zur Verfügung zu stehen. Er definiert "was wollen wir".
Scrum Master
Er hilft dem Team die grundlegenden Regeln von Scrum einzuhalten und unterstützt das Team bei der Ausräumung von Problemen außerhalb des Teams, damit das Team sich auf die eigentliche Entwicklungsarbeit konzentrieren kann.
Liste der Produktanforderungen (Product Backlog)
Diese Liste enthält Beschreibungen dessen was das zu entwickelte Produkt können soll und ist nach Prioritäten geordnet. Der Produktverantwortliche kümmert sich darum, daß diese Liste möglichst gut den jeweils aktuellen Anforderungskatalog enthält und fügt Dinge hinzu oder nimmt weg oder ordnet sie neu.
Sprint-Planung
Im Rahmen der Sprint-Planung legt das Team fest welche Produktanforderungen im aktuellen Sprint erfüllt werden sollen.
Sprint
Im Sprint wird die eigentliche Entwicklungsarbeit durchgeführt. Am Ende des Sprints steht lauffähige Software, die potenziell in Produktion gegeben werden kann.
Tägliche Koordinierung (Daily Scrum)
Täglich stehen die Mitglieder des Teams für ein paar Minuten zusammen, um untereinander die jeweilige Tagesarbeit zu koordinieren.
Sprint-Nachbereitung (Sprint Review)
Nach Ende des Sprints setzen sich die Team-Mitglieder zusammen, um ihm Rahmen einer kurzen Rückschau zu betrachten was während des Sprints gut gelaufen ist oder wo es Verbesserungsbedarf gibt.

Vorteile

Der wesentliche Vorteil von Scrum ist, daß sehr zielgerichtet Software entwickelt wird. Durch die Vorgabe, daß am Ende eines Sprints lauffähige Software steht wird von ganz allein das Augenmerk aller Beteiligten auf das Wesentliche gelenkt. Ein zweiter Vorteil ist, daß inkrementell entwickelt wird und so nach jedem Sprint, der ja nur wenige Tage dauert, auf veränderte Anforderungen reagiert werden kann.

Herausforderungen

Trotz seiner Einfachheit bringt die Arbeitsorganisation mit Scrum eine Menge Schwierigkeiten ans Tageslicht. Die führen dann meist dazu, daß das Team es nicht schafft in der relativ kurzen Zeit, die für einen Sprint zur Verfügung steht, lauffähige und vollständig getestete Software abzuliefern. Häufig wird dann als Reaktion entweder die Zeit für den Sprint verlängert oder Teilaufgaben, wie z.B. das Testen, auf den nächsten Sprint verlagert. Am Ende stellen sich die erhofften Vorteile nicht ein.

So einfach und doch ohne Erfahrung kaum erfolgreich umzusetzen

Scrum hört sich wirklich einfach an. Versteht man aber, daß es sich bei Scrum nur um ein Rahmenmodell handelt und überhaupt nicht um eine komplette definierte Vorgehensweise alter Schule, so wird klar, daß es zur erfolgreichen Anwendung eine Menge Erfahrung braucht. Es geht nämlich gar nicht darum Scrum korrekt anzuwenden, sondern im Gegenteil eine Vielzahl anderer Maßnahmen durchzuführen, die das gute Funktionieren von Scrum erst ermöglichen.

Fit für die Zukunft

Arbeitsgruppen aus Spezialisten bringen un­ter­durch­schnitt­liche Leistung, weil die darin ver­sam­mel­ten Spezialisten nicht wirklich zielgerichtet zu­sammenarbeiten können. Die Grundlage für Erfolg ist immer technisches Können. Die Grundlage für dauerhaften Erfolg ist organisatorisches Können.

Gern unterstütze ich Sie bei der Entwicklung organisatorischer und technischer Fähigkeiten. Beispiele für dazu hilfreiche Maßnahmen sind:

Lernendes Team
Die Fähigkeit schnell zu lernen erlaubt Unter­nehmen jeder Art sich auf schnelle Ver­än­derungen im Markt gut anzupassen und dadurch fortwährend die Erwartungen von Kunden und Mitarbeitern zu erfüllen. Be­geis­ter­te Kunden beweisen den Erfolg!
Lean Startup
Beobachtung, Schluß­fol­ge­rung und Anpassung sind Schlüsseltechnologien. Lernen Sie durch kontrollierte Experimente, sorgsames Messen und Schlußfolgern Erkenntnisse für die weitere Unternehmensentwicklung zu gewinnen.
Agile Vorgehensweisen
Das Ziel agiler Vorgehensweisen war nie­mals das Ziel mehr Software schneller zu entwickeln (Effizienzsteigerung). Statt­des­sen geht es darum zielgerichteter die Ar­beit im Unternehmen zu organisieren - ganz egal, ob es dabei um Software­ent­wick­lung oder andere Tätigkeiten geht.
Defekte durch ATDD vermeiden
Auftraggeber und Entwick­lungsteam de­fi­nie­ren gemeinsam in Form einer aus­führ­baren Spezifikation was die zu entwickelnde Soft­ware tun soll.
Activity-Centered Design
Produkte mit gutem Design sind aus einem tiefen und umfassenden Ver­ständ­nis der Tätigkeiten des Anwenders her­vor­ge­gan­gen. Das macht sie fit für einen an­spruchs­vol­len Markt und besser als der Mitbewerb. In einigen Fällen kann dieser Unterschied zu gewöhnlichen Produkten einen ganzen In­du­strie­zweig auf den Kopf stellen.