Mindful Coding – Principles of Green Software Engineering

Mindful Coding – Principles of Green Software Engineering

An article in the Harvard Business Review, entitled “How Green Is Your Software?” by Podder et al, describes the issue of heavy energy use in software development, and offers the following summary:

The way software is designed, developed, and deployed can have a major impact on energy consumption. Accordingly, companies should include software in their sustainability efforts. They should articulate a strategy that guides trade-offs and allows for flexibility, review and refine the software development life cycle, and use “sustainable” software to make cloud-based data centers greener.

The authors do clarify, for those who may consider this somewhat literally, that obviously software itself doesn’t consume energy, but rather:

The problem lies in the way software is developed for use — and then in the way it is used. Software runs on hardware, and as the former continues to grow, so does reliance on the machines to make it run.

For those keen on further research on the topic, a study published in 2015 in the journal Environmental Impact Assessment Review presented…

…a calculation method for the carbon footprint of a software product over its life cycle. We also offer an approach on how to integrate some aspects of carbon footprint calculation into software development processes and discuss impacts and tools regarding this calculation method.

The study is available at: https://www.sciencedirect.com/science/article/abs/pii/S0195925514000687 / https://doi.org/10.1016/j.eiar.2014.07.003

Looking further into this topic, I stumbled across a personal project by Asim Hussain, Green Cloud Advocacy Lead at Microsoft. Entitled The Principles of Green Software Engineering (https://principles.green/), these are defined by the author as:

…a core set of competencies needed to define, build and run green sustainable software applications.

These eight principles are listed as the following (with each being hyperlinked to its own far more detailed page):

  1. Carbon: Build applications that are carbon efficient.
  2. Electricity: Build applications that are energy efficient.
  3. Carbon Intensity: Consume electricity with the lowest carbon intensity.
  4. Embodied Carbon: Build applications that are hardware efficient.
  5. Energy Proportionality: Maximize the energy efficiency of hardware.
  6. Networking: Reduce the amount of data and distance it must travel across the network.
  7. Demand Shaping: Build carbon-aware applications.
  8. Measurement & Optimization: Focus on step-by-step optimizations that increase the overall carbon efficiency.

Over and above the eight defined principles, there are also two philosophies of Green Software Engineering described:

  1. Everyone has a part to play in the climate solution, and
  2. Sustainability is enough, all by itself, to justify our work

Should you be keen to learn more, a course encompassing further learning is available on the Microsoft Learn platform.

Read up on these principles on https://principles.green/. The site also contains a link to a form allowing one to endorse the principles as well as sign up for their newsletter. It even has its own GitHub repository, available here: https://github.com/jawache/principles-green

To end this brief overview, I leave you with a final quote from the site to remind developers and coders that they can indeed make a difference:

As Green Software Engineers, we believe that everyone has a part to play in the climate solution. Green Software Engineering is inclusive. Whatever sector, industry, role, technology – there is always something you can do to have an impact.

References and Sources:

Hussain, A., n.d. Principles of Green Software Engineering. [online] Principles.Green. Available at: https://principles.green/

Kern, E., Dick, M., Naumann, S. and Hiller, T., 2015. Impacts of software and its engineering on the carbon footprint of ICT. Environmental Impact Assessment Review, [online] 52, pp.53-61. Available at: https://www.sciencedirect.com/science/article/abs/pii/S0195925514000687

Microsoft Learn. n.d. The Principles of Sustainable Software Engineering. [online] Available at: https://docs.microsoft.com/en-za/learn/modules/sustainable-software-engineering-overview/

Podder, S., Burden, A., Singh, S. and Maruca, R., 2020. How Green Is Your Software?. [online] Harvard Business Review. Available at: https://hbr.org/2020/09/how-green-is-your-software

Keen to be notified of new posts? Sign up for Coding Climate’s newsletter:

Leave a Reply