Guidelines: Resource-efficient software development
How can software engineers take climate protection into account when programming? Guidelines published by the German Digital Association Bitkom explain how to enhance sustainability, longevity and resource efficiency in software programming. Our sustainability expert Duc Nguyen is a member of the Bitkom working group "Resource-efficient programming" that published these guidelines and contributed his expertise to the paper. We would like to share some practical tips with you.
Many studies have revealed: Software is responsible for a growing share of CO2 emissions. From developing to using or hosting software – it takes a lot of energy to process large data volumes. Nevertheless, software engineers very rarely consider the issue of resource efficiency. However, there is large potential, as Duc explains: "Efficient programming can reduce energy consumption and thus CO2 emissions, protecting natural resources. This enables us as software engineers to contribute a considerable share to climate protection." The following aspects provide some starting points for resource-oriented development.
Include sustainability as a non-functional requirement into your project right from the start. You set the course for more sustainability before you even write one line of code: with a potential analysis and the choice of the most appropriate programing language. The latter has the greatest influence on energy efficiency. Studies show: In general, the language that allows to implement the respective usage case fastest is the most energy efficient.
From downward compatibility to minimizing data transfer all the way to lean programming – the guidelines contain specific tips on how to design a largely sustainable software and architecture. The runtime is the key factor for saving energy. Executing code uses energy. This means that you should always question what computations are really necessary when – and avoid computations for later use. Program the software in a way that allows the users to control energy consumption themselves, e. g. by deactivating features they don’t need. You can also try to keep the data flow as low as possible by using caches and buffers. You can also bear the environment in mind when it comes to the development as such, e. g. by choosing the right development tools. With incremental compilers, automatic test runs or continuous development, every commit triggers a number of background processes. Of course, you cannot do without these tools, but you can aim to configure the CI/CD pipeline accordingly: How often do you really need energy-intensive integration tests? Is it really necessary to do an automatic test run of the entire suite with every little change you make?
Laying the basis
In order to establish sustainable software engineering in a company, decision makers need to build an appropriate organizational structure. It isn’t unusual for conflicts to arise in software projects when it comes to objectives, time, cost and quality: Should we try to optimize a software to make it more efficient or will we just use a more powerful server? It is helpful to uncover and discuss such points of conflict as early as possible. Don’t consider resource efficiency to be just any other project goal: Illustrate how this aspect can also have a positive impact on other project goals such as customer satisfaction and operating costs.
Make sure to measure the success of the measures taken at regular intervals. But what is the best way to do this? This can be a very hot topic. Therefore, our first and most important tip: Don’t become too engulfed in discussions about the right KPI, but try to make measuring as simple as possible, e. g. by using proxy values. These are indicators that display the objectives indirectly and are usually easier to measure than direct values. It is, for example, hard to measure CO2 emissions directly – but this doesn’t apply to power consumption. A high power consumption is usually associated with high CO2 emissions. Therefore, power consumption can be used as a proxy value for CO2 emissions.
Spread the word
Sustainability is becoming an increasingly important selling pint – not only in B2C. B2B customers, too, attach increasing importance to these aspects when purchasing software. So, if you develop sustainable software, you should make it visible to the outside world, e. g. by applying for official certification. In Germany, one possibility is the so-called Blue Angel, an eco-label issued by the German Ministry for the Environment, Nature Conservation and Nuclear Safety. Recently, it has also become available for software and certifies software products that go easy on hardware resources and have a low energy consumption.