Sustainable-Software-Design-Thumbnail

How Sustainable Software Design Combats Climate Change — & How To Get Involved

04/18/2022

Making simple tweaks to be more environmentally conscious in your daily life — like shopping second-hand or unplugging your devices — can often feel like a drop in the bucket when it comes to reversing climate change. And while mitigating the overwhelming effects of climate change will take a lot more than remembering to compost your banana peel, the collective effect of these habits amounts to something.

Even as you write code or develop software, there are steps you can take to be better to the planet, according to Asim Hussain, Microsoft’s green cloud advocacy lead.

Learn something new for free

Asim focuses on creating sustainability solutions for people who are in the business of building software. “I’m trying to answer the question: What can people do in their jobs — or the things that they’re sitting at their desk eight hours a day doing — to have a more positive impact on the planet?” he says.  

Through lots of research and experience as a developer, Asim came up with a group of guiding principles that developers can use to build green software. With this framework in mind, you can ultimately utilize fewer physical resources and use energy more intelligently to reduce your software’s carbon footprint, he says.

The 8 principles of sustainable software design:

  • Carbon: Build applications that are carbon-efficient, meaning they extract as much value as possible for each gram of carbon they emit into the atmosphere.
  • Electricity: All software requires electricity, so how can we build products that are energy-efficient?
  • Carbon Intensity: Consume electricity with the lowest carbon intensity, which is the amount of carbon by weight emitted per unit of energy consumed.
  • Embodied Carbon: Move away from “planned obsolescence” by building applications that are capable of running on older hardware without sacrificing performance.
  • Energy Proportionality: Maximize the energy efficiency of hardware by running work on fewer servers with the highest rate of utilization.
  • Networking: Reduce the amount of data used and decrease the distance it has to travel across a network.
  • Demand Shaping: Building “carbon-aware” applications is a matter of adding eco modes that adjust your computer’s demands to times or regions when the supply of renewable electricity is high.
  • Optimization: Keep track of step-by-step optimizations that make your product more carbon-efficient, like cost or performance.

The cool thing about these principles is that they don’t just apply to engineers or people writing code; they’re useful for “anybody who’s even remotely involved in or has any influence in the building or running of software,” Asim says. Of course, the tangible ways that people implement these principles into their daily lives vary depending on their specific role.

For example, a machine learning engineer and a web developer would use different techniques and tweaks to implement the principles. “Machine learning tends to be very CPU-intensive,” Asim explains. “Maybe you’re pushing more to your end-user device? So, if you’ve got a machine learning model, instead of making API calls to a server, what can you do on this device so that you don’t need to do that transfer?”

A web developer or mobile developer, on the other hand, might make specific choices that ensure a product won’t become obsolete as hardware and operating systems get more advanced, Asim suggests. “So, you’re always testing websites on older browsers, and you’re making sure things work on older hardware,” he says. There are even more benefits to this down the line: If software is built to outlast these updates, people will end up wasting less hardware.

How to get involved

These are just a few examples of how sustainable software design can change the way you write code and develop technology. Here are some other ways that you can get involved with the movement:

  • Join the ClimateAction.tech Slack community: Connect with thousands of like-minded tech workers who want to address climate issues in the workplace. On Slack, you can ask questions, share resources, or just have meaningful conversations about climate tech.
  • Contribute to open-source projects: Asim’s nonprofit, Green Software Foundation, has a handful of sustainability-focused repositories on GitHub that you can contribute to (heads up: you need to become a GSF member before you start making changes to repositories). For example, one of the projects involves figuring out a methodology to calculate the carbon intensity of a software application.
  • Share this wisdom with the rest of your team: Don’t discount the impact that one person can have on mitigating the effects of climate change. “If you’re in a dev team, all you need is one person who thinks of climate as a priority, and they’ll change the processes that will change the DevOps pipeline,” Asim says. Host a brown-bag presentation for your colleagues on sustainable software design, or share a link to this blog in your Slack channels.

Related courses

6 courses

Related articles

7 articles