0511 874 590 50 info@agile-im.de

Die technischen Schulden in einem Projekt werden aus verschiedenen Gründen aufgebaut und vermehren sich meist kontinuierlich. Wie können diese Schulden aber beglichen (oder besser noch: vermieden) werden, ohne die kontinuierliche Realisierung von Mehrwert zu stark auszubremsen?

Warum kein technisches Release?

Ein Lösungsansatz, der häufig zuerst in Betracht gezogen wird, ist dein Einplanung mehrerer technischer Releases, in denen daran gearbeitet wird, die Codebasis zu bereinigen. So soll versucht werden, unvollständig umgesetzte Design- und Architekturansätze aufzuräumen und die technischen Schulden in den Griff zu bekommen.

Dagegen sprechen aber mehrere Faktoren: Denn dass die Ansätze nicht von allen Entwicklern gleichermaßen umgesetzt werden, liegt in erster Linie daran, dass das Wissen über diese unvollständig umgesetzten Architekturansätze sich auf wenige Personen bündelt. Diese Wissensträger werden dann auch bevorzugt dafür eingesetzt, den Code ‚gerade zu ziehen‘. Das führt in der Regel dazu, dass diese Wissensträger noch stärker ausgelastet werden. In der Folge diese Wissensträger dann noch weniger Zeit haben, ihr Wissen zu dokumentieren und weiterzugeben.

Positive_Downwards

Diagramm 1 zeigt eine positive Feedbackschleife. „Positiv“ bedeutet hier allerdings nur, dass die Ineffizienz der Lösungsentwicklung durch die beschriebenen Faktoren verstärkt wird. Entsprechende Lösungsansätze müssen also dafür sorgen, dass Wissen und Umsetzung möglichst nachhaltig und gleichmäßig auf alle Beteiligten im Architektur- und Entwicklungsteam verteilt werden und das gesamte Team die Lösungsqualität steigert.

In jahrelang angewachsenen Modulen ist es zudem kaum möglich, alle angefallenen Themen auf einmal zu beheben da der Aufwand dafür oft einer Neuimplementierung gleich kommen würde. Ein weiteres Argument gegen technische Releases liegt in der quasi stagnierenden Weiterentwicklung des Funktionsumfangs ohne sichtbaren Mehrwert für die Nutzer der Lösung.

Gerichtete Wissensverbreitung im Unternehmen

Die folgende Spielregeln haben sich in der Praxis als erfolgreich für die Minimierung des technischen Schuldenberges erwiesen:

  1. Schnittstellen dokumentieren
  2. Quelloffen arbeiten
  3. Regelmäßige Reviews
  4. Implementierung durch alle Teammitglieder
  5. Regelmäßige Absprachen

Durch dieses Vorgehen wird sichergestellt, dass das Wissen aktiv an Mitarbeiter verteilt wird. Die Wissensträger haben eher eine definierende und kontrollierende Funktion.

Konkrete Umsetzung mit Atlassian Werkzeugen

Die Atlassian Tool Suite ist darauf ausgerichtet, die Kollaboration von Teams zu unterstützen und medienbruchfrei zu gestalten. Die Wissensverbreitung kann damit wie folgt unterstützt werden:

1. Schnittstellen dokumentieren

Das Wissen über Schnittstellen und Architekturfragmente muss für die Entwickler leicht und möglichst Medienbruch frei zu erreichen sein. Confluence bietet mit Blueprints zu Artikeln und vorgefertigten Bereichen für Wissensmanagement eine gute Basis für Anleitungen, Dokumentationen von Architekturfragmenten und Fehlerbehebungsartikeln.

2. Quelloffen arbeiten

Der sogenannter ‚code ownership‘ führt häufig zu Engpässen. Eine gute Methode um dies zu verhindern ist dass der Code von jedem Beteiligten verändert werden kann. Die Änderungen werden aber nicht direkt auf den Hauptzweig des Versionierungsystems angewendet sondern in einem neben läufigem Zweig vorgehalten. Die Änderungen können schließlich von denjenigen die ein engeres Wissen um die Funktionsweise besitzen betrachtet und nach einer Überprüfung in den Hauptzweig übernommen werden.

3. Regelmäßige Reviews

