Our world is a world of software. Eric Zie, CEO with GoCodeGreen, discusses the practical ways in which we can approach building software that doesn’t contribute to global warming.
Look around, and it is clear that we now live in an increasingly digital world. Everywhere we turn we hear talk of smart cities, artificial intelligence, big data and ChatGPT. Technology and digital solutions are growing, with the social, educational, health and business value of technology now unquestionable. But behind the scenes, this growth has a carbon cost that has remained invisible to most of us.
The information and communication technology (ICT) sector is now estimated to account for somewhere between 4-6% of global greenhouse gas emissions, and is predicted to consume over 20% of global energy by 2030. A much quoted comparison that continues to shock is that data centres running the software we so depend on now have the same carbon impact as the aviation industry.
Everything, everywhere, all at once
The recent Intergovernmental Panel on Climate Change (IPCC) synthesis report, at the conclusion of its sixth assessment cycle, gave us an updated call to action. The world's leading scientists have once again shown us that we have no time to spare and that, as the Secretary General of the United Nations Antonio Guterres stated, we must now do ‘everything, everywhere, all at once’ if we are to hold to the 1.5° temperature change set by the Paris agreement. The next IPCC assessment cycle may not be completed until 2030: this is the same timeframe we have to make enough changes to avoid reaching that critical threshold which, if crossed, will lead to large and often irreversible changes in the climate system.
Digital systems and technology underpin almost everything we do; it is everywhere, and the time has come to start focusing on reducing its energy consumption. Having spent the last two years engaging with some of the world’s leading cloud service providers, software companies, digital leaders, technology consultancies and system integrators, it is now my strong opinion that we have an opportunity ahead of us: one that could see us take the technology sector to the forefront of decarbonisation.
Let’s talk about how
When it comes to taking action, the most successful companies do three things well (and this is regardless of the size or complexity of their IT estates):
- Maximising engineering
- Maximising hardware and data efficiencies
- Building carbon awareness into software
Alongside this they recognise that this isn’t a ‘once and done’ exercise, and that they must embed sustainable IT practices as part of what they do every day.
The principles behind sustainable or green software are not new, and represent logical considerations that should form part of any good design. As examples: always considering ways to constrain your consumption and maximise the use of computer resources, and making this real by creating targets and setting them as part of your acceptance criteria; thinking about selecting the most energy efficient computer hosting, software solutions and tooling as ways of minimising energy usage; ensuring that your teams understand and are able to start embedding these principles in all future design and change activity through applied learning and development.
To understand, first measure
Undertaking measurement is vital, allowing for targeted action and helping to ensure that the principles you’ve adopted and actions you‘ve taken are making a quantifiable difference. Measurement can come in many forms, with differing levels of accuracy and coverage.
For those wanting to embark on a deep decarbonisation, undertaking a full lifecycle or product level analysis often has the greatest impact.
Imagine trying to reduce the carbon impact of a mobile phone. To have any chance of targeting appropriate actions you would need to understand where the raw materials were sourced, the manufacturing methods, the means of distribution, the usage and expected lifespan and eventually its potential end of life destinations. All of these stages and activities lead to energy being used and emissions being generated. The more efficient the choices made and techniques deployed during each of these activity phases, the less energy used and the less carbon impact associated with the product.
For you
Be part of something bigger, join BCS, The Chartered Institute for IT.
There is a methodology called the Greenhouse Gas (GHG) Protocol Product Standard that helps decompose a product into its lifecycle stages to achieve the above. Now imagine software as a ‘product’, and you’ll immediately be able to align the steps of pre-processing, production, distribution, use and end of life to the various stages of software product development and operation for anyone involved in designing, building or operating it. By taking the same underlying approach for a digital product or service to that of a physical product, and measuring the impact of each lifecycle stage, we can then start to identify and target action to improve energy efficiency and reduce consumption.
Building a comprehensive approach to decarbonisation at this level is a complex task. The steps required to perform these calculations might seem too difficult an undertaking, creating a barrier to measurement and action — but it is possible and is a worthwhile investment.
Targeting lifecycle-stage-driven action
Once your software product has been measured you’ll want to target opportunities to improve energy efficiency and reduce its carbon impact. Depending on the lifecycle stage and maturity of your product there will be different choices and prioritisation calls you can take, and this is where ‘green’ coding techniques, alongside other infrastructure and deployment choices, start to play a critical role.
Green coding techniques help the software developer improve the energy efficiency of their code. Imagine you are operating in a computer-constrained environment. What would you do? First you would want to identify any high energy consumption features and then monitor energy usage to enable code optimisation.
Once you were able to measure energy usage you might then target different areas and processes that were running — for example improving the efficiency of data caching and exchanges, compressing and aggregating stored data, or finding efficiencies from using smaller image sizes or font types. You could then start to remove unused or frivolous features, or unnecessary logging, loops and polling.
As you start fine-tuning you could examine your code’s ability to adapt to device power and even start to limit computational accuracy based on operational needs. In some cases, especially when redesigning or building from new, it is even possible to select the most energy efficient programming language or maximise code reuse and no-code assets as part of a more structural change.
Ultimately, deploying a sustainable software engineering technique is about finding the most efficient way of doing or achieving something.
We recommend you look at the work being completed by the likes of the Green Software Foundation, who are starting to take the concept of carbon intensity at code level and location-based workload placement to a practical level for software engineers.
Our industry’s place in the future
The technology sector is full of some of the smartest people around. We are doers. The ingenuity, innovation mindset and sheer determination to solve problems makes us a uniquely capable group. We must stop thinking that taking action means we will need to slow things down and regress to some version of the past that might have been less polluting. In our digital world we must move forward, keep our actions progressive, and utilise the advancements in technology to create the efficiencies needed to support the growth of digital. But we should recognise that we can only meet the increasing technology needs of societies and businesses if we base this growth on a more sustainable IT sector.
About GoCodeGreen
GoCodeGreen is nominated for the Earthshot Prize in the Fix our Climate category in 2023. It has built the world’s first product lifecycle-based measurement and decisioning platform. The system helps designers and engineers reduce the carbon impact of their digital products and services.