Entweder wir entwickeln agil oder wir designen unsere Software. Ist das wirklich so?
Gestern Abend in einer Kneipe mit „Hardcore-Entwicklern“. Wir stellen fest, dass die Welt wieder einmal kleiner ist als gedacht, da wir gemeinsame Freunde haben. (Nur am Rande: Weder dieser Entwickler noch der gemeinsame Freund, um den es geht, kommen aus Deutschland.) Der Entwickler neben mir kennt mich nicht und meint, unser gemeinsamer Freund hätte keine Ahnung von Softwareentwicklung und er würde ständig versuchen, andere von agiler Entwicklung zu überzeugen, die einerseits gar nicht funktionieren könne und andererseits höchst gefährlich sei.
Aus diesem Grund werde er auch ein Buch schreiben mit dem Titel „Design Driven Development“, worauf ich meinte, dass das doch gar nicht im Widerspruch zu agiler Entwicklung stünde. Aber er meinte, dass die „Agilisten“ lehren, dass man kein Design mehr bräuchte, da man ja alles nachher zurecht refaktorisiert, und außerdem wolle er als zweites Buch „Die Lüge Refactoring“ schreiben.
Ich fand es spannend und auch überraschend zu hören, dass Design für manche Menschen scheinbar der Agilität entgegenstehe. Denn meiner Ansicht nach spielt das gemeinsame Design im Team zum Beispiel während der Planung und auch generell während der Entwicklung eine ganz große Rolle. Ohne Design weiß ich gar nicht, wie man überhaupt planen können soll beziehungsweise wie man in der Lage sein kann, gemeinsam an einer Story zu arbeiten.
Weiterhin wird das Design durch die Diskussionen im Team transparent gemacht und auch von mehreren verifiziert. Darüber hinaus ? und das ist vermutlich der wichtigste Punkt ? ist es meines Erachtens nach unmöglich, viel mehr als 10 Iterationen (oder auch Sprints) an einer Software zu arbeiten, wenn man sich keine Gedanken zum Design (oder auch zur Architektur) macht. Das heißt, allein schon das iterative Vorgehen erzwingt ein (gutes) Design, da ansonsten der Topf verklebter Spaghetti (oder wie man das System sonst bezeichnen möchte) weder erweiterbar noch wartbar ist. Nicht ohne Grund erfordert das agile Manifest explizit:
„Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.„
Gestern Abend sind wir mit der Diskussion nicht wirklich auf einen grünen Zweig gekommen, selbst diverse Biere brachten keine Übereinstimmung. Und so warte ich auf die zwei Bücher, um den Widerspruch endlich verstehen zu können.