Einstieg in die Agile Softwareentwicklung

Scrum Foundation

Wie Agile entstand

Klassische, lineare Softwareentwicklung hat seit Dekaden mit gravierenden Problemen zu kämpfen.

Als Beispiel, das Wasserfallmodell. Die Bearbeitung der Phasen von Planung, Entwurf, Implementierung Test und Wartung, erfolgt nacheinander. Die nächste Phase beginnt, wenn die vorhergehende abgeschlossen ist.

Dieser Prozess dauert von Monaten bis hin zu Jahren. Anschließend wird die Software geliefert oder veröffentlicht und es beginnt die Wartungsphase.

Die Phasen des Wasserfall-Modells entsprechen dem Deming Kreis. Dieser wird auch PDCA-Zyklus (Plan, Do, Check, Act) genannt und wurde von Edward Deming beschrieben.

Durch die Rahmenbedingungen des Wasserfallmodell und ergeben sich gewichtige Probleme:

  1. Umsetzungsfehler werden erst spät erkannt
  2. Durch die Entwicklungsdauer ist das Produkt für den Markt uninteressant geworden.
  3. Es gibt kein Feedback aus dem Nutzerkreis. Potenzial für Verbesserungen bleibt verborgen.
  4. Fehler zu beheben kostet viel Geld.
  5. Designfehler lassen sich, wenn überhaupt, schwer beseitigen.
  6. usw.

Was ist der Unterschied zwischen klassischen und agilen Modellen?

Bei klassischen Modellen liegt zwischen Anforderung und Auslieferung eine lange Zeitspanne. Es dauert mitunter Jahre, bis ein lieferbares Produkt fertiggestellt ist. Das führt zu den oben genannten Probleme.

Agile Modelle durchlaufen die gleichen Phasen von des PDCA-Zyklus, mehrfach in wesentlich kürzerer Zeit und. Die Phasen Plan, Do, Check, Act werden in wenigen Wochen, statt Monaten und Jahren durchlaufen.

Wird die Entwicklung durch agile Modelle schneller?

Nein und Ja.

Nein, weil der Menge der zu erledigen Arbeit, bei kürzeren Zyklen gleich bleibt.

Ja, wenn gleichzeitig die Werte und Prinzipien vom Agile Manifest gelebt werden. Dies verdeutlicht das zehnte agile Prinzip: Einfachheit, die Kunst, die Menge nicht getaner Arbeit zu maximieren, ist essenziell.

Durch das befolgen aller agilen Prinzipien, verstärkt sich deren Wirkung und Entwicklungsprojekte erreichen schneller ihr Ziel.

Kurze Zyklen ermöglichen die regelmäßige Bereitstellung, eines potenziell lieferbaren Produkts. Jedes potenziell lieferbare Produkt ist eine nützliche Erweiterung des Produkts, aus dem vorhergegangenen Zyklus.

Das Agile Manifest

Einige Leiter von Softwareentwicklungsprojekten fanden heraus, das deren klassisch durchgeführte Projekte, signifikant erfolgreicher waren als der allgemein Durchschnitt.

Warum waren diese Projekte erfolgreicher als der Durchschnitt? Siebzehn Projektleiter versuchten dies im Jahr 2001 in Utah, USA, herauszufinden.

Im Ergebnis, formulierten sie aus den Erkenntnissen das Agile Manifest.

Werte & Prinzipien aus dem Agile Manifest

Das Agile Manifest liefert Werte und Prinzipien, die das Resultat aus der Betrachtung erfolgreicher Projekte sind. Sie sind das Fundament agiler Modelle.

Die agilen Werte

Das Agile Manifest beinhaltet vier Werte:

  1. Wir schätzen Individuen und Interaktionen mehr als Prozesse und Werkzeuge
  2. Wir schätzen funktionierende Software mehr als umfassende Dokumentation
  3. wir schätzen Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlungen
  4. wir schätzen das Reagieren auf Veränderung mehr als das Befolgen eines Plans

Im agilen Manifest heißt es weiter: “Obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.”

Das bedeutet nicht, dass die rechte Seite unwichtig ist. Die Rechte Seite ist wichtig, wenn sie nützlich und sinnvoll ist.

Die agilen Prinzipien

