Software ist allgegenwärtig. In nahezu allen Bereichen des täglichen Lebens kommen wir mit Software in Berührung. Software ist eine erhebliche, wenn nicht die entscheidende Komponente zeitgemäßer Unternehmungen und Geschäftsmodelle. Softwareentwickler nehmen in dieser Zeit eine wichtige Rolle wahr. Moderne Vorgehensweisen und Ansätze geben Teams von Softwareentwicklern zunehmend mehr Verantwortung und Entscheidungsspielraum. Betrachtet man beide Entwicklungen gemeinsam, ergibt sich ein Bild, das Stephen O'Grady in seinem Buch als „The New Kingmakers” bezeichnet. Die neue Verantwortung bietet Softwareentwicklern ungeahnte Möglichkeiten, die Zukunft zu gestalten. Und genau das ist mein Stichwort: Zukunft.
Zukunft bedeutet auch Klimawandel
Wer über die Zukunft nachdenkt, kann ein zentrales Thema nicht ignorieren: die globale Klimaerwärmung. Sie wird einen erheblichen Einfluss auf unser Leben – und das zukünftiger Generationen – haben. Und die Zeit, die Klimaerwärmung zu stoppen, wird knapp. Es ist also mehr als wichtig, jetzt zu handeln. Die vielfältigen Möglichkeiten, die Softwareentwickler heute haben, die Zukunft zu gestalten, bieten ihnen eine riesige Chance, einen bemerkenswerten Beitrag zur Rettung des Klimas zu leisten. Wir sollten diese Chance wahrnehmen.
Doch was bedeutet das konkret? Wie können Softwareentwickler etwas bewirken?
Der erste Schritt: die Ursachenanalyse
Ein zentrales Element der Klimaerwärmung ist die Emission sogenannter Treibhausgase. Zu ihnen zählen unter anderem Kohlenstoffdioxid (CO2), Methan (CH4), und Distickstoffoxid (Lachgas, N2O). Die wichtigste Komponente ist das Kohlenstoffdioxid, mit einem Löwenanteil von knapp 75 Prozent. Deshalb steht es im Zentrum vieler Bemühungen im Kampf gegen den Klimawandel, den Ausstoß von CO2 in die Atmosphäre zu reduzieren beziehungsweise komplett zu beseitigen.
Es stellt sich die Frage, welche Rolle Software und deren Entwicklung bei der Emission von CO2 spielt, wie wir etwas daran verändern können und welche Skalierungseffekte von Software wir uns zunutze machen können.
Die Rolle von Software und Softwareentwicklung
Es gibt vielfältige Sichtweisen auf diesen Punkt und viele Aspekte, die im Detail zu berücksichtigen und zu betrachten sind. Bevor ich jedoch die Details diskutiere, ist es mir wichtig klarzustellen, wie vielfältig die Frage nach der CO2-Reduzierung ist und wie viele unterschiedliche Sichtweisen und Aspekte überhaupt existieren. Dazu möchte ich drei Bereiche in den Fokus rücken:
Bereich 1: Das Business hinter der Software
Zunächst stellt sich die Frage nach dem Effekt der Software selbst. Was bewirkt sie und wie können Entwickler ihre Wirkung so gestalten, dass sie hilft, CO2-Emissionen zu verhindern? Hier geht es weniger um die technischen Details der Entwicklung von Software oder deren Betrieb, das Laufzeitverhalten oder ihren Energieverbrauch als vielmehr darum abzuschätzen, welchen Effekt die Software haben wird. Wird sie vielleicht dazu führen, dass deutlich mehr CO2-Emissionen entstehen? Sorgt ein neues Online-Angebot vielleicht für ein erhöhtes Verkehrsaufkommen im Logistikbereich? Und wenn ja, in welchem Ausmaß? Oder führt ein Geschäftsmodell dazu, dass weniger CO2-Emissionen entstehen?
Eine zentrale Frage könnte sein: Wie können es Entwickler schaffen, die Reduktion von CO2-Emissionen direkt mit dem Erfolg ihres Produkts zu verknüpfen? Das würde dazu führen, dass ein größerer Erfolg der Software (z. B. höhere Verkaufszahlen) mit einer erhöhten Reduktion der CO2-Emissionen einhergeht.
Wir müssen uns diesen Fragen stellen und sie explizit zu einem elementaren Bestandteil unserer Überlegungen machen. In der agilen Softwareentwicklung ist die Frage nach dem „Wert für den Kunden” eine der zentralen Fragestellungen. Die Auswirkungen auf die CO2-Emissionen sollte ebenfalls zu einer zentralen Frage werden. Sie kann sogar zu völlig neuen Produkten und Geschäftsmodellen führen.
Bereich 2: Die Entwicklung von Software
Daneben gilt es, den Prozess der eigentlichen Softwareentwicklung zu betrachten. Wodurch entstehen in diesem Bereich CO2-Emissionen? Wie schaut es mit der eingesetzten Hardware aus, wie wurde sie produziert? Wann ergibt es aus CO2-Emissionssicht Sinn, diese Hardware zu erneuern? Aus welcher Quelle beziehen wir die Energie, mit der wir unsere Hardware und Software betreiben (sowohl im Büro als auch im Homeoffice oder in der Cloud)? Wie gelangen wir jeden Tag ins Büro? Welche Verkehrsmittel verwenden wir? Und wie wird das Büro mit Energie versorgt, zum Beispiel für Wärme, Kühlung und Strom? Wie gestalten wir berufliche Reisen, vor allem welche Verkehrsmittel verwenden wir dazu? Was bedeutet es aus CO2-Emissionssicht, eine Videokonferenz zu veranstalten, statt zum Kunden zu reisen? Und wie verändert sich die CO2-Bilanz einer Konferenz, wenn sie sich ausschließlich (oder zusätzlich) online besuchen lässt? Wir müssen uns diesen Fragen widmen – nur einen Teil dieses Bereichs zu optimieren, greift zu kurz und lässt viele Möglichkeiten ungenutzt.
Bereich 3: Die Software im Einsatz
Wir dürfen die Software selbst nicht vergessen. Welches Maß an CO2-Emissionen verursacht die entwickelte Software im Betrieb? Wie können wir die Menge an CO2 so klein wie möglich halten oder gar vollständig beseitigen? Auch dieser Punkt umfasst viele Bereiche, die wir uns ansehen sollten. Beispiele hierfür sind: In welchem Rechenzentrum betreibe ich die Software und wie unterscheiden sich Rechenzentren in Bezug auf die CO2-Emissionen, auch jede in der Public Cloud? Wie kann ich Software so gestalten, dass CO2-Emissionen verringert werden? Was bedeutet CPU- und Speichernutzung hinsichtlich Emissionen?
Auf YouTube findet sich unter https://www.youtube.com/watch?v=-jeFgZosw23o ein Podcast, in dem Stefan Roock von it-agile zu Gast bei Boris Gloger ist und beide über Klimarettung sprechen.
Konsequentes Handeln erforderlich
Alle diese Bereiche müssen konsequent und vollständig dekarbonisiert (https://de.wikipedia.org/wiki/Dekarbonisierung) werden. Wir müssen in sie hineinsehen, analysieren, wo und wie CO2-Emissionen entstehen, und diese konsequent beseitigen. Es reicht nicht, darauf zu warten, dass andere diese Probleme lösen. Es reicht nicht abzuwarten, bis wir beispielsweise alles nur noch auf Basis erneuerbarer Energien betreiben können.
Die Eingangsfrage danach, was Softwareentwickler tun können, ist demnach vielschichtig. Bis jetzt habe ich mehr Fragen aufgeworfen als beantwortet. In den folgenden Teilen dieser Kolumne werde ich mich den genannten Bereichen detaillierter zuwenden, meine Gedanken zu ihnen teilen und beschreiben, was ich bisher herausgefunden habe. Ich werde sicherlich nicht alle Fragen beantworten können. Aber vielleicht kann ich zu weiterem Nachdenken anregen. Letztlich sind wir alle dazu aufgerufen, aktiv zu werden, um die beschriebene Herausforderung zu bewältigen.
Und ich bin sicher, dass der Ressourcenbedarf einer Software eine wichtige Produkteigenschaft werden wird, anhand derer wir entscheiden werden, welche Software wir einsetzen und welche nicht.
Alan Kay hat einmal gesagt: "The best way to predict the future is to invent it." Auf geht's!
* Der „Aufruf” vom April 2021 ist ein Nachdruck des ersten Teils einer neuen Kolumne zu „Sustainability im Software Engineering” bei heise Developer, die wir auch hier nachdrucken. Siehe: https://www.heise.de/hintergrund/Sustainability-im-Software-Engineering-Teil-1-ein-Aufruf-6011723.html?-seite=all