Die Kontexte und Bedingungen, in denen XP-Praktiken den größten Nutzen liefern.
XP wurde für Projekte entwickelt, bei denen sich Anforderungen häufig ändern. Wenn Sie nicht genau wissen, was Sie bauen sollen, hilft Ihnen XP dabei, es herauszufinden.
Anzeichen für hohe Unsicherheit:
In diesen Umgebungen scheitern traditionelle Ansätze. Detailliertes Design im Voraus wird vor der Implementierung obsolet. Große Releases verfehlen das Ziel, weil sich die Anforderungen geändert haben.
XP nimmt Veränderungen an. Kleine Releases liefern schnell Feedback. Einfaches Design vermeidet Überinvestitionen. Das Planning Game passt sich kontinuierlich an. Unsicherheit ist kein Problem – sie wird erwartet.
Wenn Ihre Anforderungen wirklich stabil und gut verstanden sind, funktioniert XP trotzdem, aber das Wertversprechen ist anders. Sie gewinnen Qualität und Teamgesundheit, aber die Vorteile der Anpassungsfähigkeit sind weniger ausgeprägt.
XP geht davon aus, dass Sie etwas bauen, das Sie noch nicht vollständig verstehen. Die Praktiken sind darauf ausgelegt, Ihnen zu helfen, sich zur richtigen Lösung vorzuarbeiten.
XP glänzt, wenn Code jahrelang leben wird. Die Investition in technische Praktiken zahlt sich im Laufe der Zeit aus.
Warum langlebige Systeme von XP profitieren:
Wenn Sie einen Prototyp bauen, der weggeworfen wird, zahlt sich XPs Investition in Qualität möglicherweise nicht aus. Aber die meisten „Prototypen" werden zu Produktionssystemen. Der meiste „temporäre" Code lebt jahrelang.
Die Wette: Gehen Sie davon aus, dass Ihr Code länger leben wird, als Sie denken. Investieren Sie von Anfang an in Qualität. Wenn Sie falsch liegen, haben Sie ein wenig Zeit verloren. Wenn Sie richtig liegen (und das sind Sie normalerweise), haben Sie sich Jahre voller Schmerzen erspart.
XP erfordert enge Zusammenarbeit. Pair Programming, Planning Games und Collective Ownership funktionieren nur, wenn Menschen gut zusammenarbeiten.
Anzeichen dafür, dass Ihr Team bereit ist:
Wenn Ihrem Team diese Qualitäten fehlen, werden sich XP-Praktiken erzwungen und unangenehm anfühlen. Sie müssen möglicherweise zuerst die Teamgesundheit aufbauen, bevor Sie XP einführen – oder XP-Praktiken nutzen, um die Teamgesundheit schrittweise aufzubauen.
XP kann die Zusammenarbeit verbessern, aber es kann sie nicht erzwingen. Ein Team von Menschen, die keinen Code teilen wollen, wird nicht plötzlich Collective Ownership annehmen. Ein Team, das Angst hat, Fehler zuzugeben, wird nicht von Transparenz profitieren.
Die Kultur muss die Praktiken unterstützen – oder zumindest bereit sein, sich zu ändern.
Entwickler helfen sich regelmäßig gegenseitig. Sie geben zu, wenn sie feststecken. Sie rotieren bereitwillig durch die Codebasis. Sie feiern Teamerfolge, nicht individuelle Heldentaten.
Entwickler schützen „ihren" Code. Sie verbergen Probleme, bis sie gezwungen sind, sie offenzulegen. Es gibt Konkurrenz statt Zusammenarbeit. Schuldzuweisungen sind häufig, wenn etwas schiefgeht.
XP erfordert einen verfügbaren Kunden – jemanden, der Fragen beantworten, Prioritätsentscheidungen treffen und Feedback geben kann.
Ohne Kundenverfügbarkeit:
Kundenverfügbarkeit bedeutet:
Wenn Ihre Kunden nicht verfügbar sind, wird XP schwierig. Sie können einen Product Owner als Stellvertreter einsetzen, aber jemand muss die Kundenrolle effektiv spielen.
Organisatorische Dysfunktion verhindert oft die Kundenverfügbarkeit. Der Kunde ist zu beschäftigt, zu politisch oder zu weit entfernt. Das sind organisatorische Probleme, die gelöst werden müssen, keine XP-Probleme.
Einige XP-Praktiken setzen moderne Softwareentwicklungskontexte voraus. Sie müssen möglicherweise in anderen Umgebungen angepasst werden.
TDD setzt voraus:
CI setzt voraus:
Pair Programming setzt voraus:
In den meisten Softwareentwicklungen gelten diese Annahmen. Aber eingebettete Systeme, hardwareabhängiger Code oder stark regulierte Umgebungen erfordern möglicherweise Anpassungen der Praktiken.
Die Prinzipien bleiben. Die spezifischen Praktiken können sich ändern.
Wenn TDD in Ihrer Umgebung unmöglich erscheint, fragen Sie sich warum. Oft offenbart die „Unmöglichkeit" Designprobleme, die TDD Ihnen helfen würde zu beheben.