This article is also available in English
Dieser Artikel ist zuerst in unserem INNOQ Technology Briefing zum Thema Legacy-Modernisierung erschienen.
Entwickler:innen, die schon lange an Bestandssystemen arbeiten, stellen oft die Sinnfrage und ob sie nicht etwas grundlegend falsch machen. Warum können sie nicht in einem top modernen Umfeld unterwegs sein, wie es die Welt da draußen vermittelt? Insbesondere Mitarbeiter:innen, die die Softwarearchitekturrolle eingenommen haben, stehen hier ständig im Spannungsfeld „Änderungsdruck vs. Stabilität“. Wie können Führungskräfte ihren Mitarbeiter:innen mehr Orientierung bei Arbeiten an Bestandssystemen geben und damit mehr Selbstvertrauen in den Entwicklungsteams schaffen?
Mein Rat: Akzeptiere die Realität! Fast 80 % der Softwareentwicklung besteht aus Arbeiten an bestehenden Systemen [1]. Dies bedeutet, dass nur die allerwenigsten Softwareschaffenden die ersten Steine einer neuen Softwarelösung legen. Dennoch sind gefühlt über 80 % der Inhalte in der Fachwelt an Neuentwicklungen ausgerichtet. Um diese anscheinend existierende Widersprüchlichkeit aufzulösen, ist es überfällig, eine neue Rolle bei der Weiterentwicklung von Softwaresystemen auf Architekturebene einzuführen: den Evolutionisten.
Die Rolle des Evolutionisten fokussiert sich auf die Weiterentwicklung bestehender Systeme. Sie hat andere Aufgaben als die Rolle „Softwarearchitekt:in“, mit einem anderen Skill- und Mindset, welches hilft, mit großen und langlebigen Softwaresystemen technisch und auch mental zurechtzukommen.
Typische Aufgaben sind etwa:
Wissen absichern: Nachdokumentieren wichtiger Systemelemente und den hier zugrundeliegenden Architekturentscheidungen, um die Verständlichkeit des Bestandssystems zu erhalten und Verständnis für die aktuelle Situation bei allen Mitentwickelnden herzustellen.
Transparenz schaffen: Vermittlung der aktuellen eingegangenen Risiken und technischen Schulden, um diese mit dem von der Geschäftsseite festgelegten Risikoappetit abzugleichen.
Problemursachen beheben: Tiefergehende Analyse von systemischen Problemen im bestehenden Softwaresystem, um daraufhin gravierende Blocker für eine weitere Entwicklung zu lösen.
Verbesserungen kommunizieren: Kommunikation der aktuellen Verbesserungsarbeiten an Produktverantwortliche, um auch wenig nach außen sichtbare, aber wertvolle Weiterentwicklungen nachvollziehbar zu machen.
Innovation managen: Neue Ideen im Kontext des Bestandssystems auf ihre Potenziale bewerten, um zu zeigen, dass bestimmte Innovationen wahrgenommen werden, andererseits aber auch, auch um Verständnis zu schaffen, wenn eine neue Innovation gerade nicht zu der aktuellen Situation passt.
Ein Evolutionist ist sich der Verantwortung für ein erfolgreiches, bestehendes System bewusst und zielt auf eine unaufgeregte Software ab, um eine kontinuierliche Weiterentwicklung zu gewährleisten. Sie ist der Sparringspartner bei vermeintlichen Widersprüchlichkeiten, starken Unsicherheiten und der scheinbar nicht zu beherrschenden Komplexitäten in einem sich ständig ändernden Umfeld. Neben Hard Skills in technischen Belangen erfordert die Rolle ein hohes Maß an Soft Skills wie Kommunikation, Empathie, Beharrlichkeit und strategischem Denken, um sowohl auf Ebene der Entwicklung als auch des Managements vermitteln zu können.
Was kannst du tun, um die Rolle auch bei dir zu stärken?
Finde vorhandene Evolutionist:innen in deinen Teams! Halte vor allem Ausschau nach den vermeintlich Unsichtbaren. Typische Evolutionist:innen arbeiten meist an indirekt sichtbaren Verbesserungen vorhandener, halb garer Implementierungen, um die innere Qualität eines Softwaresystems aufrechtzuerhalten.
Die sind die Ersten, die Softwarearchitekturen strukturieren und dokumentieren, damit es andere einfacher haben, die Software zu verstehen. Es sind die Leute, die sich um viele kleine Brandherde gleichzeitig kümmern, um die Software betriebsfähig zu halten. Es sind die Leute, welche sich auch um andere Entwickelnde im Team kümmern und Zuversicht spenden, wenn es neue Herausforderungen zu meistern gilt, die auf den ersten Blick nicht zu bewältigen scheinen.
Genauso wie du Softwarearchitekt:innen in der Anfangsphase von langlebigen Softwaresystemen benötigst, brauchst du Menschen, die sich gezielt um die weitere Evolution des Systems kümmern. Stärke daher die Rolle des Evolutionisten in deinen Teams und gehe damit in die nächste Stufe der Softwareevolution. Sorge für eine bessere Sichtbarkeit, Orientierung und Wertschätzung deiner Arbeiten, indem du deine Evolutionist:innen mit notwendigem Methodenwissen, wertschöpfenden Aufgaben und klaren Zielen ausstattest, um den zukünftigen Erfolg deiner Software abzusichern.
-
Capers Jones, The Economics of Software Maintenance in the Twenty First Century, 2006 ↩
Mehr zum Thema Softwarearchitekturen? Wir bieten ein 3-Tages-Training an.