13 October 2022

Sustainability and Software Development: Properly Prioritise Your Actions

TL;DR

We should take every possible action to limit our carbon footprint. Nevertheless, prioritise those actions based on impact (see the priority table below).

The Sustainable Pillar

In today’s world, sustainability should be a concern. Information Technology (IT) goes with that flow, having climate concerns put on most agendas. Regarding cloud computing, it’s nice to see that AWS, Google Cloud, and Azure made sustainability part of their strategy.

As a cloud engineer, the following article was recently brought to my attention: Python is Destroying the Planet. The article has good content, but I had many concerns after reading it.

Context is Everything

To summarize, the article is about measuring energy efficiency of programming languages and concludes with an open question. The latter opens the door for people jumping to the wrong conclusions or even worse, taking improper action. 😨

Based on the article, I came up with the following metaphor.

Let’s say a parcel needs to ship from Belgium to Rome with the lowest carbon footprint. Therefore the package is loaded into a truck. Although it’s a hot summer day, the driver -concerned about the planet- pushes himself to the limit. To further reduce the carbon footprint, he turns off the air-conditioning to save some gasoline.

Truck Driver

Although the driver’s intentions are good, I immediately ask myself the following questions:

  • Did that parcel have to ship to Rome? Is there any value in doing this? Maybe it’s just an empty box?
  • Did the truck take the shortest or fastest route?
  • Was the truck loaded at full capacity?
  • Were the truck’s tires inflated sufficiently?
  • Given the parcel dimensions, what were the other freight options?

My point? It’s nice idea, but turning of the airconditioning is no more than a drop in the ocean compared to the outcome of the above questions! The effect of answering those questions could impact a few magnitudes bigger than turning off the airconditioning.

Carbon footprint measures for IT prioritized

With multiple options available, it’s better to apply the option with the most impact first.

Concerning IT sustainability, I prioritize actions as follows:

  • The business case: There has to be value in the software written to begin with! For example:
    • There’s no value in a Petabyte data lake without data access
    • There’s no value in calculated predictions that are applied nowhere
    • You get the point ;-)
  • Energy input: is the data center running on green energy? If yes, everything else becomes irrelevant because there’s no carbon footprint. (Yes, a bit simplistic, but again, you get the idea)
  • Energy output: is the residual heat of the data center reused?
  • Technology: Cloud Native, Serverless, CQRS, …
  • Elasticity:
    • Are things shut down when not in use
    • A low baseline and scale-out when needed
  • Clean code
  • Programming language: is the language used energy efficient?

It would be wrong to state that the choice of programming language has no impact on carbon footprint. But before digging deeper into that, many other things could yield much more with less effort.

To wrap up

When thinking about sustainability, properly prioritize your efforts toward limiting your carbon footprint.

Running your workloads in the cloud is likely already a step in the right direction because cloud providers have usually a lower carbon footprint and are more energy efficient than typical on-premises alternatives. This is because they invest in efficient power and cooling technology, operate energy-efficient server populations, and achieve high server utilization rates.

Cloud workloads reduce impact by taking advantage of shared resources, such as networking, power, cooling, and physical facilities. The incentive to run as optimized as possible is also much bigger for those big providers.

Enjoy and until next time!

Subscribe to our newsletter

We'll keep you updated with more interesting articles from our team.

(about once a month)