Innovation und Nachhaltigkeit bei der Technologiewahl

"In The Code" Beitrag von unserem CTO

Neue Softwareprojekte bringen Chancen aber auch Gefahren mit sich. Auf welche Technologie soll man setzen? Unser CTO Corsin Decurtins teilt seine Erfahrungen in einem Artikel der inside-it.ch-Serie "In the Code" vom 5. Juli 2019.

Alle paar Jahre gibt es in der Karriere eines Softwareentwicklers einen ganz besonderen Tag. Ein wunderbarer Tag wie aus einem Traum. Ein Tag an dem Weihnachten, Ostern und gleich zwei Geburtstage zusammenfallen: Der Start eines nigelnagelneuen Softwareprojektes. Kein Legacy-Code, keine Altlasten, keine vermurksten Architekturen, keine Technologien aus den 80er Jahren … einfach nur ein leeres Code-Repository und der Auftrag, die Welt zu verbessern.

Endlich können wir von vorne beginnen und alles richtig machen. Gut strukturierter und dokumentierter Code, hohe Testabdeckung, vollautomatisierte Integrationspipeline mit kontinuierlichem Deployment in alle Test- und Produktionsumgebungen. Natürlich basierend auf den neuesten Technologien. Microservices, Event Sourcing, Streaming, Docker, Serverless, Kafka, das Javascript-Framework der Stunde, die neueste, trendigste Programmiersprache, Künstliche Intelligenz, Blockchain, etc. … und selbstverständlich alles in der Cloud. Für Entwickler ist dieser Tag wie damals in unserer Kindheit, als wir mit der unvorstellbaren Summe von CHF 2.- am Kiosk vor den Süsswaren standen.

Erfahrene Entwicklerinnen wissen allerdings, dass solche Tage auch Gefahren mit sich bringen. Auch sie freuen sich auf die Gelegenheit von vorne zu beginnen und dieses Mal endlich alles richtig zu machen. Sie wissen aber auch, dass die Wahl von Technologien, Konzepten und Werkzeugen heikel ist und man es sehr schnell übertreiben kann.

Innovation in neuen Softwareprojekten ist essenziell. Wenn wir schon von vorne beginnen, wollen wir auch aktuelle Technologien einsetzen und nicht Werkzeuge und Technologien, die schon nach kurzer Zeit veraltet und nicht mehr wartbar sind. Neue Technologien und Werkzeuge sind attraktiv und versprechen das Blaue vom Himmel. In vielen Fällen lösen sie diese Versprechen aber nicht ein und bringen viel neue Komplexität in die Systeme und Teams. Neue Technologien und Werkzeuge haben eine nicht zu unterschätzende Lernkurve. Es besteht die Gefahr, dass Teams mit zu vielen neuen Themen überfordert werden. Neue Technologien werden falsch oder suboptimal eingesetzt und wir haben nach kurzer Zeit bereits wieder technische Schulden in unserem Code.

Konservative Technologieentscheidungen können durchaus eine Option sein. Entwicklungsteams haben viel Erfahrungen damit, kennen die Stärken und Schwächen der Technologien und haben alle möglichen Fehler in der Vergangenheit ziemlich sicher bereits einmal gemacht.

Neben der Innovation ist Nachhaltigkeit ein wichtiges Kriterium bei der Technologiewahl. Wie sieht unser Softwareprojekt in 5 Jahren aus? In 10 Jahren, 20 Jahren? Haben sich die gewählten Technologien bewährt? Sind sie immer noch aktuell oder heillos veraltet? Werden sie noch aktiv unterstützt und weiterentwickelt? Finden wir noch Entwickler, die sich mit den Technologien auskennen und bereit sind, damit zu arbeiten? Oder haben wir uns auf ein Abstellgleis manövriert wo wir zusehen müssen, wie der Rest der Softwarewelt an uns vorbeizieht? Gerade im Enterprise-Umfeld sind Zyklen von 10 oder 20 Jahren für Softwarelösungen absolut keine Seltenheit.

Die meisten Softwareteams und Auftraggeber kennen die Situation, dass eine Technologie nicht mehr unterstützt wird und deshalb aufwändige Migrationen und Umstellungen notwendig sind, bis hin zu kompletten Ablösungen, die keinerlei Businessnutzen für die Auftraggeber und Benutzer der Software bringen. Solche Situationen sind für IT-Teams sehr mühsam, weil die Aufwände kaum den Auftraggebern zu erklären sind.

