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.