In dem folgenden Interview der Serie der Agilisten geht es um die impulsgebende Perspektive der Agilen Bewegung: dem Agile Engineering. Gerade diese besondere Perspektive in der agilen Software-Entwicklung ist durch die Vielzahl der neuen und wichtigen Fortschritte in der agilen Gemeinde in letzter Zeit eher hinter den Kulissen anzutreffen. Doch das ist keineswegs ein Indiz für Ruhe oder Müßiggang. Nein, das Gegenteil ist der Fall. Agile Entwicklung ist innovativer und anspruchsvoller geworden und macht auch mit leisen Sohlen große Fortschritte.

Im Interview: Björn Rochel

Es ist mir eine Ehre, den erfahrenen Software-Entwickler und Agilisten Björn Rochel Fragen über das spannende Feld der agilen Software-Ingenieurs-Kunst stellen zu dürfen. Wie kaum ein anderer versteht es Björn technologie- und fachübergreifend im Konzert der professionellen Software-Entwicklung die richtigen Töne mit Gefühl und besonnener Intensität zu treffen. Die komplexe Partitur der Agilität spielt er souverän in unerkannt akribischer Ingenieurs-Manier und hinterlässt dabei einen leichtes, harmonisches Klangbild. Es folgt ein komprimiertes Gesprächsprotokoll. Viel Spaß!

Hallo Björn. Was machst Du beruflich?

Derzeit arbeite ich als Software Engineer für das soziale Netzwerk XING. Mein Team ist verantwortlich für die XING Developer API, die im März als Closed Beta gestartet ist. Davor war ich lange Jahre in unterschiedlichen Rollen (Entwickler, Berater, Architekt) im Microsoft .NET Umfeld tätig.

Welches sind Deine Ziele bei der agilen Software-Entwicklung?

Kurz und knapp: Zufriedene Kunden, erfolgreiche Projekte, technische Exzellenz - und ein harmonisches, zufriedenes Entwicklungsteam. Alles unter einem Hut. :-)

Was zeichnet Deiner Meinung nach einen agilen Entwickler aus?

An erster Stelle steht hier die Eigenschaft des 'Teamplayers'. Die Kooperationsbereitschaft und -umsetzung ist ein wichtiges Erfolgsrezept für einen agilen Entwickler.

Gleichermaßen zeichnet sich der agile Entwickler durch seine Ansicht aus, dass Software-Entwicklung mehr ist, als einfach nur Code zu schreiben. Es braucht heutzutage eine Vielzahl von weiteren Kenntnissen und Rollen, um eine Software erfolgreich zu gestalten.

Doch das ist nicht alles, denn für mich hat ein agiler Entwickler noch eine weitere Schlüsseleigenschaft. Der agile Entwickler ist sich darüber im Klaren, das Software ständig im Wandel ist und sein wird. Stetige Veränderungsbereitschaft und Lernbereitschaft ist 'Agilität' im wahrsten Sinne des Wortes. Ein Design, welches heute gut aussieht und allen Ansprüchen genügt, kann übermorgen schon nicht mehr tragfähig oder adequat werden. Veränderung und Lernen setzt Erkenntnisgewinn voraus. Idealerweise gemeinsam in einem agilen Team.

Kann jeder Entwickler auch ein agiler Entwickler werden?

Natürlich! Ich wüsste nicht, welche Eigenschaften dagegen sprechen würden. Es ist klar, dass sich der eine oder andere leichter oder schwerer tut bei der Entwicklung hin zu einem agilen Entwickler. Wenn die Veränderungsbereitschaft da ist, kann jeder Entwickler ein agiler Entwickler werden. Das sich dabei manche leichter tun - und andere etwas mehr Unterstützung benötigen - das ist ganz normal.

Welche Methoden bzw. Praktiken sind für einen agilen Entwickler unverzichtbar?

Das Thema Testing ist für mich das A und O. Ich persönlich bin ein Freund des TDD (Test-Driven-Design), aber es gibt keinen Anlass für mich, in dieser Sache dogmatisch zu sein. Jeder hat in diesem Punkt seine Vorlieben und persönliche Effizienz. Was hier zählt, ist die Schärfung des Bewußtseins für das Testing. Ergo: wenn es Tests gibt, gibt es einen Ankerpunkt, an dem die agile Entwicklungsweise sich festhalten und orientieren kann. In einfacheren Worten: Ohne Tests kein Sicherheitsnetz. Ohne Sicherheitsnetz ist Software nur schwer evolvierbar.

Guter Punkt. Gibt es denn dann auch so etwas wie agiles Software-Design oder agile Software-Architekturen?

Also ich glaube schon, das ein gewisses Set an Techniken für einen agilen Software-Entwickler hilfreich sein können. Dennoch würde ich aber nicht per se Architekturen oder einzelne Design-Techniken als "agile Architekturen" bezeichnen. Software sollte sich auch an der agilen Prämisse der "Veränderungsbereitschaft" messen lassen können. Dazu gibt es hilfreiche technische Methoden bzw. Prinzipien, wie z.B. lose Kopplung, hohe Kohäsion, S.O.L.I.D. oder BDD (Behavior-Driven-Design).

Agiles Software-Design ist für mich demnach ein Design, welches die Flexibilität und Veränderbarkeit in sich verankert, aber gleichzeitig durch Tests und klare fachliche Umsetzung eine stabile Anwendung ermöglicht.