Für Teams, die sich gerade Gedanken um die Qualität ihres Codes machen, gibt es schon in der Versionsverwaltung von Atlassian, ‚Bitbucket‘, die Möglichkeit kleine Arbeitsabläufe für Reviews ohne viel Aufwand einzurichten. Im Zusammenspiel mit JIRA und dem Build-Server von Atlassian, Bamboo, lassen sich mittels einfacher Konfiguration viele nützliche Effekte erzielen:

    • Automatisches Branch handling:
      • Auto Merge
      • Review Unterstützung
      • Automatische Statusanpassung
      • Automatische Ticket Erstellung bei Problemen
    • Transparenz innerhalb der Tools über den gesamten Application Lifecycle:
      • Commits
      • Reviews
      • Build
      • Deployment
    • Sichtbarkeit der Code Qualität durch Metriken wie Testabdeckung, etc.

Für gehobene Anforderungen an Reviews eignet sich das Atlassian Tool ‚Crucible‘ dazu, einen Rahmen für fortgeschrittenere Abläufe bei regelmäßigen Reviews zu etablieren.

4. Implementierung durch alle Teammitglieder

Da der Reviewer gezielt auf Muster achten soll, die evtl. von den dokumentierten Mustern abweichen, ist es meist so dass der Reviewer, gerade beim Einrichten des Vorgehens, ein direkter Wissensträger ist. Wichtig für den Lernprozess ist das der Reviewer nicht selbst den Code anpasst und berichtigt sondern ein JIRA Ticket erstellt dass einem Entwickler zugeordnet wird der das Muster noch nicht kennt oder vertiefen muss.

5. Regelmäßige Absprachen

Wichtig für die Qualität der Lösung ist aber auch das Verständnis aller Beteiligten, mit welchen Ergebnissen der Benutzer unterstützt wird, und wie dies zur Lösung des Kundenproblems beitragen soll. Nicht nur in agilen Vorgehensweisen unterstützten die Atlassian Tools Teams dabei, solche Besprechungsergebnisse in Confluence zu dokumentieren und hieraus gleich Aufgaben in JIRA zu generieren. Die sorgt für nachhaltige Umsetzung und diesbezüglich Transparenz direkt in den Protokollen.

Positive_Upwards

Diagramm 2 zeigt die Wirkung ober genannter Vorgehensweisen auf die Feedbackschleife – in diesem Fall positiv in zweifacher Hinsicht. Die genannten Punkte sorgen dafür, dass die Entwicklungseffizienz durch die Codequalität und die Verbreitung des Design und Architekturwissens im Team ansteigt.

Schlussfolgerungen

Die Minimierung technischer Schulden für eine gesamte Lösung kann und muss nicht am Stück und auf einmal erfolgen. Viel mehr muss die Kultur des oder der verantwortlichen Teams sich dahin entwickeln, kontinuierlich qualitative Verbesserungen hervorzubringen. Die ständige Verbreitung des Wissens über Sinn und Zweck der Lösung sowie der umgesetzten Schnittstellen zu Funktionsbereichen innerhalb einer geeigneten Architektur ist der Schlüssel zu einer gesunden Code Basis. So kann mit einfachen Mitteln die Entwicklungseffizienz von einer fallenden auf eine steigende Tendenz gebracht werden (Diagramm 3).

Up_and_Down_grey

Die Atlassian Tool Suite bietet hierfür eine sehr gute Grundlage und kann durch die verschiedenen, miteinander integrierten Werkzeuge die Kollaboration von Mitarbeitern und Teams fördern. Agile und klassische Vorgehensweisen werden von technischen und organisatorischen Werkzeugen unterstützt und führen so zu einer Minimierung Aufwandes zur Umsetzung der beschriebenen Methodik, zur Auflösung von Qualitätsproblemen gewachsener Software Lösungen und der Vermeidung technischer Schulden.

Wir sind Ihr Atlassian-Partner!

Sie möchten Atlassian Tools neu einführen oder besser ausschöpfen? Sie möchten sich gern mehr um ihr Geschäft kümmern anstatt um Aktualität und Aufräumen Ihrer Atlassian Landschaft? Sie möchten dass Ihre Tools auf Ihren Entwicklungsprozess angepasst werden? Mit unserer langjähriger Erfahrung unterstützen wir Sie gern bei der Einführung und beim Betrieb oder Erweiterungen Ihrer Atlassian Produkte. Sprechen Sie uns unverbindlich an.