Ist Green Software Design agil?

Gibt es einen direkten Zusammenhang zwischen Agile Software Development und Green Software? Die Frage wird uns öfter gestellt. Spoiler: Unsere Antwort ist ein eindeutiges Ja. Agiles Vorgehen ist kein Muss, denn natürlich kann man mit jedem Vorgehensmodell klimafreundliche Software entwickeln. Die Prinzipien agiler Entwicklung sind aber sehr hilfreich.
Green Software, Methoden und Kultur
Wir haben hier im Blog schon öfter betont, dass es unterschiedliche Auffassungen darüber gibt, was denn nun gemeint ist, wenn man über Green Software spricht. Nur Green Coding oder der gesamte Entwicklungsprozess? Der Begriff Green Software Design bezieht jedenfalls Methoden mit ein. Einfach, weil die relevanten Aktivitäten zuverlässiger durchgeführt werden, wenn sie in den Methoden verankert sind. Das ist vor allem in der Anfangsphase wichtig, in der die Beteiligten Green Software Design noch nicht verinnerlicht haben. Anders gesagt: Es muss erst einmal eine entsprechende Kultur entstehen. So, wie auch agile Methoden zwar leicht erklärt sind, sich die entsprechende Mentalität aber nur schrittweise entwickelt. Vieles ist eben leichter gesagt als getan.
Der Einfluss von Methoden
Letztlich sind einerseits die Anforderungen, anderseits technische Faktoren, die den „Ressourcenhunger“ einer Software bestimmen. Die Organisation des Entwicklungsprozesses hat einen indirekten Einfluss. Agile Methoden helfen in mehrfacher Form:
- Sie fördern Kommunikation. Das ist extrem wichtig! Denn die Produktverantwortlichen brauchen Feedback von Entwicklern, um zu verstehen, welche Auswirkungen ihre Anforderungen haben. (Als Beispiel: 2 Sekunden maximale Reaktionszeit einer Webanwendung sind etwas ganz anderes als 2 Sekunden mittlere Reaktionszeit.) In gleicher Weise braucht es den Austausch zwischen Entwicklung und Operations (Stichwort DevOps), und zwischen den verschiedenen Spezialisten in der Entwicklung (z.B. Anwendungsentwickler und Datenbankexperten).
- Frühes und regelmäßiges Messen des Ressourcenverbrauchs ermöglicht überhaupt erst die Steuerung dieses Verbrauchs. Wenn solche Messungen Bestandteil der Definition of Done (DoD) werden, sind sie fest in den Abläufen verankert.
- Viele kleine Entscheidungen tragen ihren Teil zur Verbesserung bei. Es ist daher wichtig, in der alltäglichen Umsetzung auf Optimierungschancen zu achten. Dazu muss man die entsprechende Denkweise verinnerlichen. Reviews oder Pair Programming helfen dabei. Denn zwei Köpfe übersehen Chancen seltener als ein Kopf.
- Green Software Design ist eine Kultur. Es gilt nicht nur, mit guten Vorsätzen zu starten, sondern sie im Laufe des Projekts beizubehalten. Auch dann, wenn die Termine eng werden. Retrospektiven helfen dem Team, sich selbst diese Haltung zu bestätigen und sich darin zu bestärken.
- Oft nehmen gleich mehrere Stakeholder von außen Einfluss auf ein Software-Entwicklungsprojekt. Die Projektverantwortlichen haben dadurch nicht die Kontrolle über alle Anforderungen. Auch nicht über solche, die wesentlichen Auswirkungen auf den Ressourcenbedarf haben. Geht man nach der Scrum-Methode vor, kann man alle Anforderungen zumindest aufnehmen und muss keine abblocken. Sie können aber zunächst weiter unten im Backlog landen. Dadurch bleibt Zeit, zu klären, ob die Anforderungen wirklich exakt so benötigt werden, wie sie ursprünglich eingebracht wurden. Oder ob man sie nicht doch anpassen kann, um effiziente Lösungen zu ermöglichen.
Ähnlich wie Agilität ist Green Software eine Mentalität. Die Teams müssen die entsprechende Kultur im Laufe der Zeit entwickeln. Dafür sind die Mechanismen agiler Entwicklung hilfreich.