Thomas Kashofer

Thomas Kashofer

Director Consulting

Was tun, wenn die IT-Kosten explodieren? Wenn einem die Anzahl der Anwendungen über den Kopf wächst? Wenn die Stimmung und damit die Performance von Entwicklungsteams in den Keller geht? Phänomene wie diese zeigen, dass die Komplexität in der Unternehmens-IT vielfach aus dem Ruder läuft. Es wird versucht, die Komplexität hinter Frameworks, Abstraktionsebenen und technischen Konstrukten zu verstecken, doch dadurch wird sie nicht geringer. Da hilft auch keine schicke Web-Oberfläche.

Um dauerhaft eine effiziente, managebare und bezahlbare IT unterhalten zu können, braucht es eine gute Strategie für das Komplexitätsmanagement. Eine solche zu erarbeiten, umzusetzen und deren Qualität dauerhaft zu sichern, sollte eine hohe Priorität bei den IT-Verantwortlichen haben.

Wie kann es gelingen, sich auf das Wesentliche zu konzentrieren und alte Zöpfe abzuschneiden? Welche Möglichkeiten es auf den verschiedenen Ebenen gibt, werde ich im Folgenden beleuchten.

Wo steckt die Komplexität in der IT?

Als Komplexität bezeichnet mal die „Vielschichtigkeit einer Sache; d.h. das Ineinandergreifen vieler Merkmale“[1]. Komplexität ist ein schwer zu messendes Maß. Es beschreibt die Kopplung und Dynamik eines Systems. Hoch komplex sind damit Systeme, die besonders unvorhersehbar, also schwer berechenbar sind. Bezogen auf die IT betrifft dies die Anzahl und Heterogenität der System- Elemente und ihrer Beziehungen. Im Bereich der Applikationslandschaften steigt die Komplexität des Gesamtsystems mit der Zahl der Abhängigkeiten zwischen einzelnen Applikationen. Innerhalb einer Einzelanwendung wiederum führt die Verwendung von mehreren verschiedenen Programmiersprachen, Frameworks, Bibliotheken etc. zu einer erhöhten Komplexität und zu möglichen Wechselwirkungen.

Als Menschen können wir nur ein gewisses Maß an Komplexität überblicken. Auch hinsichtlich möglicher Auswirkungen auf andere technische IT-Komponenten sollte man stets bestrebt sein, die Komplexität möglichst klein zu halten.

Immer mehr Applikationen

Wer möchte mehrere hundert oder gar tausend Applikationen und deren Abhängigkeiten managen? Wahrscheinlich niemand. Dennoch findet man in größeren Organisationen oft solche Situationen vor. Dies ist meist bedingt durch verschiedene organisatorische „Silos“ und die damit einhergehende fehlende Kommunikation sowie durch die lange Lebensdauer einzelner Applikationen.

Für eine Verbesserung ist eine veränderte Organisation zwingend erforderlich. Zumindest muss sich das Selbstverständnis der einzelnen Teams ändern: hin zu einem Dienstleister für die eigenen Kolleginnen und Kollegen.

Es sollte nicht das Ziel der einzelnen Teams sein, für jeden fachlichen Prozess eine neue Anwendung zu erstellen. Vielmehr muss versucht werden, die Fachbereiche mit wenigen gut strukturierten Applikationen zu unterstützen.

Immer größere Entwicklungsteams

Wenn die Kapazität eines Entwicklungsteams nicht ausreicht, vergrößert man es und bildet Spezialistinnen und Spezialisten aus. Dies ist zwar nachvollziehbar führt in letzter Konsequenz jedoch dazu, dass man Teammitglieder hat, denen der Überblick über den gesamten Fachprozess fehlt. Das ist fatal, denn so schleichen sich Fehler ein und es ist den einzelnen Personen nicht mehr möglich, eine umfassende IT-Unterstützung zu gewährleisten. Durch die Spezialisierung wird auch gefördert, dass man sich nur auf den eigenen Bereich konzentriert.

