Die grundlegenden Werte, die jede XP-Praktik und Entscheidung leiten.
XP ist nicht nur eine Sammlung von Praktiken – es ist ein Wertesystem. Die Praktiken ergeben nur im Kontext der Werte Sinn. Ohne die Werte erhält man Cargo-Kult-XP: Teams, die Bewegungen ausführen, ohne den Geist dahinter.
Die fünf XP-Werte sind: Kommunikation, Einfachheit, Feedback, Mut und Respekt.
Das sind keine Motivationsposter. Es sind Entscheidungswerkzeuge. Wenn Sie unsicher sind, was zu tun ist, fragen Sie sich, welche Wahl diese Werte am besten verkörpert.
Kommunikation ist der erste Wert, weil Softwareentwicklung grundsätzlich ein Kommunikationsproblem ist. Wir schreiben nicht nur Code – wir übersetzen menschliche Bedürfnisse in Maschinenanweisungen.
Missverständnisse sind die Grundursache der meisten Bugs. Der Kunde sagt „schnell", der Entwickler implementiert Caching, aber der Kunde meinte „weniger Klicks". Traditionelle Ansätze versuchen, dies mit Dokumentation zu lösen. XP löst es mit kontinuierlicher Kommunikation.
In XP bedeutet Kommunikation:
Das Gegenteil von Kommunikation: annehmen, dass man weiß, was gebraucht wird, isoliert arbeiten, cleveren Code schreiben und Spezifikationen über die Mauer werfen.
Wenn Sie sich jemals über eine Anforderung unsicher sind, lautet die XP-Antwort immer: Sprechen Sie mit dem Kunden. Sofort. Nicht per E-Mail – sprechen Sie.
Einfachheit bedeutet, das Einfachste zu tun, das möglicherweise funktionieren könnte. Nicht das Eleganteste, nicht das Erweiterbarste, nicht das Allgemeinste – das Einfachste.
Dies wird im XP-Mantra YAGNI: You Aren't Gonna Need It erfasst. Bauen Sie keine Frameworks. Fügen Sie keine Erweiterungspunkte hinzu. Verallgemeinern Sie nicht. Bauen Sie genau das, was heute gebraucht wird.
Warum? Weil:
Das bedeutet nicht schlampig oder hacky. Einfacher Code ist oft schwerer zu schreiben als komplexer Code. Es erfordert tiefes Nachdenken darüber, was tatsächlich wesentlich ist.
Das Gegenteil von Einfachheit: für hypothetische zukünftige Anforderungen bauen, „nur für den Fall" Flexibilität hinzufügen, Abstraktionen erstellen, bevor man sie braucht.
Ein Team benötigt Benutzerauthentifizierung. Sie implementieren Benutzername/Passwort-Login. Wenn der Kunde später SSO anfragt, fügen sie es hinzu. Jeder Schritt ist einfach und liefert Wert.
Ein Team benötigt Benutzerauthentifizierung. Sie bauen ein abstraktes 'AuthenticationProvider'-Interface mit austauschbaren Strategien, das Benutzername/Passwort, SSO, OAuth und Biometrie unterstützt. Sie verwenden nur jemals Benutzername/Passwort.
Feedback ist, wie Sie lernen, ob Sie das Richtige tun. XP schafft Feedbackschleifen auf jeder Ebene:
Je schneller das Feedback, desto günstiger die Behebung. Ein Bug, der in Sekunden gefangen wird, kostet nichts. Ein Bug, der in Produktion gefangen wird, kostet Zeit, Geld und Reputation.
XPs Praktiken sind darauf ausgelegt, schnelles, ehrliches Feedback zu erzeugen. Tests lügen nicht. Funktionierende Software lügt nicht. Produktionsmetriken lügen nicht.
Das Gegenteil von Feedback: wochenlang isoliert arbeiten, bis zum Ende warten, um zu testen, Kundenkontakt vermeiden, Produktionsmetriken ignorieren.
Mut bedeutet, das zu tun, was getan werden muss, auch wenn es unbequem ist. In XP zeigt sich Mut als:
Mut ist nicht Rücksichtslosigkeit. Er wird von den anderen Werten unterstützt. Sie können mit Mut refaktorieren, weil Sie Tests haben (Feedback). Sie können sich zu Wort melden, weil Sie Kundenbeziehungen haben (Kommunikation).
Das Gegenteil von Mut: kaputte Fenster zurücklassen, Schätzungen aufblähen, um „sicher" zu sein, schlechte Nachrichten verstecken, tun, was immer getan wurde.
Mut braucht Sicherheit
Mut ohne psychologische Sicherheit ist nur Stress. Teams müssen wissen, dass sich zu Wort melden nicht bestraft wird.
Respekt wurde in der zweiten Auflage von Kent Becks Buch hinzugefügt und erkannte an, was immer implizit war: XP funktioniert nur, wenn Teammitglieder einander respektieren.
Respekt bedeutet:
Beim Pair Programming bedeutet Respekt, den Ideen Ihres Partners zuzuhören. Bei der Planung bedeutet Respekt, ehrliche Schätzungen zu geben. Bei Code-Reviews bedeutet Respekt, Code zu kritisieren, nicht Menschen.
Das Gegenteil von Respekt: Ideen ohne Überlegung abtun, Schuld zuweisen, einige Rollen als weniger wichtig behandeln, sich mehr darum kümmern, recht zu haben, als effektiv zu sein.