RICHTERON brand logo
RICHTERON banner 3

Blog Beitrag

main image

Die Komplexitätsfalle: Wie überladene Softwarearchitekturen Projekte ausbremsen und Kosten in die Höhe treiben

When you have something to say, silence is a lie - and tyranny feeds on lies.

 

Hybride Softwarearchitekturen: Komplexität statt Kostenersparnis?

Große Softwareprojekte müssen oft in Module aufgeteilt werden, die von verschiedenen Teams unabhängig voneinander entwickelt werden. Diese modulare Entwicklung birgt erhebliche Herausforderungen, insbesondere wenn es um die Abstimmung und Koordination zwischen den Teams geht. Hybride Frameworks wie React Native bieten auf den ersten Blick eine Möglichkeit, diese Komplexität zu reduzieren und Kosten zu sparen, indem sie plattformübergreifende Entwicklungen ermöglichen. Doch die Realität zeigt, dass eine unsaubere Architektur häufig zu einer Komplexitätsfalle führt, anstatt die Arbeit zu erleichtern.

 

Hybride Frameworks: Mehrwert oder mehr Probleme?

React Native ist ein bekanntes hybrides Framework für die mobile App-Entwicklung, das auf React, einem der beliebtesten Web-Frameworks, basiert. Da es viele Web-Entwickler gibt, liegt der Einsatz von React Native nahe, um mobile Anwendungen für Android und iOS zu entwickeln. Doch der Umstieg von der Web- auf die mobile Entwicklung bringt erhebliche Herausforderungen mit sich. Navigation, Hardwarezugriffe und User-Interface-Anforderungen unterscheiden sich stark von denen klassischer Webanwendungen, und unerfahrene Webentwickler stoßen häufig an ihre Grenzen.

Während Webentwickler durch ihre React-Erfahrung eine vermeintlich geringe Einstiegshürde in die Welt der mobilen Entwicklung haben, sind sie oft mit den spezifischen Anforderungen mobiler Plattformen wie der Android- und iOS-Entwicklung überfordert. Themen wie das Handling von nativen Gerätefunktionen, die Erstellung mobiler Benutzeroberflächen oder die plattformübergreifende Navigation sind deutlich komplexer als im Web. Gleichzeitig haben native Entwickler für Android oder iOS durchaus die Möglichkeit, sich in React Native einzuarbeiten und diese hybride Technologie zu nutzen. Doch ein Allround-Entwickler, der sowohl tiefgehende Kenntnisse in Android, iOS, Web und React Native besitzt, ist eine extreme Seltenheit.

 

Architekturen, die hybride und native Entwicklung vermischen

Ein zentrales Problem vieler Softwareprojekte ist die inkonsistente Verwendung von Frameworks. Statt sich klar für eine Technologie zu entscheiden, entstehen hybride Architekturen, in denen native Android- und iOS-Entwicklung parallel zu hybriden Frameworks wie React Native betrieben wird. Dies führt zu einer unübersichtlichen Mischung aus Android-Code, iOS-Code, React-Native-Code und möglicherweise sogar zusätzlichem React-Code für Webanwendungen. Wenn die Architekten dann auch noch ein Team von hybriden Entwicklern dazu drängen, nicht nur für Android und iOS, sondern auch für das Web zu entwickeln, erreicht die Komplexität einen kritischen Punkt.

Das klassische Beispiel für diese Architekturproblematik zeigt sich, wenn ein Projekt mehrere Teams involviert, die hybride Module entwickeln, jedoch zusätzlich auch noch Webprojekte abdecken müssen. In einigen Fällen wird das Web-Projekt mit React umgesetzt, während andere Teams dasselbe Web-Projekt mit React-Native-Web umsetzen. Dieser "Technologie-Zoo" wird durch mangelnde Vorgaben und fehlendes technisches Verständnis auf Seiten der Entscheidungsträger weiter vergrößert. Anstatt die Entwicklung zu vereinfachen, vergrößert sich die Komplexität exponentiell, da die Entwickler nun zwischen mehreren parallelen Frameworks und Codebasen wechseln müssen.

 

Überzogene Erwartungen an hybride Entwickler

Hybride Entwickler befinden sich oft in einer äußerst schwierigen Lage: Von ihnen wird erwartet, dass sie nicht nur plattformübergreifend für Android und iOS entwickeln, sondern auch noch über Webtechnologien wie React Bescheid wissen. Diese Anforderungen übersteigen oft das, was von nativen Entwicklern erwartet wird, die sich nur auf eine Plattform konzentrieren müssen. Das führt dazu, dass hybride Entwickler in mehreren Technologien bewandert sein müssen – eine Anforderung, die in der Praxis kaum erfüllbar ist.

Ein hybrider Entwickler muss neben React Native Kenntnisse in Android, iOS und oft auch im Web haben. Gleichzeitig müssen sie die Schnittstellen zwischen den einzelnen Technologien verstehen und beherrschen, was ihre Arbeit im Vergleich zu nativen Entwicklern erheblich erschwert. Während native Entwickler sich auf spezifische mobile Plattformen spezialisieren, wird von hybriden Entwicklern eine umfassendere technische Expertise erwartet – eine Leistung, die in der Regel weder anerkannt noch angemessen vergütet wird.

 

Fehlendes Architekturverständnis und technische Expertise