Die Wahl von Technologien und Werkzeugen für ein neues Softwareprojekt ist eine Art Wette. Die Kunst ist es, auf die richtigen Pferde zu setzen. Wenn sie aufs falsche Pferd setzen, verlieren sie und sind mit teuren Migrationen und Refactorings konfrontiert, oder müssen ein Softwareprodukt sogar komplett abschreiben und ersetzen.

Wie wählt man nun aber das richtige Pferd aus? Technologien und Werkzeuge die gut etabliert sind und mit denen wir bereits positive Erfahrungen gemacht, sind ein guter Startpunkt. Wenn wir aber bereits gute Erfahrungen über eine längere Zeit gemacht haben, sind es sicher nicht mehr die neuesten Technologien. Es besteht also die Gefahr, dass wir auf Technologien setzen, die bereits wieder auf dem absteigenden Ast sind und in der nahen Zukunft nicht mehr unterstützt werden. Neue Technologien haben dieses Problem nicht. Allerdings ist dort in der Regel nicht klar, welche Technologien sich am Ende durchsetzen und welche schon nach kurzer Zeit aufgegeben werden.

Wer hinter einer neuen Technologie steckt und wer die Anwender davon sind, ist ein wichtiges Entscheidungskriterium. Wird eine Technologie von einem einzelnen Entwickler gepflegt oder steckt eine grosse Organisation dahinter? Ist es ein Softwareunternehmen, eine kleine oder grosse Firma, eine Firma wie Microsoft, Oracle, IBM oder eher Firmen wie Facebook, Twitter, Linkedin, Apple, Google oder Netflix. Bei allen Varianten gibt es Chancen und Risiken.

Firmen wie Google, Facebook, Netflix etc. stehen als Produzenten und Anwender hinter vielen grossartigen Technologien. Sie setzen die Technologien selber ein und die Qualität ist deshalb in der Regel sehr gut. Aber Software ist für sie in erster Linie Mittel zum Zweck. Wenn eine Technologie für sie nicht mehr relevant ist, stellen sie die Unterstützung dafür häufig relativ schnell, ohne grosse Vorwarnung und ohne Rücksicht auf die Anwender ein.

Oracle, Microsoft, IBM, SAP und ähnliche Softwarehersteller sind da sehr viel zuverlässiger. Allerdings ist man diesen Firmen auch sehr viel stärker ausgeliefert, wenn es um Lizenzbedingungen und Preismodelle geht. Ohne dass ein Mehrwert für die Auftraggeber entsteht, ist ein Werkzeug oder eine Bibliothek plötzlich massiv teurer oder eine Migration auf eine günstigere Technologie muss gemacht werden, welches auch wieder Aufwände und Kosten mit sich bringt.

Für erfolgreiche, innovative und nachhaltige Softwareprojekte braucht es ein bewusstes Technologiemanagement und eine gute Balance zwischen Innovation und konservativen Entscheidungen. Die Technologiewahl muss auf das konkrete Vorhaben angepasst sein. Innovative Technologien machen mehr Sinn bei Softwareprodukten die eher kurzlebig sind oder die sowieso kontinuierlich angepasst und weiterentwickelt werden. Bei langlebigen Softwareprodukten und Lösungen, die über längere Zeit ohne grosse inhaltliche Anpassungen im Einsatz bleiben sollen, empfiehlt sich eher eine konservative Technologiewahl.

Am Ende ist die Technologiewahl aber immer zu einem gewissen Anteil ein Glücksspiel. Eine Patentlösung oder Zauberformel gibt es nicht. Einzig die Erfahrung und  Intuition von Softwareteams können helfen, in diesem Spiel die Nase vorne zu haben und innovative und nachhaltige Softwarelösungen zu produzieren.

Publiziert am 5. Juli 2019 auf inside-it.ch.


Über den Autor

Corsin Decurtins ist Chief Technology Officer bei Netcetera. Er ist zuständig für Technologiestrategie und Entwicklungsmethoden, berät Kunden und interne Teams und arbeitet als Softwarearchitekt und technischer Projektleiter. Corsin Decurtins hat an der ETH Zürich Informatik studiert und als Forschungsassistent gearbeitet.

Sprechen Sie mit dem Experten

Weitere Stories

Zu diesem Thema

MEHR STORIES