Themenseite
Agile Softwareentwicklung
mit Scrum
Durch agile Herangehensweisen wie Scrum hat sich vieles in der Softwareentwicklung verändert. Es gibt etablierte Rollen, die sich durch Scrum verändern, und es gibt neue Rollen und Techniken, bei denen es spannend ist, sich das Wechselspiel näher anzuschauen.
Die agile Softwareentwicklung hebt dabei zwei Aspekte besonders hervor:
Iterativ inkrementelle Entwicklung
Die iterativ inkrementelle Entwicklung, in der wir in kurzen Interaktionen (den sogenannten Sprints) aus potentiell auslieferbaren Inkrementen lernen. In jedem Sprint nehmen wir uns also einen minimalen Fokus vor und liefern ein potentiell auslieferbares Ergebnis. Aus diesem Inkrement lernen wir und versuchen dann suggestive das Produkt aus den gewonnenen Erkenntnissen final auszugestalten. Dies hilft uns nicht nur passgenaue Lösungen zu entwickeln, sondern hilft uns auch Risiken frühzeitig zu erkennen und aufzulösen. Dieses Thema haben wir in der Podcast Folge #59: Oft missverstanden, inkrementelle Entwicklung in Scrum genauer aufgearbeitet.
Selbstorganisierte Teams
Zusätzlich zeichnet sich agile Softwareentwicklung durch selbstorganisierte Teams aus. In enger Zusammenarbeit und über die unterschiedlichst benötigten Disziplinen managt sich das Team selbst. Einmal eingespielt entsteht so eine hohe Dynamik aus der direkten Interaktion und der hohen Anpassungsfähigkeit. Die beteiligten Personen passen die Umgebung aus den eigenen Erfahrungen direkt an und das ist ein zentraler Vorteil.
Es gilt etablierte Professionen und Herangehensweisen im Sinne der agilen Softwareentwicklung weiterzuentwickeln.
Entscheidend dafür ist ein befähigter Rahmen, der uns hilft, das höhere Maß an Verantwortung zu übernehmen und die eigene Umgebung aus gemeinsamen Erfahrungen auszugestalten.
Um diesen Rahmen in wenigen Sprints mit Scrum zu schaffen, nutzen wir den Aufbau eines gemeinsamen Backlog als Orientierung, den wir dann im Kickoff aufgreifen und dann gemeinsam im ersten Sprint aufbauen.
Austauschen mit Experten
Folgende Themen haben wir im Austauschen mit Experten dazu ergänzend tiefergehend behandelt:
Software Architektur
Die Software Architektur bildet den Rahmen unserer Softwaresysteme. Da es in der Architektur, um die passende und nachhaltige Aufstellung zum jeweiligen Kontext geht, liegt der Fokus auf den richtigen längerfristigen Entscheidungen. Welche Implikationen sich für die Architektur aus der inkrementellen Entwicklung ergeben behandeln wir in der Podcast Folge #64: Architektur & Scrum mit Matthias Bohlen.
Qualität & Testing
In der Vergangenheit wurde Qualität hoch gewertet und das im Qualitätsmanagement und Testing in der Softwareentwicklung diese Tätigkeit möglichst unabhängig von der Entwicklung durchgeführt wurde. So wollte man die Qualitätssicherung frei von Einflüssen aus der Umsetzung halten. In der agilen Softwareentwicklung passt dieses Vorgehen aber weder zu der engen Zusammenarbeit in fachübergreifenden Teams und dem Lernen aus Inkrementen. In der Podcast Folge #65: Testing & Scrum mit Maik Nogens geht es um ein gutes Qualitätsmanagement in der agilen Softwareentwicklung und wie sich dies von den klassischen Vorgehensweisen unterscheidet.
Requirements Engineering (RE)
Für viele ist Requirements Engineering (RE) in seiner systematischen und disziplinierten Herangehensweise an die Spezifikationen und das Management von Anforderungen schwer mit der inkrementellen Entwicklung zu kombinieren. In der Podcast Folge #67: Requirements Engineering & Scrum zeige ich im Austausch mit Kim Lauenroth auf, dass ein Anforderungsmanagement eine Bereicherung für die agile Softwareentwicklung gerade in umfangreicheren Bestandssystemen ist.
User Experience Design (UX)
Die letzten Jahre hat sich User Experience Design (UX) als eigenständige Profession etabliert und einen wichtigen Beitrag für die Nutzung von Software Anwendungen geleistet. Aus der Prägung aus dem Design wird UX oft der Softwareentwicklung vorgeschaltet. Das passt nur begrenzt zur agilen Softwareentwicklung. Deswegen habe ich mich in der Podcast Folge #61: User Experience Design (UX) & Scrum mit Alper Aslan über das Zusammenspiel ausgetauscht.
Neben der Veränderung von bestehenden Professionen und Herangehensweise in der agilen Softwareentwicklung ist es aber auch spannend Veränderungen durch neue Technologien zu betrachten.
Cloud
Die Cloud hat das Potential die Softwareentwicklung nachhaltig zu verändern. Wir können beispielsweise ohne großen Aufwand Kleinststände verproben und deckungsgleiche Umgebungen für Test & Entwicklung aufsetzen. Damit ist es uns möglich, nicht nur leichter Continuous Integration (CI) zu betreiben, sondern es ist ein Grundpfeiler für Continuous Deployment. Es wirft aber auch die Frage auf, ob eine mit der Cloud gut aufgestellten Umgebung nicht Scrum entwächst und Scrum als Rahmen vielleicht sogar zum Hindernis wird für die weitere Optimierung. Aus diesem Grund habe ich mich mit Dennis Traub in der Podcast Folge #69: Cloud und Scrum über dieses Thema ausgetauscht.