Effiziente Team-Techniken gegen Softwareentwicklungsschmutz

Im 1. Artikel habe ich erläutert, was Softwareentwicklungsschmutz ist und welche Rahmenbedingungen dazu beitragen, dass er entstehen kann.

Im folgenden 2. Artikel wurden Präventionsmaßnahmen vorgestellt, die jeder Entwickler auf Code-Basis umsetzen und in seinem Alltag „leben“ kann.

Da jedoch der Begriff „clean“ heutzutage nicht mehr nur im Zusammenhang mit dem Quellcode verwendet, sondern viel breiter verstanden wird, zeigt der 3. Teil, wie Präventionsmaßnahmen im Team umgesetzt und so Softwareentwicklungsprozesse effizienter gestaltet werden können.

Clean Coding schließt nach meinem Verständnis auch: sauberes Requirements Engineering, verantwortungsvolles Projektmanagement und effektive Zusammenarbeit mit dem Betrieb ein.

Umsetzung im Team! Wieso?

Die Motivation eines Entwicklers allein selbstauferlegten Regeln zu folgen, ist auf Dauer sehr schwer. Daher bietet es sich an, eine zusätzliche viel stärkere Motivationsquelle heranzuziehen – die gemeinsame Arbeit im Team („Team-Clean-Coding“).

Das Team verfolgt gemeinsam das gleiche Ziel – und noch viel wichtiger – es begegnen sich alle auf Augenhöhe.

Rahmenbedingungen

Bevor es richtig losgehen kann, müssen allerdings Rahmenbedingungen festgelegt werden. Hierzu zählen ein gemeinsames Grundverständnis und vorab definierte Abstimmungsmodalitäten. Es gibt unterschiedliche Modelle, die zur Entscheidungsfindung herangezogen werden können:

  • Hierarchische Modell: Das Team überträgt einem Mitglied für einen bestimmten Bereich die Entscheidungshoheit.
  • Mehrheitsmodell: Die Alternative mit der höchsten Zustimmung wird beschlossen.
  • Konsent: Die Alternative mit der geringsten Ablehnung wird beschlossen.
  • Konsens: Eine Alternative wird nur beschlossen, wenn sie keine Ablehnung erfährt.

Im Letzten Schritt der Vorbereitung müssen Punkte geklärt werden, die in jedem Projekt eine Rolle spielen. Für jeden dieser projektunspezifischen Punkte ist eine Empfehlung genannt:

  • Dokumentation: Alle verabschiedeten Regeln und Prozesse werden in einem Wiki festgehalten. Alle Teammitglieder haben Lese- und auch Schreibrechte. Darüber hinaus werden ein zentraler Problem-Lösung-Katalog sowie eine zentrale Checklistensammlung gepflegt.
  • DoC: Die „Definition of Clean“ festlegen (Welche Clean-Code-Developer-Regeln werden eingeführt und gelebt?)
  • DoD: Die „Definition of Done“ gemeinsam festlegen (Wann gilt eine Aufgabe als fertig?).
  • Code-Ownership: Jeder Entwickler ist berechtigt jede Codestelle zu verändern.

Meinungsaustausch

Für eine permanente Optimierung benötigt das Team regelmäßige Treffen um sich auszutauschen und zu diskutieren.

Hier sind drei verschiedene Formen der Teamsitzungen vorgesehen:

Daily Stand-Up
Kurze Meetings (1-2 Minuten pro Teilnehmer), die täglich zur selben Zeit im Stehen stattfinden. Jedes Teammitglied beschreibt kurz seine zuletzt abgeschlossene und seine aktuelle Tätigkeit und benennt ggf. Probleme, die ihn aufhalten.

Journal Coding Club
Wöchentlich oder 14-tägig stattfindendes Meeting, die Fortbildungscharakter mit direktem Projektbezug haben. Der Nutzen ist der, dass der Wissensstand im Team angeglichen werden kann und alle eine einheitliche Vorstellung davon haben „was sauber bedeutet“.

Retrospektive Meetings
Monatliche oder quartalsweise zwei- bis dreistündige Team-Meetings. Dort wird besprochen, was gut lief und was weiniger und was man gelernt hat.
Nutzen: Regelmäßige Reflexion im Team über einen längeren Zeitraum.

Diese drei aufgeführten Meeting-Typen benötigen zusammen für ein fünfköpfiges Team ca. 4 PT pro Monat an Kommunikationsaufwand.

Darüber hinaus stehen den Mitgliedern noch weitere Instrumente wie

zur Verfügung.

Überwachung der getroffenen Regeln und Prozesse

Um die Einhaltung zu überprüfen, stehen folgende Möglichkeitenzur Verfügung:

  • Das Vier-Augen-Review: Dieses Review überprüft die Einhaltung der „Definition of Done“ und stellt ein bewährtes Review-Verfahren dar.
  • Die 1-Euro-Regel: Fehler zu machen ist menschlich – jedoch leidet die Softwarequalität, wenn Fehler wiederholt gemacht werden. Um dem entgegenzuwirken, kann die 1-Euro-Regel eingesetzt werden. Die Teammitglieder benennen Regeln, deren Verstoß als schwerwiegend deklariert wird. Wird gegen eine dieser Regeln verstoßen, muss der „Regelbrecher“ 1 Euro in die gemeinsame Teamkasse spenden.

Äußere Rahmenbedingungen

Um die „Clean-Coding-Teams“ zu unterstützen, sollten folgende Punkte beachtet werden:

Selbstorganisation des Teams unterstützen
Entwicklungsteams sind immer äußeren Zwängen ausgesetzt, die ihre Selbstbestimmung eingrenzen. Das Umfeld der „Clean-Coding-Teams“ sollte zum einen dem Team einen sinnvollen Rahmen geben, der die Selbstorganisation der Teams akzeptiert und nicht zu sehr einschränkt.

Kommunikation im Team einplanen
Es muss den Teams ausreichend Zeit für Kommunikation gegeben werden.

Fortbildung der eigenen Mitarbeiter fördern
Die Fortbildung der Teammitglieder sollte unterstützt werden. Denn in der schnelllebigen IT bedeutet Stillstand Rückgang. Außerdem fördern Fortbildungsmaßnahmen bei vielen die Motivation.

Teamstimmungen berücksichtigen und fördern
Auf die Teamzusammensetzung und auf die daraus folgende Teamstimmung achten. Neue Kollegen nicht nur nach Skill Tests auswählen. Schlechte Teamstimmung führt in der Regel zu mangelnder Kommunikation und damit zu schlechter Team-Performanz und Wildwuchs im Code.

Fazit

Durch die Einführung der oben genannten Maßnahmen kann der Softwareentwicklungsprozess effizienter/“cleaner“ werden, da sich die Teammitglieder gegenseitig motivieren, voneinander lernen und an einem Strang ziehen.

Links   [ + ]

1, 2. http://www.iks-gmbh.com/assets/downloads/iks-CleanCodingCosmos-Teil-3-OBJEKTspektrum-02-2014.pdf

Artikelreihe
Teil 1: Oh Schreck – Schmutz in der Softwareentwicklung?!
Teil 2: Schmutz im Code erkennen und vermeiden
Teil 3: Effiziente Team-Techniken gegen Softwareentwicklungsschmutz

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.