Agiles Projektmanagement oder kurz „agile“ ist in den letzten Jahren sehr populär geworden. Die Vorgehensweise setzt sich immer mehr gegen etablierte, konservative Projektmanagementmodelle wie das sehr prominente „Wasserfallmodell“ („V-Modell“ u.a.) durch.
Der sicherlich bekannteste Vertreter der agilen Projektmanagementmodelle ist „Scrum“, abgeleitet vom gleichnamigen Begriff aus der Welt des Rugbysports (zu deutsch etwa „Gemenge“). Weitere, etwas weniger bekannte, Vertreter sind „Kanban“, „extreme Programming“ u.v.m.
Prinzipien
Die agilen Projektmanagementmodelle bzw. Entwicklungsmodelle sind sich einander sehr ähnlich, denn sie beruhen alle auf den selben agilen Prinzipien. Diese lassen sich knapp durch höhere Flexibilität, mehr Transparenz und schnellere Bereitstellung von Ergebnissen im Entwicklungsprozess zusammenfassen. All dies wird ermöglicht durch bessere Kommunikation. Kommunikation ist der Dreh- und Angelpunkt hierbei. Etwa 50% der Arbeitszeit in Softwareentwicklungsprojekten wird aufgewendet für Kommunikation. Hier steckt das größte Risiko, aber auch das größte Potenzial!
Intuitiv lässt sich die Liste der agilen Prinzipien (siehe auch „agiles Manifest“) sehr gut nachvollziehen und kaum jemand, der einige Jahre Berufserfahrung mit Wasserfall und Co. gesammelt hat, würde diesen widersprechen wollen. Die Vorgaben sind in der Theorie klar formuliert. Doch lassen sich diese „modernen“ Vorgehensmodelle auch ohne weiteres in die Praxis umsetzen? Die Modelle gibt es nicht erst seit gestern, dennoch setzen sie sich in der Praxis mitunter nur sehr langsam durch und dafür gibt es dann auch gute Gründe. Also woran hakt es in der Praxis?
Zunächst sollten alle Teammitglieder und bestenfalls alle Stakeholder, verstanden haben, was agil bedeutet und wie das gewählte agile Modell nun umzusetzen ist. Glücklicherweise sind die Grundstrukturen der agilen Modelle schnell erklärt und festigen sich auch schnell, nach einigen Anwendungen. Dennoch sollte man sich von diesen „einfachen“, teilweise philosophisch klingenden Techniken und Ritualen nicht täuschen lassen: Es ist essentiell diese auch kontinuierlich anzuwenden um nicht in „alte“ Verhaltensmuster aus der Wasserfallzeit zurückzufallen.
Ein Trugschluss ist, dass in der agilen Welt nicht dokumentiert wird. Ein gewisses Maß an Dokumentation ist immer notwendig - wie viel genau, das lehrt die Erfahrung des Teams. Wenn nun die Dokumentation schleichend, von Zyklus zu Zyklus (siehe z.B. Sprints in Scrum) immer weiter zurückgefahren wird, findet man sich irgendwann vor Problemsituationen, in denen man sich die wohldefinierten Dokumente des Wasserfalls zurückwünschen könnte.
Unterstützend wirken bei der Dokumentation und Aufgabenverwaltung Tools wie Tasktracker/ Bugtracker und Wikis. Darüber hinaus gibt es eine Vielzahl an weiteren Tools, die jeden einzelnen Prozessschritt der Projektarbeit unterstützen kann. Die Gefahr liegt hierbei eher darin, sich nicht zu viele neue Tools (mit exotischen Namen) auf einmal vorzunehmen, denn auch die Einarbeitung in ein Tool erfordert die Zeit aller Teammitglieder. Bei aller Tool-Pflege soll am Ende ja schließlich noch Software entwickelt werden. =)
Team und Arbeitsumgebung
Eine der wichtigsten Forderungen von agile lautet „Enable the team!“. Es geht um Rollen & Fähigkeiten, Befugnisse und die Arbeitsumgebung. Das Team muss möglichst autonom handeln können. Dazu müssen alle nötigen Rollen im Team vertreten sein: Entwickler, Tester, Vertreter für die Anforderungen und weitere (in Scrum beispielsweise noch ein Scrum Master zur ständigen Optimierung des agilen Prozesses). Unabhängig von den Rollen sollte das Team alle Fähigkeiten inne haben, die es benötigt um ein Stück Software bis in die Produktion zu bringen. Bestenfalls werden die Fähigkeiten jeweils durch mehr als eine Person abgedeckt, um Belastungsspitzen und Ausfallzeiten zu kompensieren oder um einfach mal eine zweite „Fachkundige Meinung“ einholen zu können.
Das Team sollte auf möglichst wenige Rollen/Fähigkeiten bzw. daran hängende Prozesse von außerhalb angewiesen sein, denn jede Schnittstelle nach „außen“ ist im Zweifelsfall eine Schnittstelle zur nicht-agilen Welt, bei der man direkt mit starren Servicezeiten, Vorlaufzeiten, Dokumenten, Fristen, Unterschriften etc. zu kämpfen hat.
Zuletzt sollten die Rahmenbedingungen für die Kommunikation innerhalb des Teams möglichst gut ausgestaltet sein. Sicherlich können agile Teams auch über den Globus verteilt funktionieren. Aber zunächst unscheinbare Erschwernisse wie fehlende physische Nähe, unterschiedliche Zeitzonen, schlechte Telefonverbindungen und kulturelle Differenzen stellen sich doch meist als großer Nachteil heraus. Im Endeffekt wird die ein oder andere Frage nie gestellt, der ein oder andere Kommentar ignoriert, ein wohlgemeinter Tipp falsch verstanden oder eine Emotion unterdrückt. All das fällt in die Kategorie nonverbale Kommunikation. Laut Wissenschaft beträgt die Wirkung dieser Art von Kommunikation bei einem Gespräch 55% (38% Stimmlage, 7% Inhalt) und eben dieser Teil geht fatalerweise verloren.
Zuletzt ist eine Einbindung des Kunden essentiell. Zwar gibt es oft einen Vertreter des Auftraggebers bzw. für die Anforderungen im Team. Diese Personengruppe muss aber regelmäßig in die Projektarbeit eingebunden werden, da sie letztlich das (End-) Produkt nutzt bzw. abnimmt. Vor allem das Feedback der zukünftigen Nutzer ist unabdingbar. Ein klassisches Phänomen in der Softwareentwicklung ist, dass die Nutzer immer „eigene Wege finden“ wie sie ein Produkt nutzen. Dagegen hilft kein wochenlanger Designprozess sondern schlicht das regelmäßige Einholen von Nutzerfeedback. Die Software wird ja schließlich für die Nutzer entwickelt. Außerdem ist nur ein zufriedener Kunde ein Kunde, der wiederkommt.
Erfahrungsgemäß ist das Problem des fehlenden Kundenfeedbacks bei agilen Pilotprojekten meist auf die mangelnde Bereitschaft des Kunden zurückzuführen, sich regelmäßig mit dem Produkt auseinanderzusetzen. Dies erfordert nämlich während des gesamten Projektverlaufs einen oder mehrere Personen auf Kundenseite, die sich stetig mit der Produktentstehung beschäftigen. Es sollten die Optionen, sowie die Vor- und Nachteile diskutiert werden, um den späteren Nutzen für sich zu maximieren. Agil bedeutet nicht, dass man keine Entscheidungen mehr treffen muss - sie sind lediglich verteilt über die Zeit und nicht gehäuft zu Beginn, wie bei klassischen Vorgehensmodellen.
Schrittweise Einführung
Insgesamt setzen sich agile Modelle langsam aber stetig durch. Oftmals wird "agile" im Unternehmen noch als „agile in a box“ angewandt. Das bedeutet, man fängt eben mal damit an einzelne Pilotprojekte umzustellen. Da die gesamte Umwelt des Projekts aber noch nach dem Wasserfall funktioniert, entstehen ständig Reibungen an den Schnittstellen des Projekts nach außen, z.B. bei Releases. Ein motiviertes Team kann innerhalb seines Projekts noch so vorbildlich agil handeln - wenn das übergeordnete Releasemanagement diesen Wandel nicht mit begleitet, sondern strikte Releasetermine vorgibt, wird Agilität unterdrückt. In gleicher Weise gilt das für Budgets, Staffing und Zeitplanungen.
Ein ganzes Unternehmen auf einen Schlag auf agil umzustellen mag unmöglich sein, aber jede neue Bewegung braucht ihre Zeit um Fahrt aufzunehmen. Mancher Manager könnte zum fatalen Trugschluss gelangen, dass „agil bei uns eben nicht funktioniert“. Hier müssen Kompromisse gefunden werden, denn „agile“ selbst kann eben auch nur schrittweise eingeführt werden.
Die IT ist seit jeher ständigen Veränderungen unterworfen. Anforderungen von Kunden und der Wunsch nach schneller Umsetzung und Einführung von neuen „Features“ wachsen von Tag zu Tag. Diese Wünsche der Kunden stehen in einem Gegensatz zu den klassischen Ansätzen der IT, in denen neue Releases teils monate- oder gar jahrelang im Voraus geplant werden. Zum Teil werden damit auch Anforderungen umgesetzt, welche bei Einführung schon wieder veraltet sind. Die IT ihrerseits versucht auf diese Herausforderung mit neuen Entwicklungsmethoden zu reagieren. So wird bereits in vielen Projekten der klassische Ansatz des Wasserfallmodells durch den Ansatz der agilen Softwareentwicklung ersetzt. Ziel dabei ist es, eine Software mit geringem bürokratischen Aufwand schnell und qualitativ hochwertig zu erstellen und stetig weiter zu entwickeln. Diese Vorgehensweise führt allerdings zwangsläufig zur nächsten Herausforderung, diese Software jederzeit fehlerfrei bereitstellen zu können. DevOps (Development & Operations) greift genau diesen Punkt auf und adressiert die Verzahnung zwischen agiler Entwicklung und zeitnaher Bereitstellung der Software.
DevOps - was steckt genau hinter dem Begriff?
Mittlerweile gibt es verschiedene Definitionen, die den Begriff DevOps beschreiben. Gemein ist aber allen das gemeinsame Ziel: Eine schnelle und stabile Bereitstellung von qualitativ hochwertiger Software. Hierzu möchte DevOps für eine effizientere und effektivere Zusammenarbeit der Bereiche „Development“, „IT Operations“ und „Qualitätssicherung“ beitragen. Zum Einsatz kommen dabei die unterschiedlichsten Tools, welche diesen neuen Ansatz unterstützen sollen. Man könnte nun meinen, durch den einfachen Einsatz einiger neuer Tools im Bereich der Codeverwaltung, des Test- und Change-Managements und des Monitorings wäre eine Einführung von DevOps zwangsläufig erfolgreich. Eine solche Interpretation wäre aber bereits der Beginn des Scheiterns einer DevOps – Einführung. Sicherlich haben all diese Werkzeuge ihre Berechtigung, jedoch sollten sie nur als Mittel zum Zweck angesehen werden. Eine Diskussion über eine Einführung sollte sich niemals nur auf den technologischen Teil beschränken. Denn einem Mitarbeiter ist es nur schwer zu erklären, warum sich Technologien, die jahrelang erfolgreich benutzt wurden, nun plötzlich durch einen neuen „unerprobten“ und ähnlich aufwendigen Prozess ersetzt werden, wenn man ihm das Ziel im Ganzen nicht vor Augen führen kann.
Einführung im Unternehmen
Eine erfolgreiche DevOps – Einführung ist folglich gebunden an das Verständnis der Mitarbeiter für den dahinter stehenden Mehrwert. Man könnte gar sagen, es benötigt einen Kulturwandel innerhalb eines Unternehmens. Denn seit jeher stehen die Ziele von Entwicklern und IT Operations in einem Gegensatz. Während Entwickler bestrebt sind durch häufige Releases neue Features möglichst schnell verfügbar zu machen, steht für Operations ein stabiles System im Vordergrund. Neue Funktionen bringen aus Sicht von Operations zunächst nur ein erhöhtes Ausfallrisiko mit sich. Wichtig ist es also diese individuellen Ziele zu einem gemeinsamen Ziel zu koordinieren. Es erfordert Verständnis für einander und echtes Team-Work zwischen Entwicklung und Operations.
Es wird sich zeigen, dass nicht alle Vorteile direkt nach einer DevOps-Einführung zum Tragen kommen. Oftmals benötigen die Teams Zeit sich von alten Gewohnheiten zu lösen und sich an die neuen Prozesse zu gewöhnen. Vermehrt wird man feststellen, dass bei der Einführung nicht alles perfekt läuft und es sowohl gedanklich als auch technologisch Verbesserungspotential gibt. Durch kontinuierliche und schrittweise Verbesserungen lässt sich DevOps aber langfristig zum großen Vorteil im Unternehmen nutzen.