Build environmental sustainability into your development teams

sustainability.jpg

Over the past several years, it’s become not just a cool thing for companies to appear to care about the environment, but a must to show customers what they’re actually doing about it. “Green pledges” have become the norm for a number of companies in order to publicly set sustainability goals and prove to customers that “Yes, we do care, and here’s what we’re going to do.” 

For example, Amazon’s Climate Pledge promises the company will be net zero carbon by 2040, which is 10 years prior to the goal of the Paris Agreement. Last year, Microsoft pledged to be carbon negative—actually removing the carbon it emits from the environment—by 2030 and to completely remove all carbon the company has emitted since its founding in 1975 by 2050. In December 2020, Disney set new environmental goals for 2030, focusing on five areas: greenhouse gas emissions, water, waste, materials, and sustainable design.  The list of companies making similar pledges goes on and on.

While often when you think of what contributes the most to climate change, you might think of electronics that require mining rare minerals, one-time use products that end up in landfills, fossil fuels burned by various modes of transportation, or what we eat, but the internet — while not a physical product — is actually a huge contributor to greenhouse gas emissions. 

In fact, according to a report from The Shift Project, digital technologies contributed to 3.8% of global emissions in 2018.  To put this in perspective, the Sustainable Web Manifesto notes that “if the Internet was a country, it would be the 7th largest polluter.”

“An internet application is the silent killer when it comes to carbon emissions and things like that. A developer, when they’re writing a line of code, or adding an image or a third-party tag to a page, the last thing on their mind is the impact that’s going to have on energy efficiency,” said Michael Gooding, manager of solutions engineering at EMEA Akamai Technologies, a CDN company that has been investing in reducing its carbon footprint and that of its customers. 

In addition to reducing greenhouse gas emissions, there are a number of benefits that building more sustainable applications will provide. According to Chris Adams, co-founder of sustainability consultancy Greening Digital and director at the Green Web Foundation, the decisions that make an organization’s digital technologies greener also tend to save the company money. “If you’re burning needless compute as a developer, not only are you burning loads of cash, but the internet is basically the world’s biggest machine and still runs mostly on fossil fuels, so it also means you’re burning a lot of fossil fuels,” said Adams.

In addition to saving money, going green can also help your company attract top talent. “You can talk about climate in terms of retaining your best people or making it easier to attract people to a company, especially if you’re looking to hire a younger set of people, or actually once people have kids they tend to suddenly become much more interested in climate,” said Adams.

At a high level, efficiencies can be made in both software and hardware. According to Mike Mattera, director of corporate sustainability at Akamai Technologies, on the software side, there are efficiencies that can be built into code, such as optimizing images and being conscious of third-party libraries being added to an application. On the hardware side, improvements can be made such as running servers at hotter temperatures or using renewable energy. 

There are a number of resources out there that teams can use as a starting place and to look at for best practices. One popular resource is the Principles of Sustainable Software Engineering (Principles.green), which is a set of eight practices that can be used to “define, build, and run sustainable software applications.”

The eight principles include:

  1. Carbon: Companies should build applications that emit as little carbon as possible. 
  2. Electricity: Because most electricity is produced by burning fossil fuels, companies should build applications that are energy efficient.
  3. Carbon Intensity: Applications should be consuming the lowest amount of carbon intensity, which is a measure of how much carbon emissions are produced per kWh of electricity that is consumed. For example, wind, solar, and hydroelectric emit no carbon, while fossil fuel sources emit some amount of carbon to produce electricity. 
  4. Embodied Carbon: When possible, build applications that can run on older hardware, because hardware releases carbon both when it is created and destroyed, so elongating the lifespan of a device helps to reduce carbon emissions. 
  5. Energy Proportionality: Servers should be utilized as efficiently as possible. Servers aren’t configured for power-saving, and often are left in idle mode during low demand periods. To combat this, run work on as few servers as possible. 
  6. Networking: Companies should try to reduce the amount of data they produce and store, and reduce the distance that data needs to travel across the network. 
  7. Demand shaping: Rather than shaping supply to meet demand, consider shaping demand to match the supply. For example, video conferencing software often reduces the video quality to prioritize audio quality, rather than streaming at the highest quality possible the whole time.
  8. Measurement and Optimization: Companies should focus on end-to-end optimizations on carbon efficiency across the entire organization. According to the Principle.green site, the most impactful optimizations will come from those who understand the carbon footprint of the entire stack, from the front-end to the data center. 