Wenn die Teamgröße von neun Personen für einen agilen Prozess wie SCRUM überschritten wird, wäre es besser, die Themen zu teilen und ein weiteres kleines (!) Team zu bilden.

Ziel sollte nicht sein, immer größere und spezialisierte Entwicklungsteams zu schaffen. Kleinere schlagkräftige Teams, die für einen gesamten Fachprozess oder einen abgegrenzten Teil davon verantwortlich sind, haben sich in der Praxis als effizienter erwiesen.

Immer mehr Komponenten und Automatisierung in einzelnen Anwendungen

Kennen Ihre Software Developer nicht nur die aktuell benötigten Features der Frameworks, die diese einsetzen, sondern auch zumindest die wichtigsten Konzepte? Dies ist bei der Vielzahl der verfügbaren Frameworks und Bibliotheken gar nicht mehr so einfach. Es gibt welche für das Frontend von Webanwendungen (z. B. Angular, Bootstrap, jQuery, React, Rubyon Rails, Vue.js), für deren Backends (z. B. .NET, Django, Laravel, Node.js, Spring) und für mobile Anwendungen (z. B. Flutter, React Native) – und das sind nur die bekanntesten.

Frameworks sind eine tolle Sache, denn man kann dadurch standardisierten Code schreiben, der einfacher zu betreuen ist. Die Produktivität wird ebenso erhöht wie die Sicherheit der Applikation, und die Zusammenarbeit im Team wird vereinfacht. Doch wo Licht ist, ist auch Schatten. Es laufen im Hintergrund viele Automatismen ab, die man verstehen sollte, bevor man Frameworks einsetzt. Sonst kommt spätestens bei Problemen das böse Erwachen. Außerdem bringen solche Frameworks sehr viele Komponenten und somit jede Menge Abhängigkeiten mit sich. Wenn man also nur ein paar wenige Funktionen benötigt, sollte man Abstand davon nehmen, ein komplexes Framework in den Code einzubinden. Meist ist es auch mit wesentlich weniger Code möglich, die Anforderungen zu erfüllen.

Gerade bei älteren Applikationen kommt es vor, dass für die gleiche Aufgabe verschiedene technische Konzepte oder Bibliotheken für die Implementierungen verwendet wurden. Dies passiert immer dann, wenn es für eine bestimmte Problemstellung zum Zeitpunkt der Implementierung noch gar kein etabliertes Framework gab – oder wenn es später zu einem Wechsel im Entwicklungsteam kommt, wodurch andere Technologien bevorzugt werden, und man keinen kompletten Umbau auf diese neuen Technologien vornimmt. Ein solches Vorgehen sollte unter allen Umständen vermieden werden.

Ziel sollte sein, mit möglichst wenigen Komponenten und Frameworks zu arbeiten. Das macht die Entwicklung übersichtlicher und die Fehlersuche einfacher.

Fazit

In einer VUKA-Welt[2], in der vieles volatil, unsicher, komplex und ambivalent geworden ist, sollte man die Komplexität reduzieren – in dem Bereich, den man kontrollieren kann. Ein klares Konzept für die Applikationslandschaft und jede einzelne Software-Anwendung ist dafür unabdingbar. Die Verantwortlichkeiten, die Konzepte und deren Umsetzung müssen in einer knappen und für alle verständlichen Form dokumentiert werden. Dies beinhaltet auch die Gründe für die einzelnen Entscheidungen.

[1] Duden Rechtschreibung, Cornelsen Verlag GmbH (2023)
[2] https://de.wikipedia.org/wiki/VUCA

Über diesen Autor

Thomas Kashofer

Thomas Kashofer

Director Consulting

Thomas Kashofer ist Director Consulting Expert und berät als Subject Matter Expert (SME) im Bereich Digital Transformation verschiedene Großkunden. Nach 5 Jahren bei einem internationalen US IT-Beratungsunternehmen führte Thomas Kashofer 5 weitere Jahre die Software-Abteilung in einem schwäbischen IT-Systemhaus für Hochtechnologie. Seit 2012 arbeitet ...