Viele Entwickler tun sich auf dem Weg zur Agilität schwer. Welchen Rat würdest Du einem Entwickler geben, der sich mit der Adaption der Methode oder Techniken schwer tut?

Puh, das ist eine wirklich schwierige Frage. Ich fange mal mit der methodischen Perspektive an.

Sich stetig einer möglichen Veränderung zu stellen, neue Herangehensweisen zu lernen und dann auch noch auf Anhieb richtig anzuwenden gelingt den wenigsten Software-Entwicklern. Es ist absolut normal, wenn Dinge nicht auf Anhieb klappen. Ergo: Ruhe bewahren. Gute Reflektion und ein stabiler Lernwille helfen. Es gilt: nicht gleich aufgeben, denn schließlich macht erst Übung den Meister.

Aus technischer Perspektive kann ich jedem nur den Rat geben, sich mit Testing als wichtigen Bestandteil intensiv zu beschäftigen. Als konkrete Hilfestellung für die immer wiederkehrende Frage, wie man existierende Software unter Tests bekommt, kann ich hier wärmsten das Buch Working effectively with Legacy Code von Michael Feathers empfehlen. Das war eines der ersten Bücher, die ich zu diesem Thema gelesen habe. Ich profitiere noch heute davon.

Welche Nachteile hat Deiner Meinung nach die agile Vorgehensweise für Entwickler?

Das ist eine persönliche, subjektive Sache. Agile Software-Entwicklung hat eine starke kollaborative und kommunikative Komponente. Insofern ist es für manch einen Entwickler ein Stückweit schwierig - gerade wenn man sich doch eher zurückziehen möchte und eigenständig am Rechner arbeiten möchte. Das kann als Nachteil ausgelegt werden. Ich persönlich habe schon des öfteren Entwickler kennen gelernt, die diesen kommunikativen Entwicklungsstil für sich als Nachteil empfunden haben. Das liegt aber weder daran, dass es objektiv ein Nachteil ist, noch daran, dass der Entwickler dafür generell ungeeignet gewesen wäre. Zumeist sind Unsicherheiten und halbherzige Umsetzungen an solchen Empfindungen mit beteiligt.

Wieso sollte Software agil entwickelt werden und nicht anders?

Agile Software-Entwicklung ist für mich das Prinzip der Veränderungsbereitschaft - ja sogar Veränderungsförderung. In unserer heutigen Gesellschaft verändert sich vieles rasant. Gerade im technologischen Bereich und Leben unserer Gesellschaft ist Bewegung und Veränderung normal. Die agile Software-Entwicklung ist schlichtweg notwendig, um sich mit dieser gesellschaftlichen und technologischen Veränderung bewegen zu können.

Agilität ist darüber hinaus noch mehr. Es ist eine Wertevorstellung, sich der Veränderung effektiv und nachhaltig zuzuwenden. Es geht also nicht nur um Veränderung, sondern auch um Werte, die unsere Informations- und Kreativarbeit mit Nachhaltigkeit und Menschlichkeit ermöglicht.

Was ist für Dich das wichtigste an einem agilen Team?

Das hört sich einfach an, ist es doch meist nicht: ein agiles Team sollte ausgewogen sein. Die Interdisziplinarität ist wichtig, denn es geht um die gemeinsame Umsetzung aller notwendigen Kenntnisse in die Entwicklung. Darüber hinaus zeichnet sich ein agiles Team durch die Motivationskraft des Teams wie auch der einzelnen Mitglieder aus. Die Eigenmotivation des Einzelnen spiegelt sich dann im Team wieder.

Was fehlt Deiner Meinung nach in der agilen Lebens- und Arbeitsweise?

Gute Frage. Die Agilität ist heute an einem Punkt, in dem es sich in unsere Software-Entwicklungs-Branche etabliert. Das ist sehr erfreulich, führt aber auch zu Reibungen und Schwierigkeiten. Dadurch reiben sich nicht nur Unternehmen oder Persönlichkeiten auf, sondern meiner Meinung nach auch die Agilität selbst. Begriffe wie Scrum, Kanban oder XP werden leider zu oft verwässert und verschwommen kommuniziert, aufgefasst oder interpretiert. Das ist für die Agilität leider nicht sehr förderlich.

Ich denke es würde uns gut tun, wenn wir Agilität als Grundlage für Werte und Methoden einer modernen Software-Entwicklung - oder Arbeitsweise - auffassen und nicht zu stark mit Implementierungen wie Scrum oder Kanban koppeln. Damit meine ich keine Entkopplung im Sinne unterschiedlicher Auffassungen, sondern eher eine Entkopplung im Sinne des Agilitätsbegriffes. Einfacher gesagt: Scrum und Kanban sind agile Methoden, aber Agilität definiert sich nicht im Gänze über Scrum oder Kanban.

Wenn Du Dir für die agile Arbeitswelt etwas wünschen könntest, was würdest Du Dir wünschen?

Ich würde mir wünschen, dass die Agile Bewegung nicht nur reduziert wird auf Software-Entwicklungs-Methoden oder Praktiken. Ich empfinde es als besonders wertvoll, dass sich eine Wertekultur um die Agilität entwickelt und auch stark transportiert wird, damit sich diese Werte in verschiedenen Bereichen über verschiedene Wege wiederfinden.

Vielen Dank, Björn!

Weitere Interviews der Serie "Der Agilist"

(c) Copyright . 1998 - 2013. Ilker Cetinkaya.