Agile Developer Skills

Selbstverständlich spielt die Zeit und damit verbunden die Phase, in der sich ein Team befindet, eine wesentliche Rolle, wie gut ein Team zusammenarbeitet. Wie alle anderen Teams auch, durchlaufen agile Teams Phasen, in denen das Team zusammenwächst (die Tuckman-Phasen) und benötigen eine Führung durch diese Phasen. In Scrum übernimmt dies der Scrum Master als „dienende Führungskraft“, ohne dabei eine disziplinäre Führungsrolle einzunehmen. Er ist im Zuge dieser Führung hauptsächlich als Moderator gefragt. Jedoch ist es auch seine Aufgabe, das Team weiter zu bringen und letztendlich ein „funktionierendes Team“ zu schaffen. Eine oft zitierte Analogie dazu wäre der Trainer eines Fußballklubs. Oft aber bleiben Teams in ihrer Entwicklung stehen, wenn sie nicht über ihre eigene Konfliktphase hinweg kommen oder diese erst gar nicht richtig beginnen können. Nur die Überwindung dieser „Storming“ genannten Phase bringt ein Team in die Performing-Phase. Die Teammitglieder und der Scrum Master müssen daran arbeiten, Team-Skills zu entwickeln.

Auch alle technischen Kompetenzen, die zur Realisierung nötig sind, gehören in das Team. Das betrifft insbesondere die Tester, die intensiv und täglich mit den Entwicklern zusammenarbeiten müssen und eine hohe Bandbreite beim Informationsaustausch und beim gegenseitigen Lernen ermöglichen. Wenn irgend möglich, betrifft das auch andere Spezialisten wie Architekten, Designer/UX-Spezialisten, die zumindest für einige Sprints im Team mitarbeiten sollen. Nicht vergessen: Latenzzeiten durch Kommunikation über Teamgrenzen hinweg stören enorm eine produktive Arbeit.

Skills entwickeln

Eine schöne Formulierung und Anlehnung an die Handwerkskunst von Robert Martin, die er auf der Agile 2008 Conference publiziert hat, lautet Craftsmanship over Execution und er schickt hinterher: „Most software development teams execute, but they don’t take care. We value execution, but we value craftsmanship more.“ – auf einer Konferenz davor witzelte er „Craftmanship over crap“ als Erweiterung des agilen Manifests. Mit „Craftmanship“ also Handwerkskunst ist also ein Mindset verbunden, das ständiges Lernen und Sich-Weiterbilden, seine Künste vertiefen umfasst.

In der agilen Welt ist die japanische Metapher von Shu-Ha-Ri bekannt geworden. Ursprünglich handelte es sich um Stufen im Handwerk, etwa vergleichbar mit dem deutschen Lehrling-Geselle- Meister. Die Stufung ist über die Budo-Kampfsportkünste im Westen bekannt geworden. Dabei bedeutet

  • Shu: Lernen der Grundlagen, Regeln und Heuristiken. In dieser Stufe gibt es einen Meister und vorgegebene Regeln, die der Lehrling lernt, anzuwenden
  • Ha: Die Regeln sind in Fleisch und Blut übergegangen, man konzentriert sich auf die Ausnahmen, hinterfragt die Regeln und entwickelt seinen eigenen Stil
  • Ri: Es gibt keine isolierten Regeln mehr, alles ordnet sich in einen natürlichen Fluss ein

Viele Techniken und agile Entwickler-Skills kann man mit dieser Metapher betrachten: Praktiziert es zunächst wie aus dem Buch – damit bekommt man die Erfahrung, an welchen Stellen man über die Regeln hinausgehen kann oder muss. Nach dem Praktizieren nach Anleitung und dem Sammeln der ersten Erfahrungen beginnt die eigentliche Reise erst.

Lernen aus dem Buch ist nur ein Teil. In der heutigen Welt 2.0 gibt es Unmengen an Informationen in Onlineforen, Wikis und vor allem Communities und User Groups, um das Wissen zu teilen. Beteiligt euch an Communities, nehmt zunächst Wissen heraus und gebt dann wieder zurück, indem ihr Fragen anderer beantwortet, Postings in Foren macht und auch Blogs schreibt. Der Besuch von Konferenzen ist ebenfalls sehr lohnenswert.

