Kennen Sie eXtreme Programming, seine Prinzipien und Vorteile?
Haben Sie schon einmal von eXtreme Programming (XP) gehört? Was wissen Sie über diese Methode der Softwareentwicklung?
Diese Methodestammt aus dem agilen Universum und gewann an der Wende von den 1990er zu den 2000er Jahren an Bedeutung. Aber woraus besteht sie genau?
In diesem Artikel konzentrieren wir uns auf die Prinzipien, die ihr zugrunde liegen, die Vor- und Nachteile, die sie bietet, und die Techniken, die man dabei anwenden kann.
Was ist eXtreme Programming?
Definition
eXtreme Programming ist eine agile Methode und ihre weitestgehende Umsetzung im Rahmen der Softwareentwicklung, weshalb sie auch als "extrem" bezeichnet wird.
Ausgehend von einem kundenorientierten Ansatz bietet diese Methode einen Rahmen, der darauf abzielt , einen einfachen, aber qualitativ hochwertigen Code für das gesamte am Projekt beteiligte Team zu schreiben .
Entwickelt wurde eXtreme Programmingvon Kent Beck, einem amerikanischen Informatiker, der auch für die Konzeption der testgetriebenen Entwicklung (Test-Driven Development)bekannt ist , und hat eine wichtige Rolle für den Erfolg der agilen Methoden gespielt.
eXtreme Programming vs. Scrum
Auchdie Scrum-Methode gehört zur agilen Familie. Übrigens können beide kombiniert werden, da sie sich ergänzen:
- die Scrum-Methode ist ein Framework, das sich auf das Projektmanagement und die Projektorganisation bezieht ;
- eXtreme Programming konzentriert sich auf die Entwicklungsaktivitäten, insbesondere auf die Systematisierung des automatisierten Testens.
Was sind die Merkmale von eXtreme Programming?
Die fünf Schlüsselwerte
Die ursprünglich für den IT-Bereich konzipierte Methode ist heute weltweit beliebt, da sie für alle Arten von Projekten, jede Größe und alle Branchen funktional ist.
Die Methode soll sogar in kleinen bis mittleren Teams, die nicht mehr als zwanzig Personen umfassen, bessere Ergebnisse liefern.
Die Hauptmerkmale von eXtreme Programming sind die der agilen Welt: Reaktion auf Änderungen, Flexibilität, Zusammenarbeit, Qualität der Arbeit, Qualität der Tests, etc.
☝️ Der Unterschied besteht darin, dass diese Merkmale bis zum Äußersten ausgereizt werden.
Werfenwir nun einen Blick auf ihre Grundwerte:
- Kommunikation: Es ist von entscheidender Bedeutung, dass jedes Teammitglied täglich intern und mit dem Kunden kommuniziert. Der Kontakt ist ein wesentliches Mittel zur Lösung von Problemen.
- Einfachheit: Oft ist der einfachste Weg zu einem Ergebnis auch der effektivste. Daher sollte man sich auf das Einfache und Wesentliche konzentrieren. Dementsprechendsollte sich das Entwicklungsteam ausschließlich auf die unbedingt notwendigen Aufgaben konzentrieren. Verbesserungen können zu einem späteren Zeitpunkt vorgenommen werden.
- Feedback (Rückkopplung): Der Informationsaustausch zwischen dem Projektteam und dem Kunden ist von entscheidender Bedeutung. Jede Entwicklung im Projekt sollte dem Kunden so schnell und häufig wie möglich mitgeteilt werden. Jeder Änderungswunsch sollte umgehend berücksichtigt werden.
- Respekt: Der Respekt vor der Arbeit der beteiligten Personen ist eine unabdingbare Voraussetzung. Die Leitung, das Projektteam und der Kunde müssen sich gegenseitig respektieren.
- Mut: Veränderungen erfordern Mut, um aus einer komplexen Situation herauszukommen, egal ob es darum geht, eine neue Technik zu erlernen, eine nicht freigegebene Iteration neu zu starten oder die Projektorganisation zu überarbeiten.
Die 12 Grundregeln
Konkret ergeben sich aus den oben gesehenen 5 Schlüsselwerten12 Grundregeln. Diese lassen sich in 4 Bereiche gruppieren.
🔁 Ausführliches Feedback
- Programmierung zu zweit ( Peer Programming ): Dieser Mechanismus dient dazu, die Qualität der Arbeit zu kontrollieren . Sie arbeiten zu zweit: Während ein Kollege den Code schreibt, überprüft der andere ihn. Bei der Zusammenarbeit an einem gemeinsamen Arbeitsplatz ist es sehr wichtig, dass das Duo über ein ähnliches Erfahrungsniveau verfügt.
- Planning poker: Die Planung erfolgt in Zusammenarbeit mit dem Kunden. Dieser äußert die Funktionalität, von der er profitieren möchte. Das Team schätzt ab, wie viel Zeit für die Umsetzung benötigt wird. Schließlich werden die verschiedenen Aufgaben priorisiert. Diese Besprechung findet in der Regel wöchentlich statt.
- Testgetriebene Entwicklung: Das Schreiben der Testumgebung (sowohl Einheits- als auch Akzeptanztests) findet statt, noch bevor mit der Entwicklung des funktionalen Teils und der Erstellung des Quellcodes begonnen wird . Diese Technik ermöglicht es Ihnen, mögliche Fehler im Voraus zu erkennen.
- Kunde vor Ort: Idealerweise sollte mindestens ein Vertreter des Kunden fester Bestandteil des Teams sein, um einen Überblick über das gewünschte Ergebnis zu erhalten und Fragen beantworten zu können.
🧘♂️ Wohlbefinden der Programmierer
- Nachhaltiger Rhythmus: Überstunden sind nicht erlaubt. Wenn sie notwendig sind, muss die Programmierung im Vorfeld überarbeitet werden. Ein übermüdeter Mitarbeiter arbeitet schlechter und macht mehr Fehler. Es ist gut, nie mehr als 40 Stunden pro Woche zu arbeiten!
∞ Kontinuierlicher Prozess
- Refactoring (oder Designverbesserung): Das Projekt wird ständig verbessert. Das Ziel ist es, auf einer soliden Grundlage zu arbeiten und optimale Arbeitsbedingungen zu haben. Im Code werden daher ständig Wiederholungen und unnötige Elemente entfernt.
- Kleine Lieferungen (small releases): Diese sollten so häufig wie möglich erfolgen, um dem Kunden die Möglichkeit zu geben, ständig Kritik und Vorschläge zu äußern. Auf diese Weise werden Fehler schneller erkannt und behoben.
- Kontinuierliche Integration: Sobald eine Aufgabe abgeschlossen ist, wird sie sofort in das Produkt integriert. So wird die zusätzliche Arbeit vermieden, die erforderlich ist, um alle Elemente vor der endgültigen Lieferung zu integrieren. Tests erleichtern diese Integration: Wenn alle Tests positiv verlaufen, ist die Iteration abgeschlossen.
💡 Gemeinsames (oder geteiltes) Verständnis.
- Kollektive Aneignung des Codes: Die Verantwortung für das Projekt ist kollektiv. Das bedeutet, dass jedes Mitglied in alle Abschnitte des Projekts eingreifen kann, auch in die, an denen es nicht gearbeitet hat. Was ist das Ziel? Maximale Effizienz und Geschwindigkeit.
- Codierungsstandards (coding standards): Da sie alle zusammenarbeiten, ist es wichtig, die Arbeit jedes Einzelnen zu erleichtern, indem dieselben Begriffe, derselbe Stil und klar definierte Kommunikationswege verwendet werden.
- Einfaches Design (Simple Design): Es ermöglicht Ihnen, einen Code zu haben, den jeder versteht, und vermeidet Doppelarbeit. Die Aufmerksamkeit wird auf die Bedürfnisse des Kunden gerichtet.
- System-Metaphern (System Metaphor) : Um das Projekt so einfach wie möglich zu beschreiben, werden Metaphern verwendet. Ziel ist es, dass neue Mitarbeiter das Projekt schnell verstehen und integrieren können.
Vor- und Nachteile von eXtreme Programming.
Wenn alle Voraussetzungen erfüllt sind, kann eXtreme Programming überraschende Ergebnisse liefern.
✚ Hier sind einige Stärken:
- sauberer und linearer Code,
- stabile Software durch kontinuierliche iterative Entwicklung,
- die Fähigkeit, ständig Verbesserungen vorzunehmen.
⊖ Zu den Schwächen gehören:
- ein höheres durchschnittliches Budget,
- die Notwendigkeit einer starken Einbindung des Kunden,
- ein hoher Bedarf an Selbstdisziplin und Planung.
eXtreme Programming: Die Methode, die auf den Punkt kommt.
Dank dieser Methode arbeiten Manager, Entwickler und Kunden zusammen. Dieser kollaborative Ansatz treibt die Einfachheit und Reaktionsfähigkeit auf die Spitze und sorgt für eine kontinuierliche Versionskontrolle.
In der Praxis ist diese Methode kompliziert umzusetzen, da sie viel Selbstdisziplin und eine gute interne Kommunikation erfordert. Wenn die Voraussetzungen erfüllt sind, kann diese Methode jedoch zu hervorragenden Ergebnissen führen.
Und Sie, haben Sie diese agile Methode schon einmal gesehen? Welche Eindrücke haben Sie gewonnen?