Oftmals fehlt es den Entscheidungsträgern und Architekten an einem klaren technischen Verständnis der realen Herausforderungen, die mit solchen komplexen Architekturen einhergehen. Sie sehen in hybriden Frameworks wie React Native die Möglichkeit, Kosten zu sparen und mehrere Plattformen gleichzeitig zu bedienen, ohne die tatsächlichen technischen Anforderungen zu verstehen. Infolgedessen werden Entscheidungen getroffen, die die Komplexität unnötig erhöhen, anstatt sie zu verringern.

Das Fehlen klarer technischer Vorgaben führt zu einem Zustand, in dem Architekten und Management hybride und native Frameworks mischen und den Überblick verlieren. React Native soll als plattformübergreifende Lösung dienen, doch anstatt die nativen Frameworks vollständig zu ersetzen, bleibt der native Code erhalten. Es entsteht eine zusätzliche Schicht, die nicht nur die Entwicklungsarbeit erschwert, sondern auch die Kommunikation zwischen den Teams verkompliziert.

 

Versteckte Kosten und Kommunikationsaufwand

Die daraus resultierende Architektur führt zu einem erhöhten Kommunikationsaufwand zwischen den Teams. Besonders in modularen Systemen, bei denen hybride Entwickler gleichzeitig mit nativen Android- und iOS-Teams sowie Web-Teams zusammenarbeiten müssen, entsteht ein enormer Abstimmungsaufwand. Schnittstellen müssen definiert, getestet und angepasst werden, was zu Verzögerungen und erhöhten Kosten führt, die in der ursprünglichen Planung oft nicht berücksichtigt wurden.

Jeder neue Technologieschicht und jedes zusätzliche Framework vergrößert die Kommunikationshürden und führt zu erheblichen versteckten Kosten. Dies steht im Gegensatz zum eigentlichen Ziel hybrider Frameworks, die Entwicklungskosten zu senken und die Komplexität zu verringern.

 

Eine einheitliche Sprache für komplexe Projekte

Ein weiteres Problem bei der Aufteilung von Projekten auf mehrere Teams ist die fehlende Konsistenz in der Codequalität. Unterschiedliche Teams haben oft unterschiedliche Entwicklungsrichtlinien, was langfristig zu einem inkonsistenten Code führt. Um dies zu verhindern, ist es entscheidend, von Anfang an klare Richtlinien, wie Code-Guidelines und Qualitätssicherungsmaßnahmen wie Linter und Code-Formatter, festzulegen. Eine einheitliche Sprache über alle Teams hinweg ermöglicht es, dass Module problemlos zwischen Teams übergeben werden können, ohne dass eine aufwändige Einarbeitung in völlig unterschiedliche Programmierstile notwendig ist.

 

Frust und hohe Fluktuation unter den Entwicklern

Die zunehmende Komplexität solcher Projekte führt häufig zu Frustration unter den Entwicklern. Hybride Entwickler, die sich mit einem überladenen Technologie-Stack auseinandersetzen müssen, erleben eine deutlich höhere Arbeitsbelastung als ihre Kollegen, die sich nur auf native Plattformen konzentrieren. Dies wird nicht nur in der Planung und Kommunikation unterschätzt, sondern oft auch finanziell nicht angemessen berücksichtigt.

Durch den fehlenden Fokus auf die tatsächlichen Anforderungen und das Übersehen der technischen Hürden steigt die Frustration unter den Entwicklern. Dies führt zu einer erhöhten Fluktuation, da erfahrene Entwickler das Projekt verlassen und neue Mitarbeiter mit einer kaum durchdringbaren Codebasis konfrontiert werden. Der gesamte Prozess wird dadurch verlangsamt, was langfristig die Entwicklungskosten weiter erhöht.

 

Fazit: Ein klarer Fokus auf Reduktion und Konsistenz

Um die Probleme solcher hybrider Architekturen zu vermeiden, müssen Architekten und Entscheidungsträger ein tiefes Verständnis für die technischen Herausforderungen der mobilen und hybriden Entwicklung entwickeln. Ein klarer Fokus auf die Vereinfachung der Architektur, die Eliminierung unnötiger nativer Codebasen und die Vermeidung eines "Technologie-Zoos" sind essenziell, um die Komplexität zu reduzieren.

Eine einheitliche Sprache durch Code-Guidelines und Qualitätssicherungsmaßnahmen wie Linter, Typprüfungen oder Code-Formatierer sowie die Vorgabe für jedes Team, eine einheitliche Plattform für ihre CI/CD-Pipelines zu verwenden, sollten bereits zu Beginn eines Projekts festgelegt werden, um Inkonsistenzen, Fehleranfälligkeit und Kommunikationsprobleme zu verhindern. Durch diese standardisierten Vorgaben wird sichergestellt, dass alle Teams auf derselben Basis arbeiten, was die Integration und Wartung der Software erheblich erleichtert und die Effizienz der gesamten Entwicklungsarbeit verbessert.

Hybride Entwickler dürfen nicht als Allround-Talente betrachtet werden, die mehrere Plattformen und Technologien gleichzeitig abdecken müssen. Sie benötigen klare Vorgaben und Unterstützung, um ihre Arbeit effizient zu erledigen. Anstatt die Komplexität weiter zu steigern, sollten hybride Frameworks konsequent als Ersatz für native Lösungen eingesetzt werden – und nicht als zusätzliche Schicht, die das Projekt weiter verkompliziert.

Ein bewusster, gut durchdachter Einsatz von hybriden Frameworks kann tatsächlich zu einer Vereinfachung der Entwicklung führen. Doch ohne klare Architekturprinzipien, ein realistisches Verständnis der technischen Anforderungen und angemessene Wertschätzung der hybriden Entwickler wird das Potenzial solcher Frameworks oft ins Gegenteil verkehrt.