8. Extreme Programming

Extreme Programming XP beinhaltet alle Aspekte des Abschnitt 7, bietet den Teams darüber hinaus aber weiter differenzierte Methoden für die vier sich bis zur endgültigen Fertigstellung der Software ständig wiederholenden Entwicklungs-Zyklen (Interationen) an:

1. Planung, 2. Design, 3. Programmierung, 4. Test, 1. Planung, 2. Design ....

Siehe auch www.extremeprogramming.org. Dieses etwas merkwürdige, scheinbar uneffektive und aufwändige Prozedere begründet sich aus der Praxiserfahrung heraus: Ein Programmierer trägt täglich nur wenige, dauerhaft und korrekt geschriebene Codezeilen bei. Nicht selten beträgt die Produktivität eines Programmierers gemittelt nur ganz 5! Codezeilen je Arbeitstag. Nichts ist beständiger, als die Veränderung - XP ist ein bewußter Prozess von bewußtem Experimentieren und ständiger Verbesserung des Codes, wobei XP bewährte Methoden liefert, daß automatisch gute Software automatisch entsteht. Während in vielen Programmierer - Teams der innige Wunsch nach fehlerfreier, perfekter Software gepflegt wird, oder wie ein Damokles-Schwert über den Köpfen der Programmierer hängt, so berücksichtigt XP direkt von Anfang an, daß nichts und niemand perfekt ist, und Perfektion nur durch einen kontinuierlichen Verbesserungsprozess (KVP) entstehen kann. Diese neue Denke, bzw. das Bewußtsein in ein Team hinein zu tragen, ist ebenfalls ein Prozess, der nicht von heute auf morgen passiert. Übrigends ist XP exakt die Implementierung / Umsetzung von KAIZEN, einem bei in Japan erfundenem "KVP" (Kontinuierlicher Verbesserungs - Prozess), der zur Sicherung der Qualität im Fertigungsprozess und zur Optimierung der Fertigungs und Managementkosten ( lean production, lean management, lean thinking ) in der japanischen Autoindustrie, aber auch bei Boeing und bei Porsche angewendet wird. Mehr hierzu siehe http://www.little-idiot.de/teambuilding/kaizen.pdf Der Begriff TQM (Total Quality Management, Total=Allumfassend), in Japan geprägt, ist ein umfassendes Konzept, welches sich z.B. auch in der DIN/ISO Norm 8402 wiederfindet.

XP ist ein sehr raffiniertes Kaizen - Konzept, wobei jeder Punkt in den 4 verschiedenen Phasen, die zyklisch immer wieder durchlaufen werden, einen tieferen Hintersinn hat, also implizite Logiken enthält, die nicht direkt durchschaubar sind, weil die Effekte erst in der Dynamik sichtbar werden. Es ist für einen Teammitglied nur schwer zu verstehen, daß Prozesse, bei welchen jedes Teammitglied individuelle Nachteile hat, diese für das Team insgesamt jedoch von Vorteil sind:

1. Planungsphase:

2. Designphase:

3. Programmieren, codieren:

4. Testphase:

Nachdem dies erst einmal gesackt ist, so ging es mir, habe ich wieder von vorne angefangen zu lesen, und so langsam dann erst verstanden, wie diese selbstkorrigierenden, dynamischen Prozesse eigentlich funktionieren, welche impliziten Logiken hinter jedem einzelnen Punkt verborgen sind. Gelegentlich wird die Frage nach "Kontrolle, Überprüfbarkeit" der Leistung gestellt. Hierzu ist zu sagen, daß allein die Tatsache, in einem solchen "Extreme Programming" Team mitzuarbeiten, und die Dynamik täglich beobachten zu können, mit welcher Vehemenz, Intensität, Geschwindigkeit hier programmiert wird, sehr viel Freude macht, sprich Endorphine freisetzt. Nicht selten sieht das Großraumbüro, in welchem 1-2 Dutzend Programmierer wirken, wie ein Schlachtfeld aus, Papier, Diagramme allerorten, die Relikte intensiver Kommunikation. Durch Pair - Programming und ständigen Wechsel sind nach wenigen Monaten alle Teammitglieder wissensmäßig auf demselben Stand, die Unterschiede in der Leistung nur noch marginal.

Software - Entwicklung im OpenSource - Bereich, also der Linux Kernel, die GNU Toolkits, allen voran der GCC C-Compilier, die grafischen Benutzeroberflächen, der Apache Webserver, tausende von Anwendungswerkzeugen werden allesamt nach den Kriterien von XP entwickelt. Ein kleiner Unterschied jedoch besteht. Die Unit - Tests werden nicht von Programmen durchgeführt, sondern die gigantische Anwendergemeinde von vielen Millionen Usern, darunter viele hunderttausende Neugierige, die sich gerne eine Beta - Version von Linux (Mandrake Cooker, Debian Testing, ...) herunterladen, führen die Tests durch und melden, ob und wann ein Modul nicht funktioniert. Das "Release early" Prinzip der OpenSouce Gemeinde sorgt dafür, daß frühzeitig Fehler bekannt werden. ZopeX3, z.B. verwendet Unit - Testing, siehe Abschnitt 10.