Overview of Sustainable Software Engineering
Eight principles of Sustainable Software Engineering
There are eight principles of Sustainable Software Engineering that form a shared understanding of what it means to be a Sustainable Software Engineer. The subsequent units in this module will provide a basic introduction to each of these principles.
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.
Optimization: Focus on step-by-step optimizations that increase the overall carbon efficiency.
These eight principles are independent of:
- Application domain.
- Organization size or type.
- Cloud vendor or self-hosted.
- Programming language or framework.
Two philosophies of Sustainable Software Engineering
Alongside the eight principles of Sustainable Software Engineering, there are two philosophies.
Everyone has a part to play in the climate solution
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 significant 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 Sustainable Software Engineers, we believe that everyone has a part to play in the climate solution. Sustainable 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
As Sustainable 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 Sustainable Software Engineering is for sustainability, everything else is an added advantage.