Technologieauswahl für nachhaltige Software

Dies ist der dritte von sechs Teilen meiner Artikelserie über nachhaltige Software. Der vorige Teil findet sich hier, der erste hier.

Wie ich im vorigen Teil ausführte, sollte die Planung einer speziell entwickelten Software mit fundiertem, unabhängigen Knowhow beginnen, das idealer Weise in der Firma vorhanden ist und andernfalls unabhängig vom Lieferanten eingekauft werden sollte. Mit diesem Knowhow wird eine Grobplanung erstellt, die die Basis für die Technologie- und Lieferantinnenauswahl darstellt.

Technologie und Personal

Die Entscheidungen über Technologie und Lieferantinnen hängen zusammen, da Lieferantinnen meist auf bestimmte Technologien spezialisiert sind. Mit der Technologie wiederum entscheidet man sich für ein ganzes technologisches Ökosystem. Diese Systeme haben unterschiedliche historische Hintergründe und werden tendenziell in unterschiedlichen Bereichen eingesetzt. Es gilt also, zahlreiche Aspekte zu beachten.

Da die Entscheidung für eine bestimmte Technologie und Lieferantinnen Konsequenzen für Preis, Risiko und Nachhaltigkeit des entwickelten Produktes hat, lohnt es sich, diese Entscheidung systematisch anzugehen und Zeit und Ressourcen in den Entscheidungsfindungsprozess zu stecken.

Es kann sein, dass schon vor Projektbeginn gute Erfahrungen mit einer bestimmten Lieferantin vorliegen, und diese daher gesetzt ist. Da jedes Softwareprojekt ein erhebliches Risiko mit sich bringt, nur Kosten und keinerlei Nutzen mit sich zu bringen, hat es einen hohen Wert, eine Lieferantin zu haben, die bereits bewiesen hat, dass sie erfolgreich liefern kann, und der man vertraut. Daher kann es durchaus vernünftig sein – zumindest bei kleinen und mittleren Projekten – nicht die Technik sondern die Lieferantin an erste Stelle zu setzen. Dies kann auch zu signifikanten Einsparungen in der Vorbereitung führen – siehe im Folgenden.

Technologieauswahl

Doch da Softwareprojekte oft sehr langlebig sind, und die Wahl der Technik erhebliche Konsequenzen hat – die Kosten von Softwareprojekten entstehen im Schnitt zu mindestens 50% nicht bei der Erstellung der Software sondern in Betrieb und Wartung – sollte vor der Ausschreibung mindestens eine Vorauswahl der Technologie stehen.

Diese Auswahl berührt so viele Aspekte, dass ich hier nur ein paar allgemeine Gedanken dazu teilen kann. Für Kosten und Qualität einer Software ist es viel wichtiger, die richtigen Leute zu engagieren, als die richtige Technologie zu wählen. Aber die Wahl der Technologie führt umgekehrt dazu, dass je nach gewählter Technologie unterschiedliche Personenkreise für die Umsetzung fokussiert werden.

Zwischen Basteln und Enterprise

Das Erstellen von Software ist ein Handwerk, für das es kaum brauchbare formelle Ausbildung gibt. Die Art, wie wir Softwareprojekte umsetzen, hat sich in den letzten 50 Jahren auch so schnell gewandelt (und wandelt sich noch), dass eine solche Ausbildung nicht wirklich möglich gewesen wäre. Daher haben Softwareentwickler sehr vielfältige Hintergründe, die sich auch in der Qualität der gelieferten Software niederschlagen können.

Mit der Wahl der Technologie bevorzugt man jeweils bestimmte Personenkreise. Andererseits haben unterschiedliche Technologien unterschiedliche Strategien, den Mangel an brauchbarer Ausbildung auszugleichen. Da Entwicklerinnen und ihre Managerinnen nur eher selten das Knowhow mitbringen, wie man ein komplexes Projekt sinnvoll strukturiert und umsetzt, machen unterschiedliche Technologien hierzu unterschiedliche Vorgaben. Sie leiten Entwicklerinnen in bestimmte Richtungen.