Zusätzlich zum Agile Manifest wurden noch 12 Prinzipien formuliert, die agiles Vorgehen ermöglichen.

  1. Unsere höchste Priorität ist es den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufriedenzustellen.Dahinter verbirgt sich nichts weiter als: Baue, Liefere und Lerne daraus. Schau dir den Demingkreis an.
  2. Heiße ​Änderungen, selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.Dieses Prinzip fordert dich auf, zu jeder Zeit Änderungen in der Entwicklung zu akzeptieren und umzusetzen. Nutze den Wettbewerbsvorteil frühzeitiger Lieferungen. Sei bereit Änderungen zu akzeptieren und realisiere einen schnelleren Return on Invest.
  3. Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und bevorzuge die kürzere Zeitspanne.Beschreibt das ​Iterative Vorgehen. Je kürzer die Zeitspanne, um so schneller kann Feedback in die Entwicklung einfließen.
  4. Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.Baue mit allen Beteiligten ein gemeinsames Verständnis für das Ziel auf und halte eine positive Kommunikation aufrecht.
  5. Errichte Projekte rund um motivierte Individuen gib ihnen das Umfeld und die Unterstützung, die Sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen.Es ist herausfordernd, Teams motivierter Individuen zu bilden. Versuche alles, um motivierte Teams zusammenzustellen und motiviert zu halten.
  6. Die effizienteste und effektivste Methode, Information an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.Heißt auch: Schreib keine E-Mails, sondern begebe dich direkt zu deinem Gesprächspartner und interagiere mit ihm persönlich. Der Prozess lautet: Miteinander Sprechen, vereinbaren, dokumentieren.
  7. Funktionierende Software ist das wichtigste Fortschrittsmaß.Das bedeutet egal, was du tust, am Ende zählt die funktionierende Software.
  8. Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.Hier hilft es die Velocity, die Geschwindigkeit der Entwicklung, im Auge zu behalten und die Teams nicht permanent zu 100% auszulasten. Es ist wie mit einem Fahrzeugmotor. Bei andauernder Volllast, verkürzt sich die Zeit bis zu einem Ausfall.
  9. Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
    Mike Beedle schrieb in einem Tweet:
    „Agile heilt keine INKOMPETENZ. Sie können Teams coachen, um engagierter und kollaborativer zu sein, aber KEIN agiles Framework, keine agile Methode oder Denkweise wird Sie vor ​EKLATANTEM ​MISSERFOLG bewahren, wenn ihr Entwicklungsteam in Konstruktionspraktiken INKOMPETENT ist. Technische Exzellenz ist ein MUSS!“
  10. Einfachheit, die Kunst, die Menge nicht getaner Arbeit zu maximieren, ist essenziell.Für Softwareentwickler ist dieser Hinweis entscheidend. Jeder der in einem agilen Prozess mitwirkt, soll den einfachen Weg wählen. Keine Sonderlocken, keine goldenen Henkel, sondern: Mache weniger und liefere mehr.​ Sind Profis schneller wenn man sie antreibt? Nein, Profis sind schneller, indem sie Tätigkeiten auf das notwendige reduzieren.
  11. Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.Harte Vorgaben verhindern optimale Lösungen und Kreativität.
  12. In regelmäßigen Abständen reflektiert das Team wie es effektiver werden kann und passt sein Verhalten an.Die Verpflichtung zur kontinuierlichen Verbesserung. ​Perfektion existiert nicht.​ Ständige Verbesserung ist ein Grundbaustein der Agilität. Strebe nach Perfektion um näher an Perfekt heranzukommen ohne sie zu erreichen.

Das Agile Mindset

Um Agilität sinnvoll zu leben, bedarf es der richtigen Einstellung. Agilität ist keine Methode oder Anleitung. Agilität ist ein Mindset, die gedankliche Einstellung einer Person.

Du kannst agile Methoden einsetzen, ohne ein agiles Mindset zu besitzen. Im Ergebnis wird es schlechter, anstatt besser.

Vor- und Nachteile agiler Modelle

Agile Modelle funktionieren gut, weisen aber auch Nachteile auf. Die wichtigsten davon sind:

  • Vorhersagbarkeit steigt erst mit dem Projektfortschritt
  • Schwierige Budgetplanung
  • Gefühl von Kontrollverlust bei den Führungskräften
  • Laterale Führung erforderlich
  • Ungenaue Terminplanung

So schwerwiegend wie die Nachteile erscheinen, die Vorteile agiler Vorgehensmodelle überwiegt deutlich:

  • Der Auftraggeber darf den Projektverlauf direkt beeinflussen.
  • Flexibles reagieren auf  Veränderung und Neuerung
  • Frühzeitige Fehlererkennung
  • Motivierte Mitarbeiter
  • Schneller Return on Invest
  • Schnelle Anpassung an Marktverhältnisse

