Was ist Extreme Programming (XP)?

7 Min. Lesezeit

๐Ÿ‘‰ Die wichtigsten Fakten zusammengefasst:

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!

๐Ÿ’ Unser Fazit:

๐Ÿ‘† FAQ - Hรคufig gestellte Fragen

No items found.

โœ๏ธ รœber den Autor

Gratis Playbook

Die wichtigsten Infos zu Scrum kurz und knapp

Playbook erhalten