 |
(10.01.04 13:22)
Heute morgen hatte ich ein interessantes Gespräch mit einem guten Freund und Softwareentwickler zum Thema iterative Entwicklung, XP und Test-First-Entwicklung.
Mein Freund liest gerade das Buch der pragmatische Programmierer von Hunt&Thomas. Das müsste er eigentlich nicht tun, da er einer der wenigen Entwickler ist, die vieles von dem, was in diesem Buch steht, bereits seit vielen Jahren praktiziert. So gehört das konsequente Unit-Testing und die stetige Suche nach verständlichen und qualitativ hochstehenden Lösungen schon seit vielen Jahren zu seinem beruflichen Alltag. Aber weil immer alle von diesem Buch reden, hat er sich nun doch entschlossen, es zu lesen.
Ich schätze dieses Buch aus einem ganz - nun ja - pragmatischen Grund: Hunt und Thomas haben sich die Mühe gemacht, für viele gute und schlechte Verhaltensweisen und Arbeitstechniken griffige Namen zu finden; das erleichtert die Kommunikation. Nun hat mein Freund beim Lesen des Buches aber das Gefühl, die beiden Autoren seien - obwohl sie das Gegenteil behaupten - doch recht dogmatisch in ihren Ausführungen, und man gewinne an der einen oder anderen Stelle im Buch den Eindruck, die Autoren seien der Meinung, dass ihre Art etwas zu tun, die einzig richtige sei. Ich habe das, als ich das Buch gelesen habe, zwar nicht so empfunden, doch kann ich diese Einschätzung durchaus nachvollziehen.
Wir sind dann im weiteren Verlauf des Gesprächs auch auf Kent Becks Buch Test Driven Development by Example zu sprechen gekommen. Die von Beck skizzierte Vorgehensweise mit vielen kleinen Babyschritten, bei denen der Test stets am Anfang steht, ist eine Arbeitsweise, die meinem Freund nicht liegt. Das hat sicher damit zu tun, dass er über ein enorm ausgeprägtes Abstraktionsvermögen verfügt, und er in der Lage ist, das Ganze und die es ausmachenden Teile beim Entwerfen und Umsetzen eine Software gleichermassen im Auge zu behalten. Er schreibt die Tests stets hinter her, und es kommt dabei sehr selten vor, dass er seinen Entwurf aufgrund der Tests ändern muss. Seine Lösungen zeigen dabei die gleiche Eleganz und Änderungsfreundlichkeit wie Entwürfe, die in Beckscher Manier in vielen kleinen Babyschritten entstanden sind. Denn auch mein Freund macht - nach seinem Empfinden - Babyschritte. Doch sind diese auf einem höheren Niveau der Abstraktion angesiedelt. Diese Arbeitstechnik funktioniert für ihn. Und sie funktioniert umso besser, je bekannter die Problemdomäne ist. Es ist höchst spannend dabei zu sein, wenn er die komplexesten Probleme Stück für Stück in funktionstüchtigen, eleganten und robusten Code überführt und die nötigen Testfälle dazu umsetzt; einzig die Musik, die er dabei hört, strapazieren zumindest mein Nervenkostüm ziemlich arg - doch das ist eine andere Geschichte :-).
Für viele Entwickler ist ein Test-First mit Babyschritten die beste Möglichkeit, um zu guten Lösungen zu gelangen. Das Nachdenken über die Testfälle hilft eben enorm bei der Suche nach einfachen und guten objekt-orientierten Entwürfen. Die Testbarkeit ist ein Gradmesser für die Güte des objekt-orientierten Entwurfs; nicht zuletzt deswegen ist diese Art der Softwarentwicklung so wertvoll. Das bringt uns zurück zu Hunt&Thomas und einer Technik, die sie Leuchtspurmunition (engl. Tracer Bullets) nennen. Diese Technik wird immer dann angewandt, wenn man den Weg zur Lösung noch nicht genau kennt und wir quasi im Dunkeln stehen. Man verwendet Tracer Bullets, um eine Weg zum Ziel zu finden und ein Gespür für das eigentliche Problem zu bekommen. Nun schein mir Test-First mit Babyschritten nach Beck manchmal wie das Abfeuern von Leuchtspurmunition auf sehr kurze Distanz, während man mitten in einem dunklen Wald steht. Eine mögliche Gefahr besteht hierbei darin, dass man den Blick für die grösseren Zusammenhänge verliert und sich verläuft. Im schlimmsten Fall läuft man sogar im Kreis herum. Daher scheint es mir sehr wichtig, die richtige Distanz beim Abfeuern von Leuchtspurmunition zu wählen. Das bedingt Erfahrung, und die bekommt man nur durch Übung. Letztlich geht es bei Babyschritten und Leuchtspurmunition - wie beim Schreiben von Tests - auch um Feedback, das uns dabei hilft zu überprüfen, ob das, was wir tun noch angemessen ist. Die richtige Kombination und die Grösse der gewähten Babyschritte hängt dabei wesentlich vom eigenen Erfahrungsschatz und der Grösse des Waldes ab.
Manchmal verlaufen sich auch die Erfahrendsten von uns. In einem solchen Moment braucht man dann den Mut, sich das einzugestehen, einen Hubschrauber anzufordern und zurück zum Ausgangspunkt zu fliegen oder weniger blumig: Löschen und neu beginnen.
-nemo :-)
|
 |