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.

  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. 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.

  1. Everyone has a part to play in the climate solution

    If you're reading this document and identify as Green, know you're 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 voices. 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's always something you can do to have an impact.

  2. 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're almost always cheaper, they're often more performant, and they're often more resilient. But the primary reason we are practicing Sustainable Software Engineering is for sustainability; everything else is an added advantage.