Practical steps towards a sustainable IT landscape
Just like other sectors, IT needs to reduce its footprint to help decarbonize the world. We are pumping vast amounts of CO2 into the atmosphere, too quickly to adjust. While we all emit carbon in our everyday activities, the challenge is to minimize emissions while maximizing created value. In this blog we aim to give you some practical tools from an engineer's and a scrum master's perspective. What choices would you make if you consider planet earth as your stakeholder?
Moving towards a more sustainable IT landscape
The IT sector is often seen as a solution to reducing the world’s overall carbon footprint, leading to emission savings. For example by making processes more efficient and enabling remote working. While these potential savings are real, we often tend to forget the IT sector itself also has a large carbon footprint. Just think about the production of devices that we use and the vast energy consumption of data centers, for example.
Rabobank has committed to the Paris Agreement and defined their ‘Road to Paris’ with the ambition to become climate-neutral by 2050. According to the EU (European Union), to meet that goal we must cut our carbon emissions by at least 55% of 1990 levels by 2030.
That means we have 7 years to drastically reduce our carbon emissions. But how?
Some ideas to get started
- Do a Planet Retrospective with your team.
We recently did a planet retrospective for our scrum team, in which we went over the Principles of Sustainable Software Engineering. We discussed what steps our team can take to reduce the carbon footprint of our systems. Taking the sustainability perspective was a very new approach, but everyone agreed on the necessity to reduce our carbon footprint. There were some great ideas, like giving our applications an ‘energy label’.
If you need help with a Planet Retrospective, you can find an example here. Feel free to get in touch via LinkedIn, see below.
- Define small actionable steps forward and put them on your backlog.
As a developer or development team, the first step to creating sustainable software is adopting the right mindset in your day-to-day work. By critically looking at the systems you are working on, you can start making a positive impact right now. Familiarizing yourself with best practices, like the ones suggested by the Green Software Foundation can help with understanding and improving the sustainability of your code.
Even before proper measurement tools are in place, you can track your progress using some proxy measures. The costs of running your service are believed to be a good proxy for its environmental footprint, as carbon intensive resources like energy and hardware use are also major cost drivers. Networking usage is also an important measure, as it leads to indirect emissions. Performance metrics can also give an idea about the carbon intensity of a piece of software, as CPU (Central Processing Unit) usage is related to power consumption. Using this information, the team can identify where they can possibly reduce carbon emissions.
- Consider the planet as a stakeholder. You might even add it as a stakeholder in your epic/story templates. This helps you to consider the impact on the planet on all levels.
And don’t forget to inspire your colleagues by sharing your endeavours in the sprint review. Or in an internal community for example, like the sustainability community (Growing Greener Community) we have within Rabobank. This way we can learn from each other!
Green coding in practice
One of the changes we implemented was removing a call to an external system within a for each loop in our code. Initially this call was there because functionally it made sense. However, it was also possible to get all necessary information by calling that external system only once. By doing so, we improved our application’s performance and reduced the carbon footprint per call. Avoiding making calls to a database or external system within a loop is an effective way to increase carbon efficiency.
Other best practices include removing and refactoring unused features, using efficient caching policies, and using smaller file formats where possible. If your application uses a user interface, it’s also good to think about Green UX (User eXperience) principles, such as avoiding content that automatically plays and thus potentially starts using data without the user even needing it. Using darker colors in an interface can help reduce device energy usage as some screen types use less energy to display black.
To measure is to know
As the famous British physicist and engineer Lord Kelvin once said: “to measure is to know”. This certainly holds true for sustainable IT projects, and it’s crucial to have the right tools to measure the environmental impact of a service. We are working to get the right measuring tools in place, so development teams can monitor which resources are already efficient and where optimization is necessary. The Azure Emissions Dashboard Rabobank uses is a start for applications in the Azure cloud. Further expansion and improvement of these tools and implementing their use across the organization is key to taking the next step in sustainable software development.
In the end, it all starts with architecture
Only by thinking about sustainability right from the start of a project, can it become truly sustainable. Therefore, any new project should have sustainability embedded in its architecture. This includes selecting the right coding language to efficiently perform the task at hand, using cloud infrastructure where possible and choosing the right level of abstraction for a project. A set of sustainable architecture guidelines specific to the organization can help improve the sustainability of upcoming projects.
We hope that we inspired you to start making the move towards a more sustainable IT landscape with these ideas and best practices. Whatever you are working on, you can also contribute to reducing our carbon footprint. Let’s unite within tech, because our small steps combined will make a great difference for the planet!