How GreenCoding makes a difference!
The reduction of CO2 emission is clearly a direction of both, global governments and industrial organisations. On the one hand, we understand that only 11% of the world’s primary power was derived from renewable energy sources in 2019. On the other hand, we can see decisions of the US-president Joseph R. Biden Jr., promising $1.7 trillion on clean energy investments and the European Commission committing €100 billion for the same goal. It becomes clear that reducing one’s CO2 emissions will become an even higher priority for companies and associations globally. It is also clear that it should become a goal of every one of us – engineers having a part in delivery of IT systems.
In order to understand how the emissions are generated at production of software, it is necessary to learn about GHG (Greenhous Gas) Protocol emissions Scopes. Scopes 1 and 2 correspond to direct emissions. For IT companies, especially for organisations of consultancy profile, the biggest impact is derived from indirect, Scope 3, emissions, also referred to as value chain emissions. Scope 3 emissions are linked to the use of products, also IT systems. For instance, from 16 million metric tons of carbon emissions produced by Microsoft in 2020, about 75% fall into Scope 3.
Reduction of CO2 emissions by the IT industry begins at an application design phase. It must be taken into consideration at all further phases of its life cycle as well. It also involves all the functions related with delivery and operations of IT systems. It starts with managers. With focus on sustainability, managers should move away from the traditional priority which used to be purely about delivery performance or cost reduction. We suggest managers to focus instead on optimisation of the software end-to-end. Especially, to take the carbon footprint of running applications into account.
Managers are only one function out of many that may have direct impact on the energy efficiency and in turns emissions generated by applications. Architects may choose energy efficient technologies and design them in energy saving goal in their minds. Developers may write more efficient code. Testers may ensure the applications are turned on only for the time the testing activities take place. DevOps may ensure automations will reduce the amount of time activities last and especially remember to always turn off unused systems. UX designers may ensure the screen time required to complete a task is minimized. Data Scientists, Operations, Analysts, Business Development and all other function in an IT company also play an important role in real reduction of carbon emissions.
Also, at the design phase itself, it is the time to choose the most energy efficient technologies and application design. Programming languages differ in their energy, CPU time and memory efficiency. Also, technologies to be used differ. Not only the use of Cloud Native approach proves to be significantly more energy efficient but also some of the cloud data centers already are or are planning to become entirely carbon neutral. Ultimately, GreenCoding will mean adding a new question to the design process. Teams need to question if there is a better way to deliver the desired benefit with the least possible amount of energy.
More broadly, we can ask three questions:
- What? Is the application, the subject of what we produce, energy efficient?
- How? Is the way we produce the application energy efficient?
- Where? Where will we run the code in order to generate the least amount of CO2 emissions?
We may enumerate three main principles of GreenCoding
First, shut down when idle. Do not keep the environments running when they are not used (night, weekends, etc.). Do not run unnecessary servers or systems.
Second, avoid compulsive consumption. Do not create high performance apps when they are used rarely. Do not create always on functions when they may be run rarely, processing batches of data.
Third, focus your time and energy investment. Do not over engineer. Understand the real functional and non-functional requirements. Design applications that will match them and not more.
Finally, remember that CO2 emissions really matter. They are generated when we use computers at all. Therefore, re-use becomes even more important than ever. In turns, knowledge sharing is a key to avoid re-inventing the wheel. As much as people may learn from you and re-use what you have already done, that much less CO2 emissions they will generate.
Keen to find out more about our GreenCoding approach? Go to our website and read our whitepaper.