Eine Schlüsselrolle bei den Skills nimmt dabei auch die ständige Verbesserung der Fähigkeiten und des Handwerkszeugs des Teams ein. Ein wesentliches Element ist das regelmäßige Lernen in Retrospektiven. Ein noch intensiveres Mittel ist als Pair Programming bekannt geworden. Dabei teilen sich zwei Entwickler zeitweise einen Bildschirm. Einer nimmt die Position an der Tastatur ein, während der andere als eine Art Pilot arbeitet, die Aktionen kommentiert und Ratschläge gibt – oder auch parallel Informationen nachschlägt; in regelmäßigen Abständen werden diese Rollen vertauscht. Es ist als Mittel zur Verbreitung von Kenntnissen und Fähigkeiten im Team fast unschlagbar.

Ebenfalls aus dem fernöstlichen Raum stammen Trainingstechniken für die ständige Verbesserung der Kampfkünste, die Katas. Der japanische Begriff „Kata“ (wörtlich übersetzt „Form“) beschreibt ein detailliertes Muster an rund 40 Kampfbewegungen, die den Kampf mit einem imaginären Gegner simulieren. Das permanente Training dieser Katas soll die Form und Ausführung perfektionieren. Die Idee wurde von Dave Thomas mit den so genannten Code-Kats übernommen, wo man versucht, eine Programmieraufgabe immer wieder zu wiederholen und dabei kleine Fortschritte zu machen. Auf seiner Webseite beschreibt Dave Thomas etliche Code-Katas, die man z. B. als „Training“ in rund 30 Minuten absolvieren kann. Eine zweite Form dieser Katas, der Randori (wörtlich „das Chaos nehmen“) stammt ebenfalls aus den asiatischen Kampfsportarten. Er verfolgt dasselbe Ziel der Übungszwecke, die erlernten Techniken werden hier jedoch in freier Form angewandt. Die Dojos sind dabei die Übungshallen, in denen Katas und Randoris geübt werden. Analog dazu findet man heute in vielen Communites, wo Kats oder Randoris in Code-Dojos gehalten werden. Wir, die Autoren, veranstalten diese zum Beispiel regelmäßig in unseren Büros intern sowie auch als Community.

Sieben Leitlinien für agile Entwickler
  • Entwickle das richtige System
  • Beweise es kontinuierlich
  • Liefere zielgerichtet neue Funktionalität
  • Liefere in jedem Sprint
  • Trage zu richtiger Architektur und Design bei
  • Arbeite kooperativ
  • Bilde dich weiter und hilf anderen, zu lernen
Fazit

Agile Softwareentwicklung stellt Teams vor eine Menge an neuen Herausforderungen und fordert daher die Entwicklung von Skills, die als solche in den letzten Jahren innerhalb der Community entstanden. Etliche sind nicht neu, aber genauso wenig selbstverständlich. Viele Skills müssen erlernt werden. Die Autoren arbeiten zurzeit an einem Buch „Agile Entwickler-Skills“, das das Thema agile Softwareentwicklung speziell für die Rolle des Teammitglieds beleuchtet und Tipps und Tricks gibt, diese Skills zu erlernen. Die begleitende Webseite zum Buch ( http://agile-developer-skills.de) ist seit Kurzem online, darauf sind neben Community und Forum zum Wissensaustausch auch erste Kapitel für Review und Feedback verfügbar.

Dr. Christoph Mathis ist Certified Scrum Trainer und Certified Scrum Coach. Er ist geschäftsführender Gesellschafter bei der ScrumCenter GmbH in München und hilft Teams und Firmen, die Herausforderungen bei der Umstellung auf Scrum und agile Softwareentwicklung effektiv zu meistern. Wenn er etwas Zeit übrig hat, entwickelt er in Java und Scala Webanwendungen.

Dr. Andreas Wintersteiger ist Certified Scrum Coach und bei Objectbay in Österreich tätig, um Unternehmen bei der Einführung agiler Softwareentwicklung zu helfen. Er ist Informatiker mit über 20 Jahren Erfahrung und war selbst in kleinen Start-ups sowie internationalen Großkonzernen tätig. Wenn es seine Zeit zulässt, entwickelt er in Java und Ruby.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.