Blog Post

Green Tech Blog
4 MIN READ

A Visual Guide: To Sustainable Software Engineering

nitya's avatar
nitya
Icon for Microsoft rankMicrosoft
Feb 15, 2021

This is a condensed form of the article originally published on the Visual Azure site. It's part of an effort to explain technology concepts using visual vocabularies, including sketchnotes!

 

Background


Recently, I came across the Microsoft 2020 Environment Sustainability Report and had a chance to check out this review of the progress made towards the sustainability goals that had been laid out in the Jan 2020 announcement from Microsoft leadership. I had already decided I wanted to spend more time this year in understanding environmental issues and sustainability solutions in both tech and community contexts. And I needed to start by understanding basic concepts and terminology.

Thankfully, my colleagues from the Green Advocacy team in Developer Relations had recently released a Microsoft Learn Module covering the Principles of Sustainable Software Engineering. So I did what I always do when I want to learn something and retain that knowledge in meaningful ways for later recall -- I sketch-noted it!

The Big Picture
As a visual learner, I've found that capturing information in one sheet helps me grasp "the big picture" and make connections to other ideas that I learn about in context. So here's the sketch-note of the module. You can download a high-resolution version at the Cloud Skills: Sketchnotes site, and read a longer post about what I learned on my Visual Azure blog.

 

Key Takeaways


The module describes the 2 core philosophies and 8 core principles of sustainable software engineering.

Let's start with th
e core philosophies:

  • Everyone has a part to play in the climate solution

  • Sustainability is enough, all by itself, to justify our work

How I think about this:

  • Butterfly Effects. Even the smallest individual action can have substantial collective impact. In that context, educating ourselves on the challenges and principles is critical so that we can apply them, in whatever small ways we can, to any work we do in the technology or community context.
  • Duty to Protect. We have just this one planet. So even though sustainability may have other side-effects that are beneficial or profitable, our main reason for doing this is the core tenet of sustainability itself. We do it because we must, and all other reasons are secondary.


As for the 8 principles, this is what I took away from my reading:

  • Carbon. Short for "carbon dioxide equivalent", carbon is a measure by which we evaluate the contribution of various activities to greenhouse gas emissions that speed up global warming. 
  • Electricity. Is a proxy for carbon. Our power grid contains a mix of both fossil fuels (coal, gas) and renewables (wind, solar, hydroelectric) where the latter emit zero carbon but have a less predictable supply.
  • Embodied Carbon. Is the carbon footprint associated with creation and disposal of hardware. Think of embodied carbon as the fixed carbon cost for hardware, amortized over its lifetime. Hardware is viewed as a proxy for carbon.
  • Carbon Intensity. Is the proportion of good vs. bad energy sources in our energy grid. Because renewable energy supply varies with time and region (e.g., when/where is the sun shining), carbon intensity of workloads can also vary.
  • Energy Proportionality. Is a measure of power consumed vs. the utilization (rate of useful work done). Idle computers consume power with no (work) value. Energy efficiency improves with utilization as electricity is converted to real work.
  • Demand Shaping. Given the varying carbon intensity with time, demand shaping optimizes the current workload size to match the existing energy supply - minimizing the curtailing of renewables and reliance on marginal power sources.
  • Network Efficiency. Is about data transmission and the related hardware and electricity costs incurred in that context. Minimizing data size and number of hops (distance travelled) in our cloud solutions is key to reducing carbon footprint.
  • Optimization. Is about understanding that there are many factors that will contribute to carbon footprints - and many ways to "estimate" or measure that. Picking metrics we can understand, track, and correct for, becomes critical.

This is a high-level view of those principles each of which is described in detail in its own unit. I highly encourage you check the course out after reviewing the sketch-note.

 

 

Sustainability Pernille-Eskebo

Why does this matter to us as technologists? I found the Sustainability site to be a good source for educating myself on how these challenges are tackled at scale, in industry.



Microsoft has set three objectives for 2030:

  • Be carbon negative: Extract more carbon dioxide from the atmosphere, than we contribute.
  • Be water positive: Replenish more water from the environment, than we consume.
  • Be zero waste: Reduce as much waste as we create, emphasizing repurposing and recycling materials.

A fourth goal is to be biodiverse and use technology to protect and preserve ecosystems that are currently in decline or under threat. And this is where technology initiatives like the Planetary Computer come in, helping researchers collect, aggregate, analyze, and act upon, environmental data at scale to craft and deliver machine learning models for intelligent decision-making.

The bottom line is that we all have a role to play, and educating ourselves on the terms and technologies involved, is key. I hope you'll take a few minutes now to review the sketchnote and complete the Principles of Sustainable Software Engineering on your own. It's time to be butterflies and drive collective impact with our individual actions!

Updated Apr 12, 2021
Version 2.0
  • atomer82's avatar
    atomer82
    Copper Contributor

    Hi,

     

    Looks cool. But what about making smart decisions during designing process? Someone decided that laptops must be thinner and thinner... nice. Hence manufactures started to remove all "over-sized" ports like VGA, LAN, USB etc. And replacing them with DisplayPort or USB-C, creating a new mass-market of dongles/converters/adapters. Has that made a positive impact on the Planet? Definitely not. 

     

    In the name of innovation we shouldn't generate electronic waste.

     

    Best regards,

    Chris  

  • Reza_Ameri's avatar
    Reza_Ameri
    Silver Contributor

    Thank you for sharing.

    There are two things we need to take into consideration:

     

    1) Situatable Technologies: Let say Microsoft work on compiler to do compilation smarter and be more energy efficient. 

     

    2) System Architect: Developers designed the system in a way that it consume less energy. 

  • DmitryZ's avatar
    DmitryZ
    Copper Contributor

    Great article, if we are serious about saving energy, perhaps industry can take second look at machines using ternary logic as opposed to binary.

  • Hello Everyone

    Being an IT Technology Leader commits to serious analysis of the future of the World and ensuring sustainability is a great challenge for people!

    I am pleased that Microsoft is developing this topic and investing in technologies prudently trying to limit the greenhouse effect and other negative climate change - excellent nawa quality!

    I noticed in the article not the correct link at the end of the article please go 

    share according to the context , because this leads to shopping , and it was not the intention of the author - I think .     https://aka.ms/visual-greentech%C2%A0 thank you very much!

  • @atomer82

     

    Hello congratulations on your first post in MTC

    Microsoft is creating new projects in this regard, but their implementation is the future!

    It's worth talking about and then drawing conclusions for improvements!

  • suratchai's avatar
    suratchai
    Copper Contributor

    It's been a very long time but, thanks for sharing your journey! It's neat to see folks diving into such important topics. I get where you're coming from about needing to grasp the basics first. It's like when I first started in software engineering, I was always wondering, "Is software engineering hard?" But you know what? It's all about finding the right resources, just like your sketch-notes and that Microsoft Learn Module. Reminds me of when I stumbled upon a great mentor who made coding concepts crystal clear through simple analogies.