Entwicklerökosystem
Einordnung
Die Auswahl von Programmiersprachen und Technologien darf sich nicht nur an technischen Eigenschaften orientieren.
Für langfristige Systeme ist ebenso wichtig, wie groß und stabil das umgebende Entwicklerökosystem ist.
Das Entwicklerökosystem umfasst unter anderem:
- die Größe der Entwicklergemeinschaft
- die Verfügbarkeit von Entwicklern
- vorhandene Ausbildungsstrukturen
- langfristige Stabilität der Technologie
- verfügbare Bibliotheken und Werkzeuge
Gerade für langfristige Fachsysteme im Behördenumfeld ist ein stabiles Ökosystem von entscheidender Bedeutung.
Bedeutung für langfristige Systeme
Da die Einsatzsoftware über viele Jahre weiterentwickelt werden muss, ist davon auszugehen, dass viele zukünftige Entwickler nicht an der ursprünglichen Entwicklung beteiligt sein werden.
Neue Entwickler müssen daher:
- die verwendeten Technologien bereits kennen oder
- sie schnell erlernen können.
Je größer und verbreiteter eine Technologie ist, desto einfacher wird es, neue Entwickler zu gewinnen.
Ein kleines oder sehr spezialisiertes Ökosystem kann langfristig ein erhebliches Risiko darstellen.
Größe der Entwicklergemeinschaft
Eine große Entwicklergemeinschaft bietet mehrere Vorteile:
- viele verfügbare Entwickler auf dem Arbeitsmarkt
- große Anzahl vorhandener Bibliotheken
- umfangreiche Dokumentation
- viele Lernressourcen
Außerdem steigt mit der Größe der Community die Wahrscheinlichkeit, dass Probleme bereits von anderen gelöst wurden.
Dies reduziert Entwicklungs- und Wartungsaufwand erheblich.
Verfügbarkeit von Entwicklern
Für langfristige Systeme ist entscheidend, dass auch viele Jahre nach der Einführung noch ausreichend Entwickler mit den verwendeten Technologien verfügbar sind.
Dies betrifft sowohl:
- hauptamtliche Entwickler
- ehrenamtliche Entwickler
Technologien mit sehr kleiner Entwicklerbasis können langfristig zu Engpässen führen.
Ausbildung und Nachwuchs
Die Ausbildung neuer Entwickler spielt ebenfalls eine wichtige Rolle.
Technologien, die häufig in Ausbildung, Studium oder Weiterbildung verwendet werden, haben mehrere Vorteile:
- neue Entwickler können schneller einsteigen
- Lernmaterialien sind weit verbreitet
- viele Entwickler besitzen bereits Vorkenntnisse
Dies erleichtert langfristig sowohl die Wartung als auch die Weiterentwicklung.
Bibliotheken und Werkzeuge
Ein stabiles Entwicklerökosystem umfasst auch eine große Zahl verfügbarer Bibliotheken und Werkzeuge.
Dazu gehören beispielsweise:
- Frameworks
- Datenbankbibliotheken
- Testwerkzeuge
- Entwicklungswerkzeuge
- Dokumentationssysteme
Eine breite Werkzeuglandschaft reduziert den Aufwand für die Eigenentwicklung grundlegender Funktionen.
Dokumentation und Wissensbasis
Ein weiteres wichtiges Element eines starken Ökosystems ist die Verfügbarkeit von Wissen.
Dazu gehören beispielsweise:
- offizielle Dokumentation
- Fachliteratur
- Tutorials
- Diskussionsforen
- Beispielprojekte
Je umfangreicher diese Wissensbasis ist, desto einfacher können Entwickler Probleme lösen und neue Funktionen implementieren.
Bedeutung für ehrenamtliche Entwickler
Die Beteiligung ehrenamtlicher Entwickler stellt besondere Anforderungen an die Wahl von Technologien.
Typische Eigenschaften ehrenamtlicher Mitarbeit sind:
- begrenzte Zeitressourcen
- unterschiedliche Erfahrungsniveaus
- wechselnde Beteiligung über die Jahre
Technologien sollten daher möglichst:
- leicht zugänglich sein
- gut dokumentiert sein
- weit verbreitet sein
Dies erleichtert es neuen Mitwirkenden, sich in das Projekt einzuarbeiten.
Risiko kleiner Ökosysteme
Technologien mit sehr kleinen Entwicklergemeinschaften können mehrere Risiken mit sich bringen.
Dazu gehören beispielsweise:
- geringe Verfügbarkeit von Entwicklern
- eingeschränkte Auswahl an Bibliotheken
- wenig Dokumentation
- Abhängigkeit von einzelnen Maintainern
Solche Risiken können bei langfristigen Projekten erhebliche Probleme verursachen.
Konsequenzen für Technologieentscheidungen
Bei der Auswahl von Programmiersprachen und Frameworks sollten daher neben technischen Eigenschaften auch folgende Faktoren berücksichtigt werden:
- Größe der Entwicklergemeinschaft
- langfristige Stabilität
- Ausbildungsrelevanz
- verfügbare Bibliotheken
- Dokumentationsqualität
Technologien mit einem großen und stabilen Ökosystem bieten langfristig deutlich bessere Voraussetzungen für Wartung, Weiterentwicklung und Betrieb.
Zusammenfassung
Für langfristige Fachsysteme ist das Entwicklerökosystem ein entscheidender Faktor.
Die Einsatzsoftware sollte daher auf Technologien basieren, die:
- eine große Entwicklergemeinschaft besitzen
- langfristig stabil sind
- gut dokumentiert sind
- weit verbreitet in Ausbildung und Praxis sind
Diese Kriterien sind bei späteren Entscheidungen über Programmiersprachen, Frameworks und Architekturen zu berücksichtigen.