According to Adams, the Principles of Sustainable Software Engineering started when he was speaking with Asim Hussain, Green Cloud Advocacy Lead at Microsoft, who wanted to put together something like a 12 Factor App Methodology for sustainable software. “I thought yeah that’s a really good idea because in many cases there’s been a number of pieces and manifestos and things that have been put into the world previous, but in many cases it’s not always obvious how to go from something like signing a manifesto saying ‘yeah, I think we should care about humans as well as computers and the climate’ to then how does that translate into something meaningful?”

According to Adams, in addition to the Principles of Sustainable Software Engineering, there are a number of other resources for developers, such as the Sustainable Web Design Manifesto, which is a pledge of commitment to adhere to certain practices, and the ClimateAction.tech community, which Adams helped create. “We organized this as a community who are trying to green the way that we work as technology professionals, because we are in a relatively high leverage situation. It’s also kind of part of being a responsible professional in 2020 to have a stance and be thinking about this stuff, because we all need to be thinking about this and getting to net zero,” said Adams.

Another helpful resource is Energy Patterns, which is a catalogue of 22 items developed by Luís Cruz and Rui Abreu that developers can use to improve mobile app efficiency.

“The idea of having such a catalogue started because we realized that it’s really hard to build energy-efficient mobile applications,” said Cruz, one of the authors of Energy Patterns and assistant professor at Delft University of Technology (TU Delft). Thus, Energy Patterns was started as a method of collecting knowledge from experts in the area and compiling it in a form that anyone — from beginners to seniors — could ingest it.  

According to Cruz, some of the Energy Patterns are pretty basic, such as dark UI colors. It has become popular for apps to offer a dark mode option, but dark interfaces also require less energy, Cruz said. Other patterns in the catalogue are not even related to coding, but the way an app is designed. For example, informing users that clicking a certain button or using a feature might be energy intensive and letting the user decide how they want to use the app. “Sometimes it’s not only about fancy coding practices, it’s about thinking about the product,” said Cruz. 

Cruz noted that a lot of the Energy Patterns are things that are still pretty straightforward, but that developers tend to be unaware of. “That’s why we think this is important to integrate energy efficiency in the education foundation of computer scientists and of any software engineer, any developer,” said Cruz.  

Though adopting new practices or processes in development can often require a lot of change, Cruz doesn’t believe that’s necessarily the case here. He recommends developers consider meeting energy efficiency requirements the same way they would code quality in terms of readability or maintainability. 

The main challenge tends to be an organizational one of getting developers and leaders aligned. “Sometimes even if you’re a developer that cares about sustainability and likes to build energy efficient code it won’t be something valued at the organization,” Cruz said. However, he also noted that if all developers are sustainability advocates, the product they release will tend to be sustainable. This is why he advocates teaching sustainability in computer science programs and making changes through education. “I think through education, this is the best way of changing anything in our society. And the software engineering world, the tech industry, is no different on that,” Cruz said. 

Mattera also emphasized the important role developers play in this. “Having the engineers be able to make improvements, especially on the efficiency side is really the key to a successful program. If you don’t have the education and you don’t have those skill sets working on this, it’s definitely something that’s going to be really difficult to get off the ground, especially if you’re trying to work on server sprawl, or that kind of thing,” he said.

Adams added that another way to ensure success at adopting sustainable principles is to actually publicly state in your team that this is something to work on. “The key thing is literally just defending people’s time so that they can look into this stuff, but making it clear to the team that yes we give you permission to give a shit about the environment. It sounds really dumb, but the thing is that in many cases if you don’t feel empowered to do this, it’s always going to take second field. I think one of the most important things you could do as a team is to say we recognize that the science dictates that we need to take some action and we’re going to show that we’re looking into this and we’ll speak to other groups and we’ll see what’s going on here,” said Adams. 

Credit: Source link