SCRUM in der Softwareentwicklung

Stellt euch vor ihr arbeitet in einem Softwareunternehmen und euer Team steht vor der Herausforderung fertige Software auszuliefern. Die Software allein ist ja meist schon kompliziert genug, aber da gibt es noch weitere Herausforderungen. Euer Team, das aus Softwareentwicklern und Produktmanagern besteht, muss sich organisieren. Außerdem sitzt euch der Chef im Nacken, er will auslieferbare, fehlerfreie Software. Als ob es fehlerfreie Software geben würde…  Der Vertrieb muss Umsätze machen und braucht dafür endlich neue Programmfunktionen und Module, die verkaufbar sind.  Das Marketing will auch wissen, was wann an die Kunden kommuniziert werden kann. Last but not least: unglücklicherweise wurde dem Kunden schon zugesagt, dass das neue Modul mit Anfang des ersten Quartals nächsten Jahres verfügbar ist.

Stress pur! Das hört sich nach einer unmöglichen Herausforderung für euer Team an….

Ich stelle euch nun einen Ansatz vor, der helfen kann wieder Ordnung ins Chaos zu bringen. Der Ansatz nennt sich SCRUM und kann euch bei der Bewältigung der genannten Herausforderungen unterstützen. Wahrscheinlich nicht von heute auf morgen. Denn vergesst nicht, alles Neue braucht auch eine Anlaufzeit!

Der „SCRUM-Ansatz“

SCRUM in der Praxis

Wenn ihr euch über SCRUM informieren möchtet, gibt das Internet einiges her. Mir geht es aber vielmehr darum, euch SCRUM aus meinen Praxiserfahrungen näherzubringen. Für mich ist SCRUM ein Projektmanagement-Ansatz, der für Softwareunternehmen geeignet ist. Als Softwarehersteller will man eine Software entwickeln, die man an die Kunden ausliefern kann. Leider gestaltet sich der Prozess von Konzepterstellung, über Programmierung bis hin zu Auslieferung sehr schwierig. Genau da kann SCRUM helfen. SCRUM kommt heute in zahlreichen Softwareunternehmen zum Einsatz. Viele Jobinserate setzen Kenntnisse im Bereich SCRUM voraus und es gibt auch spezielle SCRUM-Ausbildungen. All das zeigt, dass SCRUM in der Praxis Zuspruch findet. Dies ist aus meiner Sicht nicht ganz unbegründet….

Mit SCRUM schrittweise zum fertigen Produkt

Stellt euch nun vor euer Team entwickelt eine Flohmarkt-App. Eure Kunden bekommen durch Nutzung eurer App immer die neuesten Infos über interessante Second-Hand-Artikel in deren Nähe. Ein entscheidender Ansatz bei SCRUM ist, dass man in Schritten entwickelt. Wenn wir uns also diese Flohmarkt-App vorstellen, so könnte man folgendermaßen vorgehen. Beachtet dabei bitte, dass die einzelnen Teilprodukte theoretisch auslieferbar sein müssen; ob die Produkte dann auch tatsächlich für die Kunden bereitgestellt werden, obliegt eurer Entscheidung.

  • Flohmarkt-App mit Kernfunktionalitäten und Möglichkeit der Produktsuche
  • Flohmarkt-App mit Kernfunktionalitäten sowie Content und Keywords bei Produkten
  • Flohmarkt-App mit Kernfunktionalitäten, die Bezahlung der Ware erfolgt allerdings noch via Klick auf den Bezahl-Button und Weiterleitung an den jeweiligen Anbieter
  • Flohmarkt-App mit Kernfunktionalitäten und eingebetteter Bezahlfunktion direkt auf unserer Seite

Dies bedeutet, dass ihr euch überlegen solltet, wie man das Gesamtprojekt (in unserem Beispiel: Auslieferung einer Flohmarkt-App) in einzelne sinnvolle Teilprojekte unterteilen könnte.

SCRUM steht für agiles Vorgehen

Gerade in unserem Beispiel sieht man deutlich, dass die Anforderungen immer komplexer werden. Es kommt in der Softwareentwicklung auch nicht selten vor, dass sich Anforderungen noch während der Umsetzungsphase ändern. Also wenn eurer Team denkt, dass sich nun alle (einschließlich der anderen Abteilungen wie Vertrieb, Marketing etc.) einig sind, dass die Produktsuche bei eurer Flohmarkt-App nur eine „einfache Suche“ zulassen soll und ihr gerade bei der Umsetzung dieser Funktionalität seid, so kann es vorkommen, dass der Chef nun doch lieber eine „erweiterte Suche“ hätte. Eine derartige Komplexität erfordert Agilität und dafür steht SCRUM. Mit SCRUM versucht man Problemen wie diesem zu begegnen.

