Principles of Green Software Engineering
Introduction
Green Software Engineering is an emerging discipline at the intersection of climate science, software practices and architecture, electricity markets, hardware and data center design.
The Principles of Green Software Engineering are a core set of competencies needed to define, build and run green sustainable software applications.
These eight principles form a shared understanding of what it means to be a Green Software Engineer independent of:
- Application domain.
- Industry.
- Organization size or type.
- Cloud vendor or self-hosted.
- Programming language or framework.
Through the synthesis of this knowledge, a Green Software Engineer can make decisions which have a meaningful impact on the carbon pollution of their applications.
Who should read this? permalink
Anyone building, deploying or managing applications.
Summary permalink
- Carbon: Build applications that are carbon efficient.
- Electricity: Build applications that are energy efficient.
- Carbon Intensity: Consume electricity with the lowest carbon intensity.
- Embodied Carbon: Build applications that are hardware efficient.
- Energy Proportionality: Maximize the energy efficiency of hardware.
- Networking: Reduce the amount of data and distance it must travel across the network.
- Demand Shaping: Build carbon-aware applications.
- Measurement & Optimization: Focus on step-by-step optimizations that increase the overall carbon efficiency.
The two philosophies of Green Software Engineering permalink
Alongside the eight principles of Green Software Engineering, there are two philosophies.
Everyone has a part to play in the climate solution. permalink
If you are reading this document and identify as Green, know you are part of a massive global movement of people who care and are taking action. Greens work in every discipline across engineering, from designing silicon to designing user experiences.
Nothing happens in isolation, everything is connected, and small changes lead to big changes. Even the act of normalizing a discussion about sustainability in technical meetings will empower others to raise their voice. Thatβs how you create change in any organization.
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.
Sustainability is enough, all by itself, to justify our work. permalink
As Green Software Engineers, we recognize there are many advantages to building sustainable applications. They are almost always cheaper, they are often more performant, they are often more resilient. But the primary reason we are practicing Green Software Engineering is for sustainability, everything else is an added advantage.
Applying the principles permalink
Here are a few examples of applying the principles of Green Software Engineering to some common application architectures: