Vor 20 Jahren war die Softwareentwicklung noch ein linearer Prozess: Man sammelte die Anforderungen, erstellte einen Projektplan und arbeitete diesen Schritt für Schritt ab. Am Ende stand das fertige Produkt.
Diese sog. Wasserfall-Methode wird den komplexen Anforderungen der Branche heute aber nicht mehr gerecht: Moderne Softwareentwicklung muss agil sein. Wir stellen mit SCRUM das bekannteste Framework für Agilität vor und schauen uns an, wie Unternehmen agile Softwareentwicklung kosteneffizient umsetzen können.
Agile Softwareentwicklung & SCRUM – Effizienz 2.0
Die agile Methode ist die Antwort der Softwareentwicklung auf die Herausforderungen der digitalen Transformation und unserer schnelllebigen Gegenwart: Anfang der 2000er Jahre war klar geworden, dass die steifen Prozesse der Softwareentwicklung nicht mehr mit den sich ständig verändernden Anforderungen des Marktes Schritt halten konnten.
Das Agile Manifest
2001 beschrieb eine Reihe renommierter Softwareentwickler im sog. „Agile Manifest“ die notwendigen Strukturen und Prozesse, die Unternehmen aufbauen müssen, um unabhängig von ihrer Größe flexibel und schnell auf Veränderungen reagieren zu können. Mit anderen Worten: um agil zu bleiben.
Die Grundlagen dieses Frameworks wurden in der Folge auf andere Industrien übertragen und gelten heute nicht mehr nur in der Softwareentwicklung als Goldstandard des Projektmanagements.
Agile Methoden werden überall dort eingesetzt, wo Projekte nicht standardisiert, sondern bis zu einem gewissen Grad ergebnisoffen sind.
Wie funktioniert agile Softwareentwicklung?
Das Ziel agiler Softwareentwicklung ist es, den Entwicklungsprozess flexibler und schlanker zu machen als es bei der klassischen linearen Vorgehensweise der Fall ist. Wir sprechen in diesem Zusammenhang auch von der sog. „Lean Production“ (schlanke Produktion).
Der Begriff der schlanken Produktion stammt aus der japanischen Automobilbranche und bezeichnet eine systematisierte Produktionsorganisation, durch die nicht nur schnellere und bessere Ergebnisse erzielt, sondern gleichzeitig Kosten, Material und Arbeitskräfte eingespart werden.
Erreicht wird dieses Ziel durch eine verkürzte Entwurfsphase, absolute Transparenz und kontinuierliche Kommunikation zwischen allen Beteiligten.
Dies betrifft nicht nur die Mitglieder des Entwicklerteams, sondern der Status und die Fortschritte des Projektes werden auch regelmäßig mit dem Kunden und ggf. den Lieferanten abgestimmt.
Agilität schafft Flexibilität
In agilen Strukturen kann das Entwicklungsteam auch in der Entwicklungsphase noch flexibel auf Kundenwünsche bzw. Kritik eingehen, was Fehlentwicklungen vorbeugt und die Revisionsphase verkürzt. Wesentliche Merkmale der agilen Softwareentwicklung sind:
- inkrementelle Auslieferung: Zu Beginn des Projektes steht der Endzustand in der Regel nicht fest. Das bedeutet, dass das Projekt sich organisch entwickelt und z.B. auch Zwischenschritte bereits produktiv genutzt werden können.
- Zusammenarbeit in Teams: Die agile Softwareentwicklung lebt von selbstorganisierenden Teams, in denen die Kompetenzen nicht von Anfang an festgelegt sind. Vielmehr passen die Teammitglieder sich den Erfordernissen des Projekts an und entwickeln ihr Skillset autonom weiter.
- kontinuierliches Lernen und Planen: Bei der agilen Methode entwickeln sich nicht nur die Teammitglieder ständig weiter. Auch in die Entwicklung selbst fließen beständig neue Erkenntnisse ein.
Beispiel für agile Softwareentwicklung
Das oberste Ziel der agilen Softwareentwicklung ist es, Software so schnell wie möglich bereitstellen zu können. Das bedeutet, dass am Beginn der Planung nicht das langfristige Endprodukt als Ziel gesetzt wird, sondern stattdessen ein Ergebnis ins Auge gefasst wird, das mittelfristig schneller zu erreichen ist, und das bereits produktiv eingesetzt werden kann.
Wir bedienen uns eines Beispiels aus der Automobilbranche: Nehmen wir an, das langfristige Ziel der Produktentwicklung ist ein Porsche.
Zu Zeiten der Wasserfall-Methode hätte der Kunde kaum einen Einblick in den Entwicklungsprozess und bekäme einfach irgendwann den fertigen Porsche geliefert. Aber was, wenn sich die Anforderungen zwischendurch ändern? Was, wenn der Kunde dringend JETZT ein Fortbewegungsmittel braucht?
In der agilen Softwareentwicklung ist es jederzeit möglich, das Projekt anzupassen. Der Kunde braucht JETZT ein Fortbewegungsmittel?
Kein Problem! Dann ist der erste Schritt auf dem Weg zum Porsche eben das Skateboard, das der Kunde direkt benutzen kann. Als nächste Stufe bekommt er einen Roller, die dritte Stufe ist dann erst der Porsche.
Letzten Endes ist das Ergebnis das gleiche, aber der Kunde hat schneller ein Produkt, das er produktiv nutzen kann.
Was ist der Unterschied zwischen Agile und SCRUM?
Agilität ist das Leitprinzip, das im Agile Manifest beschrieben ist. Es handelt sich dabei allerdings eher um eine Art Philosophie als um konkrete Vorgaben. Für die Umsetzung dieses Konzepts entscheidet ein Unternehmen sich für eine konkrete agile Methode.
Diese Methode gibt das Framework vor, nach welchem die Projekte durchgeführt werden. SCRUM ist eines der bekanntesten Frameworks für die agile Softwareentwicklung. Andere bekannte Methoden sind z.B. Kanban, Crystal, Adaptive Software Development (ASD) und Feature Driven Development (FDD).
Was versteht man unter SCRUM?
SCRUM ist eine agile Entwicklungsmethode. Sie beruht auf der Überzeugung, dass Entwicklungs- und Produktionsprozesse zu umfangreich sind, als dass sich sämtliche Arbeitsschritte und Phasen im Vorfeld planen ließen. Anstelle der Planung im Vorfeld trägt ein Team, das sog. SCRUM-Team, die Verantwortung dafür, das Projekt autonom und selbstständig auszuführen. Das Ziel ist es, die Produktion im Prozess laufend zu verbessern und dadurch höchste Qualität mit möglichst geringem Aufwand zu erreichen.
Der Begriff Scrum ist keine Abkürzung, sondern kommt aus dem Rugby. Übersetzt heißt er soviel wie „dichtes Gedränge“. Beim Sport entsteht „Scrum“, wenn sich die Spieler drängelnd und schiebend um den Ball versammeln.
Der Gedanke des Mannschaftssports ist nicht unwichtig. SCRUM basiert nämlich auf der Annahme, dass die heutigen Anforderungen an Software- und Product Development nicht mehr von Einzelkämpfern, sondern nur von autonomen Teams gemeistert werden können. Ken Schwaber und Jeff Sutherland definierten SCRUM auf der Forschungskonferenz OOPSLA im Jahr 1995 folgendermaßen:
„SCRUM ist ein Rahmenwerk, innerhalb dessen Menschen komplexe adaptive Aufgabenstellungen angehen können, und durch das sie in die Lage versetzt werden, produktiv und kreativ Produkte mit dem höchstmöglichen Wert auszuliefern.“
Wie funktioniert SCRUM? Grundlagen
Als Methode für agile Softwareentwicklung funktioniert SCRUM empirisch, inkrementell und iterativ. Das bedeutet, dass die Anwendung auf Erfahrungen basiert, und dass Projekte in kleine Schritte bzw. Etappen (sog. Sprints) zerlegt werden. Diese Sprints werden so lange wiederholt, bis die Entwicklung bzw. das Projekt abgeschlossen ist. Ein Sprint dauert normalerweise zwischen zwei und maximal vier Wochen.
Video
Welche Rollen gibt es bei Scrum?
Im SCRUM-Prozess gibt es drei Rollen: den Scrum Master, den Product Owner und das Scrum-Team.
(1) Der Scrum Master ist kein klassischer Projektleiter, sondern eher ein Moderator. Er sorgt dafür, dass die Regeln eingehalten werden. Er oder sie schreitet ein, wenn es Störungen und/oder Verzögerungen gibt, und arbeitet in enger Absprache mit dem Product Owner, um die Wertschöpfung für das Unternehmen sicherzustellen. Darüber hinaus leitet er oder sie das Team zur Retrospektive an, um die Produktivität laufend zu steigern.
(2) Der Product Owner ist der- oder diejenige, der/die die Anforderungen priorisiert und die Reihenfolge festlegt. Im SCRUM-Team übernimmt er oder sie die Rolle des Auftraggebers bzw. die Rolle der Stakeholder und/oder die Rolle der ZielanwenderInnen. In der Produktentwicklung wird der/die Product Owner in der Regel vom jeweiligen Fachbereich gestellt.
(3) Das SCRUM-Team setzt sich aus jenen MitarbeiterInnen zusammen, die an der Entwicklung des Produkts bzw. der Software beteiligt sind. Da das Team sich selbst organisiert, ist es wichtig, dass hier verschiedene Skillsets zusammenfließen, um die definierten Anforderungen umzusetzen.
Wie funktioniert der Sprint?
SCRUM misst die Projektlaufzeit nicht in Wochen, Monaten oder Jahren, sondern in Sprints. Ein Sprint dauert zwischen zwei und vier Wochen.
Ziel ist es, dass am Ende jedes Sprints ein funktionsfähiges Produkt (ein sog. Inkrement) entstanden ist. In der agilen Softwareentwicklung endet z.B. jeder Schritt mit einer Software-Komponente, die der Auftraggeber bereits in Betrieb nehmen kann. Seine Rückmeldungen und etwaige Überarbeitungen fließen dann direkt in die nächste Sprintplanung ein.
Der SCRUM-Sprint besteht aus vier Phasen bzw. vier Ereignissen. Diese Ereignisse finden in Form von zeitlich beschränkten Meetings (Time Box) statt:
- Sprint Planning: Das Team entscheidet, welche Anforderungen aus dem Product Backlog (vorgestellt durch den Product Owner) im anstehenden Sprint umgesetzt werden können. Das Team zerlegt jede Anforderung in konkrete Aufgaben (auch Tasks oder Tickets) und legt sie im sog. Sprint Backlog an. Die Tickets müssen so kleinteilig sein, dass sie innerhalb eines Tages zu bewältigen sind.
- Daily Scrums: Der Daily Scrum ist ein tägliches sehr kurzes Meeting (max. 15 Minuten). Die Teammitglieder informieren sich gegenseitig über abgearbeitete Tickets und die Arbeitsschritte bis zum nächsten Meeting. Herausforderungen und/oder Probleme werden an den Scrum Master kommuniziert.
- Sprint Review: Am Endes des Sprints präsentiert das Team die erledigten (Teil-)Aufgaben und ggf. das fertige Produkt (Inkrement). Der Product Owner überprüft, ob das Ergebnis den Anforderungen entspricht und passt ggf. das Product Backlog an. Der Review dient damit auch als Ausgangspunkt für das nächste Sprint Planning.
- Sprint Retrospektive: In der Retrospektive besprechen das Team, der Scrum Master und der Product Owner gemeinsam, an welcher Stelle der Prozess noch optimiert werden kann. Mögliche Ansätze für Verbesserungen sind z.B. die Zusammenarbeit im Team und mit Zulieferern außerhalb des Teams, die Kommunikation und die angewandten Methoden.
Garantierte Transparenz durch SCRUM Artefakte
Die sog. SCRUM-Artefakte sind Dokumente, die der Transparenz dienen. Sie enthalten die Summe aller Planungen, aller ausgeführten Arbeiten und aller vollendeter Aufgaben, und bilden die Grundlage für die Überprüfung und die laufende Optimierung. In der agilen Softwareentwicklung mittels SCRUM gibt es 3 Artefakte:
Das (1) Product Backlog enthält die Eigenschaften des zu entwickelnden Produktes. Der Product Owner ist für die Priorisierung verantwortlich. Es können jederzeit Anforderungen aus dem Product Backlog entfernt oder hinzugefügt werden.
Im (2) Sprint Backlog legt der Scrum Master die für den jeweiligen Sprint geplanten Aufgaben fest. Noch offene Aufgaben fasst der Product Owner regelmäßig zusammen, damit alle im Team die Übersicht behalten.
Das (3) Produktinkrement oder Product Increment ist das funktionsfähige Zwischenprodukt, das idealerweise am Ende eines jeden Sprints steht. Die Einsatzfähigkeit des Inkrements ist obligatorisch, auch wenn der Product Owner es noch nicht in Betrieb nehmen bzw. noch nicht ausliefern will.
Agile Softwareentwicklung mit SCRUM
Der typische Ablauf in der agilen Softwareentwicklung sieht mit SCRUM folgendermaßen aus:
Das Product Backlog enthält sämtliche Anforderungen für das zu entwickelnde Produkt. Der Anforderungskatalog, mit dem die Entwicklung startet, wird im Laufe des Projekts regelmäßig angepasst, ergänzt und neu priorisiert. Die initiale Priorisierung ist Aufgabe des Product Owners.
Im Sprint Planning zerlegt das Entwicklungsteam die Anforderungen mit der höchsten Priorität in kleinere Aufgaben und schiebt diese in den aktuellen Sprint. Die im Backlog verbleibenden Anforderungen priorisiert der Product Owner für die nachfolgenden Sprints wieder neu. Während des Sprints arbeitet das Team konzentriert an der Fertigstellung aller ausgewählten Aufgaben.
Damit alle Mitglieder immer auf dem gleichen Wissensstand sind, hält der Scrum Master jeden Tag ein kurzes Meeting ab (Daily Scrum). Hier gibt jedes Teammitglied einen aktuellen Status sowie einen Ausblick auf die Aufgaben für den folgenden Tag. Außerdem können die Teammitglieder den Scrum Master auf mögliche Probleme hinweisen.
Im Sprint Review präsentiert das Team das funktionsfähige Teil-Produkt oder Inkrement. Im Falle der agilen Softwareentwicklung kann z.B. eine Vorführung am System in Echtzeit erfolgen.
GRAFIK ABLAUF SCRUM
Agile Softwareentwicklung & SCRUM-Teams einführen
Die Vorteile von SCRUM für die agile Softwareentwicklung liegen auf der Hand. Die Methode bietet das notwendige Framework, um komplexe und (bis zu einem gewissen Grad) ergebnisoffene Projekte produktiv und kreativ einer qualitativ hochwertigen Lösung zuzuführen.
Die enge Abstimmung und laufende Retrospektive helfen dabei, Fehler zu vermeiden. Durch die interdisziplinär zusammensetzten Teams gibt es weniger Abhängigkeiten von anderen Abteilungen, was wiederum den gesamten Entwicklungsprozess beschleunigt.
Kein Wunder also, dass immer mehr Unternehmen mit dem Gedanken spielen, ihren ROI (Return on Investment) mithilfe von SCRUM zu verbessern.
Agile Entwicklungsmethoden lassen sich allerdings nicht von heute auf morgen einführen. Damit Sie die Leitprinzipien der agilen Entwicklung (transparente Kommunikation und Selbstorganisation) in Ihrem Unternehmen implementieren können, brauchen Sie den richtigen strategischen Rahmen.
Wie das aussehen kann, können Sie am Beispiel des Medienunternehmens Heise hier nachlesen.
Wir schauen uns nachfolgend die wichtigsten Ebenen an, die Sie bei der Einführung von SCRUM-Teams auf keinen Fall außer Acht lassen sollten:
- Zeitplanung: Bis wann wollen Sie sämtliche Abläufe auf agile Entwicklung umgestellt haben? Legen Sie einen zeitlichen Rahmen fest, der als Orientierung für alle weiteren Schritte dient.
- Compliance: Die Einführung von SCRUM erfordert die Konformität mit verschiedenen regulatorischen Anforderungen wie ISO 9001, sowie die Einhaltung brancheninterner Sicherheitsstandards (mehr Informationen).
- Ressourcen: SCRUM funktioniert nur dann, wenn Sie ausreichend viele qualifizierte und interdisziplinär ausgerichtete MitarbeiterInnen zur Verfügung haben.
Herausforderungen der agilen Softwareentwicklung
Ohne Kommunikationskultur keine Agilität
Eine große Herausforderung bei der Einführung von SCRUM ist diezielführende Kommunikation. Die agile Softwareentwicklung erfordert eine kontinuierliche, effiziente Face-to-Face-Kommunikation, sowie tägliche kurze Abstimmungen mit allen Beteiligten.
In vielen Fällen müssen MitarbeiterInnen „kommunizieren“ nicht nur vollkommen neu lernen, sondern das Unternehmen muss auch ein System bereitstellen, dass diese Kommunikation fördert und die einzelnen Projektphasen für alle Beteiligten transparent darstellt.
SCRUM-Teams sprengen Abteilungsgrenzen
Zum SCRUM-Team gehört jeder, der an den Teamzielen beteiligt ist. Das heißt, dass ein agiles Team nicht nur aus Entwicklerinnen und Entwicklern besteht, sondern in der Regel auch Personen aus anderen Abteilungen oder anderen Zweigen/Bereichen einer Organisation einschließt. Das ist wichtig, weil Teams nur dann agil und autonom arbeiten können, wenn sie Mitglieder unterschiedlicher Fähigkeiten und Fachbereiche versammeln.
Diese Veränderungen erfordern von allen Beteiligten ein klares Commitment nicht nur für die neuen Strukturen, sondern auch für eine Umgewöhnungsphase, während derer die Prozesse geschliffen werden.
Insbesondere für Teammitglieder aus anderen Abteilungen kann der Switch zwischen der agilen Teamarbeit und ihrer regulären Funktion schwierig sein.
Agile Teams richtig zusammenstellen
Die zweite große Herausforderung ist die Zusammenstellung der SCRUM-Teams. Da die Teams vollkommen autonom arbeiten, ist es wichtig, dass alle notwendigen Skills und Kompetenzen vertreten sind.
Es sind zwar alle dazu angehalten, ihr Skillset laufend zu erweitern, aber es ist trotzdem wichtig, dass initial ausreichend Expertise vorhanden ist, damit das Team von Anfang an produktiv arbeiten kann.
Agile Softwareentwicklung auslagern
Sie wollen von den Vorteilen der agilen Softwareentwicklung profitieren, haben aber nicht die Ressourcen, um die notwendigen Strukturen in Ihrem Unternehmen zu implementieren?
In diesem Fall könnte Outsourcing für Sie die richtige Lösung sein! Indem Sie die Softwareentwicklung an spezialisierte ExpertInnen auslagern, sparen Sie nicht nur Zeit und Ressourcen, sondern können Ihre Aufwände auch besser kalkulieren (mehr Informationen über das Auslagern von IT-Services).
Beim Auslagern von Software Development zieht es die meisten Unternehmen nicht nach China oder Indien, sondern ins nahegelegene europäische Ausland.
Beim Outsourcing in Länder wie Polen, die Ukraine oder Rumänien sprechen wir aufgrund der räumlichen Nähe nicht von Offshore-Outsourcing, sondern von Nearshore-Outsourcing oder Nearshoring.
Nearshoring schlägt Offshoring nicht nur im Hinblick auf die kürzeren Wege, sondern es bietet auch die besseren Kommunikationsbedingungen. In unserem Blogartikel Nearshore vs. Offshore erörtern wir im Detail, warum Nearshoring vor allem für die IT-Branche das beste Preis-Leistungs-Verhältnis bietet.
Agile Softwareentwicklung in Polen
Die polnischen Softwareentwicklerinnen und -Entwickler gehören nicht nur offiziell zu den Besten der Welt, sondern sie sind auch sofort einsetzbar. Während Sie im DACH-Raum mindestens vier Monate brauchen, um Fachpersonal für On-Demand-Technologien zu rekrutieren, verlassen jedes Jahr rund 80.000 exzellent ausgebildete IT-Fachkräfte die polnischen (Fach)hochschulen.
Aufgrund ihrer jahrelangen Erfahrung sind die Anbieter vor Ort optimal an den westlichen Standard angepasst und haben die Remote-Arbeit perfektioniert (mehr Informationen über IT-Outsourcing nach Polen).
Ganz gleich, ob Sie Ihr gesamtes Software Development in ein Unternehmen mit agilen Strukturen auslagern wollen (zum Angebot), sich professionelle Unterstützung bei der Implementierung von agilen Prozessen wünschen (zum Angebot), oder Ihr eigenes SCRUM-Team um weitere kreative Köpfe erweitern möchten (zum Angebot): Nearshoring.io findet den richtigen Anbieter für Sie!
Was ist Nearshoring.io?
Hinter Nearshoring.io steht ein Team von deutsch- und polnisch-sprachigen Outsourcing-Experten. Als Vermittler zwischen polnischen IT-Fachkräften und Unternehmen aus dem DACH-Raum arbeiten wir ausschließlich mit Partnern zusammen, die DSGVO-konform agieren, sämtliche Compliance-Richtlinien und Sicherheitsstandards der IT-Branche erfüllen, und nachweislich die besten der Besten beschäftigen. Lernen Sie unsere Experten kennen und machen Sie sich mit unserem Leistungsversprechen vertraut!
Sie wollen Ihr eigenes internationales SCRUM-Team aufbauen und die operative Effizienz Ihres Unternehmens revolutionieren?