Enge Zusammenarbeit und reagieren auf Veränderung

Voraussetzungen für eine agile Softwareentwicklung ist einerseits die enge Zusammenarbeit zwischen Auftraggeber, Auftragnehmer und den Anwendern. Sind die Anforderungen nicht im Voraus bekannt, werden diese Schritt für Schritt während des Entwicklungsprozesses definiert.

Eine enge Zusammenarbeit ist unumgänglich. Über die Beschaffenheit des Produkts, muss eine stete Diskussion bestehen.

Andererseits wird vorausgesetzt, dass das Entwicklungsteam auf Veränderung eingestellt sein muss. Zu jeder Zeit sind Änderungen möglich, auf die das Entwicklungsteam reagieren muss.

Wann ist der Einsatz von agilen Modellen sinnvoll

Woran erkennst du, wann eine agile Vorgehensweise einem klassischen Modell vorzuziehen ist? Entscheide dich für das geeignete Modell, anhand des Entwicklungsziels.

Klassische Entwicklungsmodelle sind Prädiktive / Inkrementelle Modelle. Agile Entwicklungsmodelle sind Adaptiv / Iterativ.

Prädiktive / Inkrementelle Projekte

Wenn das Endprodukt vorhersagbar ist, entscheide dich für ein klassisches Modell. In klassischen Modellen ist es möglich, einzelne Komponenten als Inkremente parallel zu erstellen und hinterher zusammenzufügen. Klassische Modelle sind Prädiktive/Inkrementelle Modelle und heißen Beispielsweise Wasserfallmodell, V-Modell, Spiralmodell und so weiter.

Adaptiv / Iterative Projekte

Entscheide dich für ein agiles Modell wie Scrum, Kanban oder XP, wenn das Endprodukt nicht klar definierbar ist. Weil nicht feststeht, welche Bestandteile erforderlich sind und die Änderung von Anforderungen möglich ist, kommt eine prädiktive Herstellung nicht in Frage. In agilen Modellen ist nach jedem Zyklus, ein potenziell lieferbares Produkt verfügbar.

Halten wir fest: Bei unvollständigen Anforderungen an das Zielprodukt, erwäge eine agile Entwicklungsmethode.

Existieren zu Beginn der Entwicklung klare Anforderungen an das Zielprodukt, ziehe ein klassisches Modell oder prozessorientiertes Modell, wie Kanban, in Betracht.

Agile Modelle in Organisationen einführen

Es scheint leicht zu sein, agile Modelle in Organisationen zu implementieren.

Der Schein trügt. Viele Organisationen tragen auf der Verpackung die Bezeichnung “Agil” ohne Agilität zu leben. In der Praxis hat die Implementierung agiler Modelle Hindernisse zu bewältigen. Zu nennen sind:

  • Die Organisationsphilosophie oder -kultur steht im Widerspruch zu den zentralen agilen Werten.
  • Es besteht mangelnde Erfahrung mit der agilen Methode
  • mangelnde Unterstützung des Managements
  • Es formiert sich allgemeiner organisatorischer Widerstand gegen die anstehenden Veränderungen.
  • Mitarbeiter sind für die Anwendung agiler Modelle, unzureichend ausgebildet.

Führen Organisationen agile Modelle ein, scheitern sie, wenn:

  • Organisationen gegen Veränderung resistent sind,
  • Ein Kulturwandel in der Organisation nicht erfolgt,
  • Führungskräfte ihre Machtpositionen schützen und ihre Komfortzone nicht verlassen.

Ich wünsche dir eine stressfreie Zeit.
Frank

Frank Schatz

Frank Schatz

Als Trainer, Mentor und Coach ist Frank Schatz vielleicht einer der gefragtesten T-Shaped Agilisten im deutschsprachigen Raum. Er ist geprüfter Sachverständiger für agiles Projektmanagement und seit über 25 Jahren IT-Unternehmer, Agile Work Experte und Certified Instructor. Frank Schatz, damit es agil wird.

Das "Agile CatchUp" Briefing

E-Mail eintragen und "Abonnieren" klicken. Fertig!

Mit dem Briefing erhältst du Tipps & Tricks zu Agile und Informationen rund um die Angebote von Frank Schatz. Mit Klick auf „Abonnieren“ akzeptierst du die Datenschutzbestimmungen und weisst, das du den Empfang von E-Mails jederzeit und in jeder E-Mail widerrufen kannst.