REGELN statt Chaos

Ich habe anfangs bereits erwähnt, dass es zertifizierte SCRUM-Ausbildungen gibt. Vieles lernt man aber auch indem man es einfach tut. Allerdings solltet ihr in eurem Team schon bestimmte Begriffe und Regeln kennen, wenn ihr SCRUM anwenden wollt.  

SCRUM-Master und Product-Owner

Zu den Rollen bei SCRUM: Nun zum einen gibt es einen SCRUM-Master. Dieser gibt Acht, dass die besprochenen Prozesse eingehalten werden. Ein Beispiel: Der SCRUM-Master sieht, dass die vereinbarten Kernaufgaben noch nicht begonnen wurden und erinnert die Programmierer an den vereinbarten Fertigstellungstermin.

Der SCRUM Product-Owner hat die Hoheit über den Pool an Aufgaben. Ein Beispiel: Der Product-Owner bemerkt, dass der Aufgaben-Pool für die Entwickler für die nächste geplante Entwicklungsphase noch nicht vollständig ist, da noch ungenutzte Kapazitäten vorhanden sind. Er spricht die Produktmanager darauf an und kontrolliert ob Aufwandsschätzungen für alle Aufgaben vorhanden sind. Bitte beachtet auch, dass ausschließlich der Product-Owner Prioritäten festlegen darf. Beispielsweise darf der Product-Owner bestimmen, dass der Einbau der Suchfunktion für unsere Flohmarkt-App vor dem Einbau der Bezahlfunktion zu erfolgen hat. Der Product-Owner nimmt am Ende der Entwicklungsphase das gelieferte (Teil-) Produkt des Teams ab. An dieser Stelle agiert er also wie ein interner Kunde.

Das Product-Backlog

Das Product-Backlog kann man sich in etwa so vorstellen: Ein Pool mit sämtlichen Aufgaben für die Programmierer, die von den Produktmanagern erstellt werden und Aufwandsschätzungen zu den Aufgaben enthalten.

Der Sprint

Auch den Begriff Sprint solltet ihr kennen. Ein Sprint ist eine Entwicklungsphase, die üblicherweise 2 oder 3 Wochen lang dauern kann. In dieser Phase kümmern sich die Programmierer um die Fertigstellung der Aufgaben die laut Product Backlog („Aufgaben-Pool“) anstehen.

Das Sprint-Planning

An dieser Stelle möchte ich auch noch gerne das sogenannte Sprint-Planning erwähnen, da es ein sehr wichtiger Termin für alle Beteiligten ist. Im Sprint-Planning wird besprochen, welche Aufgaben sich euer Team im kommenden Sprint (also in der kommenden Entwicklungsphase) vornimmt. Das Sprint-Planning läutet sozusagen den neuen Sprint ein.

Mit Zielen zum Erfolg

Jeder Sprint sollte ein Sprintziel haben. In unserem Beispiel mit der Flohmarkt-App könnte das Sprintziel wie folgt lauten: Fertigstellung der „erweiterten Suchfunktion“ für die App.  Sprintziele geben allen Beteiligten Sicherheit, man hat eine Art gemeinsamer Nenner und weiß woran man die nächste Zeit arbeiten muss.

Bitte achtet darauf, dass ihr das Commitment von wichtigen Entscheidungsträgern (bpsw. Management, Vertrieb etc.) im Unternehmen habt. Die Sprintziele sollten auch von diesem Mitarbeiterkreis getragen werden. Ich empfehle euch, diesen Mitarbeiterkreis regelmäßig zu euren SCRUM-Meetings einzuladen. Dadurch erzeugt ihr Commitment und außerdem bekommt ihr wertvolles Feedback. Denn eigentlich sind die KollegInnen außerhalb eures SCRUM-Teams wie interne Stakeholder zu sehen, also eure „internen“ Kunden sozusagen. Sie müssen von eurem (Teil-)Produkt genau so überzeugt sein wie euer Team.

Also bitte bezieht auch MitarbeiterInnen außerhalb eures SCRUM-Teams in eure Ziele ein. Ich glaube, dann steht der Ausrollung der Software an den „echten“ Kunden nichts mehr im Weg!

 

Hinterlasse einen Kommentar!