Neben Scrum und Kanban haben sich innerhalb der agile Softwareentwicklung mit der Zeit die unterschiedlichsten Ausprägungen dieser Art der Softwareentwicklung entwickelt. Die wohl radikalste agile Methode für Softwareprojekte ist Extreme Programming (XP). In diesem Artikel erklären wir dir, was es mit dieser Methode auf sich hat und wieso diese Art der Softwareentwicklung so extrem ist.
Extreme Programming: Definition
Mitte der 1990er-Jahren haben sich die Softwareentwickler Kent Beck, Ward Cunningham und Ron Jeffries vorgenommen, die Welt der klassischen Softwareentwicklung komplett auf den Kopf zustellen. Sie entwickelten kurzer Hand die wohl radikalste Methode der agilen Softwareentwicklung: Extreme Programming (XP). Das bedeutet konkret: Eine noch agilere Methode als Extreme Programming wirst du nirgends finden. Warum haben die Erfinder diesen extremen Weg eingeschlagen? Weil sie sich möglichst deutlich von Wasserfallmethoden abgrenzen wollten, da diese für die Softwareentwicklung diverse Probleme mit sich bringen.
Agiler als XP wird es nicht!
Extreme Programming stellt – wie andere agile Methoden auch – den Kunden und seine Anforderungen in den Mittelpunkt. Auf den ersten Blick nichts Außergewöhnliches, handhaben das Frameworks wie zum Beispiel das von Scrum genau so. Außerdem geht man bei Extreme Programming von iterativen Prozessen aus. Man zieht also nicht einfach ein großes Projekt von vorne bis hinten durch, komme was wolle, sondern bricht dieses in kleine Häppchen und tastet sich so Stück für Stück an ein fertiges Projekt heran. Für diesen Prozess haben die Erfinder ein sehr deutliches Framework entwickelt, das unter anderem klare Werte, Prinzipien und Rollen definiert.
Extreme Programming: Werte
Ähnlich wie bei Scrum, der weltweit meistgenutzten agilen Methode, greift Extreme Programming auf fünf Werte zurück, die Entwicklern dabei helfen sollen, ihre Einstellung gegenüber ihrer Arbeit zu verändern. Ziel ist es, dem Team eine gewisse Mentalität einzuimpfen, die sie zusammenschweißt und als Ergebnis ein optimales Produkt begünstigt.
Kommunikation
Generell ist Kommunikation ein Wert, der überall großgeschrieben werden sollte. Da das leider nicht immer der Fall ist, hebt Extreme Programming noch einmal hervor. Nur, wenn alle Beteiligten immer miteinander im Gespräch sind, können Fehler und Missverständnisse vermieden werden. Zudem sorgt das richtige Maß an Kommunikation für optimale Transparenz.
Einfachheit
Ein weiterer Kernwert von Extreme Programming ist die Einfachheit. Diese wird, wenn möglich, immer angestrebt. Man konzentriert sich stets auf die wirklich notwendigen Features und entwickelt auch lediglich die benötigten Features. Man bereits sich nicht auf eventuelle Maßnahmen, die noch umgesetzt werden sollen oder ähnliches. So kann sich das Team auf einige wirklich notwendige Tasks konzentrieren und verliert den Fokus nicht.
Feedback
Wie bei einigen anderen agilen Methoden auch, ist Feedback essenziell. Ohne Feedback, können die angefertigten Inkremente am Ende einer Iteration nicht bewertet werden. Ohne diesen Prozess, kann das nächste Inkrement anschließend nicht „besser“ werden, als das aktuelle, da man nicht auf Fehler oder abweichende Anforderungen aufmerksam gemacht wird.
Mut
Innerhalb solcher einer „radikalen“ agilen Methode ist es wichtig, dass die Teammitglieder eine gewisse Portion Mut mitbringen. Nicht, weil sie sich Mutproben stellen müssen, sondern vielmehr, weil sie dazu in der Lage sein müssen, Risiken einzugehen und umgekehrt auch klipp und klar Fehler zu entlarven, wenn sie welche finden. Werden Fehler aus „Angst“ gegenüber der Reaktion eines anderen Mitglieds bspw. verschwiegen, kann das schwerwiegende Folgen haben.
Respekt
Auch Respekt ist ein Wert, der grundsätzlich von jedem Menschen auf diesem Planeten beherzigt werden sollte. Aus diesem Grund stellt Extreme Programming Respekt in den Fokus. Nur, wenn das Team untereinander harmoniert und sich gegenseitig respektiert, kann das Produkt am Ende des Tages die Qualität erreichen, die man anstrebt.
Extreme Programming: Prinzipien
Aus den Werten lassen sich hier konkrete Prinzipien ableiten. Sie verbinden also die eher abstrakten Werte mit der Praxis.
Unmittelbares Feedback
Wie bereits im Wert beschrieben, ist Feedback absolut essenziell für den Prozess. Ohne Feedback, kein Fortschritt. Aus diesem Grund, besagt dieses Prinzip, das Feedback immer unmittelbar erfolgen soll. Wird also beim Testen oder Coden ein Fehler entdeckt, sollte dieser binnen Minuten behoben werden.
Einfachheit anstreben
Hier handelt es sich im Grunde um den gleichnamigen Wert. Allerdings werden hier zwei konkrete Empfehlungen ausgesprochen:
– „You ain’t gonna need it!“ (YAGNI): Sofern etwas nicht konkret verlangt wird, wird es nicht implementiert.
– „Don’t repeat yourself!“ (DRY): Doppelte Arbeit soll vermieden werden.
Inkrementelle Änderungen
Ähnlich wie bei der „Work in Progress“-Limitierung, die wir aus Kanban kennen, konzentriert man sich bei Extreme Programming immer auf eine Änderung und geht kleinschrittig voran. Statt also beispielsweise mehrere Änderungen in einem Update zusammenzufassen, wird jede Änderung einzeln ausgerollt.
Veränderungen annehmen
Änderungen, Wünsche, Feedback – All das ist willkommen und wird sehr gerne aufgenommen. Das steht in direktem Zusammenhang mit der Kundenzentriertheit der Methode.
Extreme Programming: Rollen
Analog zu Scrum setzt man bei Extreme Programming auf Rollen, um Aufgaben und Kompetenzen zu verteilen. So schafft man innerhalb des Teams und der Organisation eine gewisse Transparenz, da jeder weiß, an wen er sich für sein Anliegen wenden muss. Im Folgenden werden wir die Rollen ein wenig genauer erläutern.
Kunde
Die Kundenzentrierung von Extreme Programming geht so weit, dass man den Kunden gar als Mitglied des Teams wahrnimmt. Konkret wird er durch mindestens einen Vertreter vor Ort abgebildet. Der Kunde stellt Anforderungen an das Produkt, überlässt aber dem Team, wie es umgesetzt wird.
Entwickler
Wie bei Scrum wird das Entwickler-Team nicht weiter in einzelne Rollen unterteilt. Jeder, der am Produkt arbeitet, wird als Entwickler betrachtet. Zu den Aufgaben der Entwickler zählt übrigens auch das Schätzen des Aufwandes, sowie die Erstellung eines Zeitplans und die Planung der Umsetzungen. Für XP-Entwickler gilt außerdem die 40-Stunden-Woche, wobei Überstunden definitiv vermieden werden sollen.
Manager
Beim Manager handelt es sich um eine Art Schnittstelle zwischen Entwicklern und Kunden. Eine der Hauptaufgaben ist das tracken wichtiger KPIs, weshalb der Manager hin und wieder auch Tracker genannt wird. In gewissen Situationen muss der Manager auch als eine Art Moderator fungieren, wenn beispielsweise Diskussionen auftreten.
Coach
Der Coach steht dem Team als eine Art externer Berater bei und unterstützt es dabei Extreme Programming korrekt umzusetzen. Im Grunde handelt es sich hier um ein Pendant zum Scrum Master aus dem Framework von Jeff Sutherland und Ken Schwaber.
Extreme Programming: Vor- und Nachteile
Selbstverständlich birgt eine solche radikale Methode wie Extreme Programming nicht nur Vorteile. Aus diesem Grund möchten wir im vorletzten Abschnitt noch einmal auf die Vor- und Nachteile von Extreme Programming eingehen, damit du dir ein umfängliches Bild vom Framework machen kannst.
Vorteile
– sehr enger Kontakt zum Kunden
– Code ist stets übersichtlich
– Überstunden werden verhindert
– Software ist stets relativ stabil, dank regelmäßiger Tests
– Arbeitstempo wird vom Team bestimmt
– überflüssige Programmierarbeiten werden vermieden
– Änderungen sind jederzeit möglich und lassen sich leicht integrieren
Nachteile
– es entsteht zusätzlicher Arbeitsaufwand für Entwickler (Planung…)
– Selbstdisziplin ist eine Mindestvoraussetzung für die Durchführung
– Kunde muss sich auf diese Methode einlassen
– Kosten sind relativ hoch
Zusammenfassung
Extreme Programming ist eine sehr agile Vorgehensweise, mit der man sehr nah am Kunden Software-Produkte entwickeln kann. Dabei liegt der Fokus – neben den Wünschen des Kunden – darauf, nur das notwendigste zu entwickeln und keine Ressourcen zu verschwenden. Ohne das Einhalten der definierten Werte, werden es die Entwickler schwer haben, da einige Zusatzaufgaben auf sie zukommen. Wir finden die Methode sehr spannend, wissen aber auch, dass sie nur in einem geeigneten Rahmen funktionieren kann und deshalb nicht für jedes Projekt geeignet ist.
Für noch mehr Infos zu agiler Softwareentwicklung können wir dir zudem unser Video zum Thema empfehlen. Für mehr agilen Content kannst du dich außerdem gerne auf unserem Blog umschauen, dort wirst du sicher fündig. Wenn nicht, dann wende dich mit deinem Wunsch gerne an uns!