Sustainable software development is now a key competency in digital

By Alexandra Pellas

22 July 2022

Understand how software can be designed, built and run to reduce its climate impact.

With a raging heatwave and unprecedented temperatures in Europe, all of us need to make sure we increase our understanding and sphere of influence when it comes to addressing the climate crisis.

What can we do in digital?

For anyone working in digital, we have a responsibility to understand how software can be designed, built and run to reduce its climate impact. The emerging field of sustainable software engineering is here to help.

In previous articles, we’ve talked about the significant impact of digital on the environment, and while sustainable software engineering is an emerging field, there are already some helpful guidelines we can follow.

Start with upskilling

As a Microsoft Solutions Partner, our staff regularly upskill with the latest educational material from Microsoft. Recently, Microsoft has released a module on the principles of sustainable software engineering covering a range of key concepts that anyone in the digital industry arguably should be aware of and implement. We recommend going through the module, and in this article we’ll cover the main take-aways.

8 principles of sustainable software engineering

Drawing from the disciplines of climate science, software, hardware, electricity markets and data centre design, Microsoft proposes 8 principles for defining, building and running sustainable software applications.

While sustainability is a broad concept, this framework solely focuses on carbon.

Build applications that are carbon efficient

We can’t get around the fact that our activities will emit some carbon, but we do have control over the amount of carbon an application emits. By building applications that are carbon efficient, we focus on squeezing the most value for people and planet out of each gram of carbon that is emitted into the atmosphere.

This is the main point of sustainable software engineering, and the following principles offer a range of levers to pull.

Build applications that are energy-efficient

As most electricity still is fossil fuel-based (this will vary depending on a country’s energy mix), the more energy your application consumes, the more carbon it subsequently emits into the atmosphere. Design for energy efficiency.

Consume electricity with the lowest carbon intensity

Carbon intensity of electricity is a measure of how much carbon emission is produced per kilowatt-hour of electricity consumed. The carbon intensity will vary based on time and location due to the variable nature of renewable energy and a regions energy mix.

Demand shifting is one way of consuming electricity with the lowest carbon intensity. It entails shifting workloads to locations and times where there is more supply of renewable energy.

Build applications that are hardware efficient

Embodied carbon (also referred to as embedded carbon) is the amount of carbon emitted during the creation and disposal of a device. This can often be higher than the carbon emitted through the use of a device.

Designing software that extends the lifespan of the devices it runs on is an effective way of building applications that are hardware efficient. Computers don’t wear out, they just become obsolete. Let’s build applications that can run on older hardware.

Maximise the energy efficiency of hardware

Energy proportionality is a measure of the relationship between power consumed in a computer system and the rate at which useful work is done (its utilisation). Running your work on as few servers as possible with the highest utilisation rate possible is a good way of maximising energy efficiency of hardware.

Reduce the amount of data and the distance it must travel across the network

Even though we might think of a network (like the internet) as something non-material, it is in fact physical, consisting of hardware like switches, routers and servers.

Sending data across the internet then, means that you send it through a wide range of hardware devices which all include embodied carbon and emit carbon through their use. Exactly how much carbon is emitted depends on many factors, but two of the most important ones are the amount of data that is sent and the distance it must travel. Focusing on these two factors will reduce your emissions.

Build carbon-aware applications

While demand shifting is the strategy of moving compute to regions or times when carbon intensity is less, demand shaping is the strategy of shaping demand to match the existing supply (of renewable energy).

A helpful example of this is video calling apps. These could stream video at the highest quality possible at all times, but rather, they often shape the demand by reducing video quality to prioritise audio.

Focus on step-by-step optimisations that increase the overall carbon efficiency

There’s no tool with which we could directly measure our applications’ end to end carbon emissions, but we can use proxies to move in the right direction.

By considering a full stack view from user experience to data centre design and electiricty grids, you can often identify some clear opportunities for improvement. In addition to the strategies covered in previous principles, cost and performance are also good proxies for carbon efficiency, as solutions with lower cost and higher performance often are the ones emitting least carbon.

Double down on continuous learning and implementation

This is an emerging field, and just like with the related field of sustainable website design, the tools and frameworks are still forming.

Make time for yourself and your teams to upskill in this key digital competency. We all have a role to play in stopping the trend of raging heatwaves and the climate crisis. Sustainable software is one piece in this puzzle.