Bessere Entwicklung durch agiles Projektmanagement
Projektmanagement wird oft mit viel Planung und Zeitaufwand in Verbindung gebracht. In vielen Unternehmen wird dafür – berechtigterweise – eine eigene Person beschäftigt. Kleine Agenturen können sich dies aus zeitlichen oder finanziellen Gründen nicht erlauben. In der Softwareentwicklung ist auch selten eine genaue Planung über das gesamt Projekt möglich – ständige Änderungen der Anforderungen von Seiten des Kunden oder aus dem Unternehmen selbst führen zu neuen Bedingungen.
Darüber hinaus stagnieren etwa Fixpreis-Projekte oft dadurch, dass ein wiederholter Wunsch des Kunden nicht erfüllt werden kann. Man verschwendet viel Zeit mit Vertragsvereinbarungen für diese Fälle, die nur mit großem Aufwand gestaltbar sind. Diese Zeit investiert man jedoch besser in die Arbeit selbst, die eigentlichen und essenziellen Aufgaben des Projekts, um die Ziele zu erreichen.
Man verteilt Planungsaufgaben, um nicht alles zentral koordinieren zu müssen. Das Ergebnis: Funktionierende Software, zufriedene Kunden und das Wohlbefinden im Team sind die wichtigsten Ziele eines Projekts. Agile Werte und Vorgehensweisen sollen und können hierbei helfen.
Agilität in Projekten
Projektmanagement ist „die Gesamtheit aller Koordinierungs- und Führungsaufgaben, die sich auf ein Projekt beziehen“ schreibt Christiane Gernert in Ihrem Buch „AgilesProjektmanagement–RisikogesteuerteSoftwareentwicklung.“ (Hanser, 2003). Alternativ kann man von dynamischer, leichter oder flexibler Planung, Koordination und verteilter Führung eines Projekts sprechen. Agile Softwareentwicklung sowie Projektmanagement gehen dabei Hand in Hand und stützen sich auf agile Werte und Methoden.
Man sollte stetig die eigene Tätigkeit im Hinblick auf die Entwicklung und das Projektmanagement hinterfragen und flexibel und bereitwillig auf Veränderungen im Projekt oder Projektumfeld reagieren – unabhängig davon, welche Methode des agilen Prozesses zum Einsatz kommt. Empfehlenswert ist es auch, sich die Werte des agilen Manifests [2] zu vergegenwärtigen. Sie definieren die zentralen Vorstellungen in Bezug auf die agile Softwareentwicklung:
- Individuen/Interaktionen mehr als Prozesse/Werkzeuge
- Funktionierende Software mehr als umfassende Doku
- Zusammenarbeit mit Kunden mehr als Vertragsverhandlung
- Reagieren auf Veränderung mehr als das Befolgen eines Plans
Die Werte stellen keine Statt-Beziehungen dar, eine umfassende Dokumentation soll also nicht ausgeblendet werden. Im Zweifelsfall erhalten lediglich die Konzepte auf der linken Seite der Vergleiche den Vorzug. Im Einzelnen heißt das, dass eher auf Kommunikation und Kooperation anstatt starre Prozesse und Werkzeuge gesetzt wird.
Dies birgt diverse Risiken: So möchte der Kunde etwa ausdrücklich eine Dokumentation der Software erhalten – das Projektteam darf daher nicht auf diese verzichten. Zugleich geht dadurch wichtige Programmier-Zeit verloren.
Das verdeutlicht den Aspekt der beidseitigen Akzeptanz zwischen Auftraggeber und Projektteam: Akzeptiert beispielsweise der Kunde diese Werte nicht und fordert stattdessen eine umfangreiche Dokumentation, so ist das Projektteam gezwungen, diese zu liefern. Auch wenn darunter die Softwareentwicklung leidet.
Die konkreten Prioritäten mögen sich von Projekt zu Projekt und insbesondere von Kunde zu Kunde ändern. So oder so gilt aber: Im Vordergrund steht, das Projekt erfolgreich und effizient durchzuführen.
Aufträge zeitbasiert abrechnen
Eine wichtige Empfehlung für kleine Agenturen, obschon nicht immer leicht umzusetzen: Fixpreisaufträge werden oft von detailliert ausgearbeiteten Verträgen begleitet, die den Eindruck machen, dass sie jegliche Abweichung vom Plan abdecken. Solche Verträge sind zeitaufwendig, ihre Ausarbeitung teuer.
Besser ist es, diese Zeit in die eigentliche Arbeit einzubringen. Lange Verträge und damit verbundenes Misstrauen passen nicht in das Konzept agilen Projektmanagements. Unter dieser Prämisse ist es dann auch sinnvoll, zeitbasiert abzurechnen. Unabhängig davon, ob es sich um ein Feature oder einen Bug handelt.
Überschätzte Verträge?
Verträge sind wichtig und schützen – so ein vorherrschendes Credo, insbesondere in kleineren Agenturen. Tatsächlich sind Verträge aber vor allem eines: Zeitfresser. Verträge vor der Entwicklung auszuhandeln heißt nämlich auch, weniger Zeit für die eigentliche Arbeit aufzubringen. Zudem kann auch ein Handschlag ein gültiger Vertrag sein.
Eine Vertragsvorlage, die eine zeitbasierte Projektarbeit definiert und in der Verantwortliche, der Vertragsgegenstand, Rechteabtretung, Mitwirkungspflichten und natürlich der Tagessatz beschrieben sind, spart hier kostbare Zeit. Diese kann man mit einem Anwalt ausarbeiten, jedoch müssen und können sie nicht bis ins letzte Detail wasserdicht sein. Denn wenn tatsächlich Anlass zur Sorge besteht, dass der Kunde nicht vertrauenswürdig ist, hilft der beste Vertrag nichts.
Es ist für den Verlauf des Projekts sinnvoll, neben den Anforderungen vor allem den Vertragspartner gut kennenzulernen und gegenseitiges Vertrauen aufzubauen. Denn nur auf Basis von Kommunikation sowie ehrlicher Einschätzung ist eine reibungslose Zusammenarbeit möglich. Dies schützt wohl am effektivsten vor späteren Missverständnissen. Schließlich hat man es auch als Auftragnehmer nicht verdient, gestresst ein Projekt durchzuführen.
Den pragmatischen Weg gehen
Prozesse zu definieren nimmt wertvolle Zeit in Anspruch, die Vorgabe von Prozessen ist wenig sinnvoll. Zuhören und die gemeinsame Ausgestaltung von Vorgehensweisen, die zum Projekt und zum Team passen, lautet die Devise. Agile Projektmanager können sich dafür an folgenden Maximen (Christine Gernert: „AgilesProjektmanagement–RisikogesteuerteSoftwareentwicklung.“, Hanser, 2003) orientieren:
- Besser ein motiviertes Team als perfekt ausgeklügelte Regeln
- Gute Kommunikation im Team ist wirksamer als ein formalisiertes Berichtswesen
- Das erreichte Ergebnis zählt mehr als das sture Abarbeiten vorgeschriebener Aufgaben zu bestimmten Zeiten
- Kontinuierliche Änderungen im Projekt sind besser als starre Planvorgaben
- Vertrauen ist gut, Kontrolle unnötig und zeitraubend
- Lernen aus Erfahrungen statt aus Modellen und Lehrbüchern
Viele erfolgreiche Projektmanager leben nach diesen Maximen, ohne dass sie sie kennen. Sie steuern ihr Team oft „aus dem Bauch heraus“, was durchaus legitim ist. Weiterhin lässt die richtige und effektive Kommunikation den Wissensaustausch zwischen einzelnen Teammitgliedern des Projekts nicht stagnieren und führt zu einer dynamischen Prozessentwicklung. Diese sollte durch die Teilnehmer regelmäßig hinterfragt werden, um eigene Schlussfolgerungen für das weitere Vorgehen zu ziehen und dadurch flexibel auf Veränderungen reagieren zu können.
Sinnvoll dokumentieren
Klassische Softwaredokumentation wird wohl weder gern geschrieben noch gern gelesen. Entsprechend können die Fragen im Team lauten: Wem dient die Dokumentation? Wer liest sie? Und was kostet sie an Zeit und Geld? Geschäftsführer und Produktmanager haben selten die Zeit und verstehen häufig auch zu wenig von Code, als dass sie die Dokumentationen lesen würden. Und Programmierer schauen lieber direkt in den Code.
Anstatt also Stunden und Tage damit zu verbringen, klassische Softwaredokumentationen zu schreiben, kann man diese Zeit in sinnvolle und aussagekräftige Tests investieren. Ordentlich aufbereitet stellen diese im Endeffekt womöglich eine brauchbarere Dokumentation der Software dar. Man kann hier auf Techniken des Test- oder Behaviour-Driven-Developments zurückgreifen, was das Verständnis aller Beteiligten über die tatsächlich implementierte Funktionalität vertieft.
Reagieren statt Agieren
„Stick to the plan“ – das hört sich einfach an. Doch macht es tatsächlich Sinn, sich bis zum bitteren Ende an den Plan zu halten? Viel wichtiger ist es, auf Veränderungen flexibel und schnell reagieren zu können – seien es finanzielle, personelle oder auf das Projekt selbst bezogene Veränderungen.
Bei der Entwicklung kann man mithilfe einzelner Sprints (sich wiederholende Zeitperioden, in denen Aufgaben rund um das Projekt abgeschlossen und zum Review vorgelegt werden) planen und entsprechend einzelne Aufgaben einteilen, priorisieren und schätzen. Komplexe Aufgaben werden in Unteraufgaben eingeteilt, deren Zielerreichung messbar ist.
Dabei darf das große Ziel nicht aus den Augen verloren werden: Weder aus den Augen des Projektmanagers noch aus den Augen des gesamten Teams. Denn das große Ziel gibt die Richtung vor und sollte daher jede Entscheidung beeinflussen.
Fazit
Agile Ansätze des Projektmanagements und der Softwareentwicklung bieten viel Freiheit in der Ausgestaltung des eigenen Vorgehens. Doch agil bedeutet nicht weniger Aufwand als im herkömmlichen Projektmanagement. Vielmehr werden Aufgaben und Entscheidungen auf die Schultern des gesamten Teams verteilt.
Darüber hinaus fließt ein größerer Teil der Arbeitszeit in die eigentliche Umsetzung statt in die Planung. Situative Entscheidungen sind vordefinierten Prozessen vorzuziehen. Das verleiht Projekten von Anfang an den nötigen Kick-Start und hilft dabei, sich während der Entwicklung auf die wesentlichen Ziele zu konzentrieren.
Teaser: strangesparks / flickr.com, Lizenz: CC-BY
Hallo Jan,
Danke für diesen „Grundsatz“artikel zum Thema Projektmanagement.
Das kann ich alles aus eigener Erfahrung unterschreiben.
So funktioniert modernes Projektmanagement.
Grüsse,
Andreas
Ein absolut aufrichtiger Artikel zum Thema! Mas mir sehr gut gefallen hat ist der Umgang mit Verträgen und der Darstellung der persönlichen Beziehung zu den Kunden. Wir kleine Agenturen haben keine Zeit Wochenlang erst die Verträge auszuklamüsern, von de Kosten ganz zu schweigen. Das gegenseitige Vertrauen ist doch das beste was uns in dieser digitalen Branche passieren kann!
Danke JAN!
Hallo Jan,
sehr schöner Artikel!
Wir arbeiten schon seit einigen Jahren erfolgreich agil und veröffentlichen dazu unsere Erfahrungen als online Magazin : http://www.sybit.de/sybit-agile.
So haben wir z.B. http://www.br.de und http://www.mdr.de agil mit Scrum umgesetzt.
Wer als Autor Interesse hat: tweet an @sybit_agile
Prinzipiell ist der agile Ansatz interessant. Das Problem ist dabei allerdings die Planungssicherheit auf Seiten des Kunden. Als Alternative finde ich eine am Budget des Kunden orientierte Arbeitsweise interessant. Durch Analyse der Kernanforderungen an ein Softwaresystem lässt sich dabei die für den Kunden Beste realisierbare Lösung finden. Auch diese Herangehensweise erfordert natürlich ein entsprechendes Maß an Vertrauen. Viele Entscheider gehen ja nach wie vor davon aus, dass sie mit einem Anforderungsprofil einfach nur das günstigste Angebot auswählen können und geraten dann nach Beauftragung in die Problematik, dass aus Anforderung und Preis nicht unbedingt Qualität und Projektmanagement abgeleitet werden können.
Danke für die positiven Kommentare!
Das die Herangehensweise ein gewisses Vertrauen Maß an Vertrauen erfordert ist verständlich. Eine Vertrauensbasis zu schaffen natürlich bei der Zusammenarbeit mit größeren Konzernen schwieriger als bei mittelständischen oder kleinen Unternehmen. Das selbe Problem existiert, wie schon richtig von Olaf angedeutet, bei den Qualitätsansprüchen. Konzerne richten sich nach dem „günstigeren“ Angebot, oder aber auch nach den „erfahrenen“ Dienstleistern. Die vermeidliche Intransparenz agiler Vorgehen im Zusammenhang mit stundenbasierter Abrechnung kleiner Dienstleister erschwert einen Durchbruch dieser auf dem Markt, da ihre Angebote per se nicht greifbar erscheinen. Mit der nötigen Vertrauensbasis ist dies jedoch nicht unmöglich.
@Jan
aus meiner Sicht ist das mit dem Vertrauen ein Henne Ei Problem. Vertrauen entsteht meist in der langjährigen Zusammenarbeit… die langjährige Zusammenarbeit entsteht aber nur durch Zusammenarbeit und wenn die schon Vertrauen erfordert, wird es schwer die Zusammenarbeit zu beginnen. Wir sind in die meisten Projekte mit mittlerweile langjährigen Kunden durch Festpreisangebote rein gekommen.