Nachhaltige Software-Entwicklung
In unserer heutigen Zeit, da wir auf einem brennenden Planeten leben, sollte nichts, was wir tun, ohne Umweltbewusstsein und nachhaltiges Denken sein. Dies gilt insbesondere für die Software-Entwicklung: Denn wie jede andere unserer menschlichen Aktivitäten hat die Erstellung und Nutzung von Software und den Geräten, auf denen sie betrieben wird, einen enormen Einfluss auf die Welt, in der wir leben – tatsächlich emittiert der IT-Sektor mehr Treibhausgase als die gesamte Luftfahrtindustrie (opens new window). Aber im Gegensatz zu vielen anderen unserer Aktivitäten gibt es im Grunde kein Bewusstsein für die Umweltauswirkungen unseres digitalen Lebens.
Für viele Menschen ist es wahrscheinlich eher umgekehrt: Da wir unsere Nachrichten auf dem Handy lesen, anstatt Papier zu verwenden, denken wir, dass das automatisch "grüner" ist. Die schlechte Nachricht: Das ist es nicht. Die gute Nachricht: das könnte es sein! Und genau da kommst du ins Spiel: Als Entwickler erstellst du Software, die Tausende oder sogar Millionen von Malen ausgeführt werden könnte. Daher können selbst sehr kleine Dinge, die du tust, einen enormen Einfluss auf die Welt als Ganzes haben.
Nachhaltigkeit ist eine Einstellung
Der Code der am Besten für unsere Umwelt ist, ist der der niemals geschrieben oder ausgeführt wird (zumindest bis unser Strom nicht auf Kosten unseres Planeten produziert wird). Natürlich müssen und wollen wir trotzdem Code schreiben, aber um das Maximum für unseren Planeten herauszuholen, sollten wir so wenig wie möglich davon schreiben – der so effizient wie möglich laufen sollte. Daher beginnt eine nachhaltige Software-Entwicklung schon lange bevor wir tatsächlich mit dem Schreiben von Code beginnen. Es ist vielmehr eine Denkweise, die bei jedem Projekt so früh wie möglich angewendet werden sollte.
Und die gute Nachricht: Nachhaltige Entwicklung bedeutet keine zusätzliche Arbeit, die man nebenbei erledigen muss, sondern eine Art zu denken, zu entwerfen und zu entwickeln, um mit weniger mehr zu erreichen. Nachhaltige Software-Entwicklung wird nicht nur die Auswirkungen deiner Software auf die Umwelt reduzieren, sie wird ...
- deine Produktivität steigern
- die Wartbarkeit verbessern
- die Kosten für Entwicklung und Hosting zu senken
- Verbesserung der Leistung und damit auch Conversions and Sales (opens new window)
Es ist kein Zufall, dass diese Argumente wie ein Verkaufsgespräch klingen: Nachhaltige Entwicklung ist etwas, das wir unseren Kunden, Designern und Managern verkaufen können und sollten.
Wie entwickeln wir nachhaltig?
Was wir mit der nachhaltigen Entwicklung erreichen wollen, ist die Reduzierung des Energieverbrauchs unserer Software auf ein Minimum. Wir wollen so wenig CPU-Zeit, Speicher, Speicherplatz, Lese- und Schreiboperationen und Netzwerkpakete wie möglich verbrauchen. Es gibt kein Allheilmittel, um dieses Ziel zu erreichen: Manchmal könnte es sinnvoll sein, den Code zu optimieren, um die verwendeten Ressourcen zu verringern. In anderen Fällen kann es sinnvoll sein, Wege zu finden, um sicherzustellen, dass der Code gar nicht erst ausgeführt wird.
Deshalb ist nachhaltige Software-Entwicklung eine Art zu denken und sich selbst und seine Arbeit in Frage zu stellen: Ist dies die effizienteste Lösung, die wir uns vorstellen können? Haben wir über den Tellerrand hinaus gedacht und versucht, das Problem ohne Code zu lösen? Lösen wir das Problem unserer Benutzer oder lösen wir das Problem unseres Managements? Ist dies eine Lösung, von der wir Freunden erzählen werden, weil wir stolz darauf sind?
Ein paar praktische Tipps
Einige der folgenden Beispiele gelten nur für die Webentwicklung, aber es sollen ja auch nur Beispiele sein und zur Inspiration dienen. Es geht darum, die Rechenzeit und den Netzwerkverkehr zu reduzieren. Es gibt viele Möglichkeiten, das zu erreichen.
- Leistung ist alles: Dein Code sollte auf Leistung getestet und einem Benchmarking unterzogen werden.
- Dark Mode: Moderne OLED-Displays verbrauchen nur ein Sechstel der Energie im Dark Mode
- Minimize CI runs: Muss dein Build-Server bei jedem Commit laufen? Wie wäre es stattdessen diese mit Git-Tags auszulösen?
- Installiere Updates: normalerweise verbessern neuere Software-Versionen die Leistung, also aktualisieren Sie regelmäßig Frameworks, Abhängigkeiten, Server-Software etc.
- Suchmaschinen-Optimierung: Denke an SEO, damit Benutzer schneller finden, was sie suchen
- Caching: Setze Caching so viel wie möglich ein, warum sollte man jemals etwas unnötig zweimal berechnen?
- Hoste in der grünsten Cloud, nah an deinen Usern: Google > Azure > AWS (opens new window)
- Bleib auf dem Laufenden: Die Welt der Software-Entwicklung verändert sich ständig, und es gibt ständig Verbesserungen, bessere Werkzeuge, neue Wege, Dinge zu tun.
- Es gibt keinen Königsweg: nachhaltiges Denken statt blind vorgefertigte Lösungen anwenden
Links and Quellen
- https://www.nature.com/articles/d41586-018-06610-y (opens new window)
- https://www.smashingmagazine.com/2019/01/save-planet-improving-website-performance/ (opens new window)
- https://alistapart.com/article/sustainable-web-design/ (opens new window)
- https://sustainablevirtualdesign.wordpress.com/ (opens new window)
- http://worrydream.com/ClimateChange/ (opens new window)