Wenn Sie sich z.B. für Java (mit Spring) entscheiden, werden sie eher Entwicklerinnen bekommen, die Informatik studiert und Erfahrung in großen Projekten gesammelt haben. Das Informatikstudium lehrt nicht, wie man komplexe Projekte erfolgreich umsetzt. Aber es vermittelt immerhin eine systematische, analytische Herangehensweise, und die Arbeit in großen Projekten lehrt bestimmte sinnvolle Praktiken.

Dass Java-Entwicklerinnen eher Erfahrung aus großen Projekten mitbringen, liegt daran, dass Java (Spring) für solche Projekte optimiert ist. Java macht es z.B. einfach, einen kleinen Teil der Software separat zu analysieren, ohne sich um das Gesamtsystem zu kümmern. Es macht es aber viel schwerer zu verstehen, wie das Gesamtsystem funktioniert. Das ist gut, wenn sie ein sehr großes Projekt mit sehr vielen Entwicklerinnen haben. Das ist aber schlecht, wenn sie ein kleines Projekt mit wenigen Entwicklerinnen haben, die das Gesamtsystem möglichst komplett verstehen sollten.

Am anderen Ende der Skala steht PHP. Sehr viele Menschen mit ganz unterschiedlichen Hintergründen haben irgendwann gelernt, ein bisschen HTML zu schreiben. PHP macht es trivial einfach ins HTML hinein ein paar Datenbankabfragen zu schreiben und so einfache Webanwendungen zu erstellen. Daher haben PHP-Entwicklerinnen tendenziell einen weniger akademischen Hintergrund als Java-Entwicklerinnen. Sie haben auch eher Erfahrung mit kleineren und kleinsten Projekten.

Selbsternannte echte Entwicklerinnen nehmen PHP oft nicht sonderlich ernst. Es gilt als unprofessionelles Gebastel (obwohl es sich gerade in den letzten Jahren stark professionalisiert hat). Aber wenn sie ein kleines Projekt haben, für das PHP eine gute Passung hat, werden sie sehr wahrscheinlich einen Bruchteil des Java-Preises für die Umsetzung zahlen. Und wenn das Projekt “richtig” aufgesetzt wurde, werden Sie sogar ein besseres Ergebnis (langfristig günstiger zu betreiben und zu warten) erhalten als mit Java.

Zwischen PHP und Java gibt es noch ein halbes Dutzend anderer möglicher Software-Ökosysteme und innerhalb dieser Ökosysteme gibt es ganz unterschiedliche Ausprägungen. Ein Javacript Projekt, das Angular einsetzt, tendiert z.B. eher ins Java-Umfeld, wohingegen ein Javascript/React Projekt in diversen Kontexten zu finden ist.

Dabei gibt es einige Indikatoren, die eine Wahl relativ einfach machen können: wenn sie im Projekt z.B. Machine Learning einsetzen wollen, werden sie sehr wahrscheinlich auch Python einsetzen. Wenn es ein kleines Projekt ist, können Sie evtl. ganz auf Python setzen. Wenn sie eine grafische Web-Applikation eines bestimmten Typs entwickeln lassen, kommen sie kaum um Javascript herum. Es kann dann (muss aber nicht) sinnvoll sein, ganz auf Javascript zu setzen.

Da die Wahl der richtigen Technologie völlig vom umzusetzenden Projekt und seinem Umfeld abhängt, kann ich hier nur den allgemeinen Rat geben, als kleines oder mittleres Unternehmen nicht auf Technologien zu fokussieren, die für große Unternehmen optimiert sind. “Professionalität”, die mit solchen Technologien assoziiert wird, heißt vor allem auch viele Beteiligte und stark spezialisierte Rollen wie Softwarearchitektin. Tendenziell haben sie die besten Chancen auf ein gutes Preis-Leistungs-Verhältnis, wenn sie “kleine” Technologien professionell einsetzen.

Wie ein solch professioneller Einsatz “kleinerer” Technologien aussehen kann, wird im übernächsten Teil dieser Serie beschrieben. Zunächst geht es im nächsten Teil um die Auswahl einer geeigneten Lieferantin.

Leave a Reply

Your email address will not be published. Required fields are marked *