How can a Software Developer get started towards Sustainable Software Engineering?

Manoj Jahgirdar
7 min readNov 22, 2022

--

Photo captured by Manojjahgirdar
Picture captured by Manoj Jahgirdar

Introduction

Sustainability has become a buzzword all around the world lately. What comes to your mind when you hear the term Sustainability” ? Something that is renewable? Something that is self reliant? Something that can sustain on its own? Well, you are right upto a certain extent. However, Sustainability is much more than what you think!

According to Wikipedia, Sustainability can be defined as “The capacity to maintain or improve the state and availability of desirable materials or conditions over the long term”.

In the blog, I will share my learnings about —

  • What is Sustainable Software Engineering
  • Why do we need Sustainable Software Engineering
  • How can you as a Software Developer contribute towards Sustainable Software Engineering

What is Sustainable Software Engineering?

A systematic engineering approach to develop a software is nothing but Software Engineering. Software Developers follow the Software Engineering principles to Design, Develop, Maintain, Test & Evaluate softwares. Now imagine the lifecycle of a software development done without causing harm to earth! That is nothing but Sustainable Software Engineering!

Why do we need Sustainable Software Engineering?

Companies are emitting carbon and other greenhouse gases(GHGs) such as carbon dioxide (CO2), methane (CH4), nitrous oxide (N2O), hydrofluorocarbons (HFCs), perfluorocarbons (PFCs), sulfur hexafluoride (SF6), nitrogen trifluoride (NF3) to the environment that is creating a risk of Climate Change including High temperatures, Wildfires caused by heat and changing patterns of rainfalls, Hurricanes, and more.

The harm caused by the companies to the natural environment creates a reaction through which subsequent potential harm impacts the companies and their stakeholders. Hence every corporate company is committing towards a sustainable approach to their business where companies report their Environment Social Governance(ESG) disclosure transparently to the public.

You can learn more about Environment Social Governance(ESG) simplified in my upcoming blog.

Reducing carbon or other greenhouse gases(GHGs) footprint on earth is critical. Companies are majorly doing three things:

  1. Carbon Offsetting
  2. Carbon Removal
  3. Carbon Reduction

Carbon offsetting — Companies try to compensate for the amount of carbon or other greenhouse gases(GHGs) emitted by them. Example: Companies plant trees equivalent of the carbon emitted by them. Here the company is committing to become “Net-Neutral”.

Carbon removal — Companies try to burry the carbon produced by them deep under the ground. This is not very effective method of minimising carbon as the carbon trapped underground can escape to the surface and atmosphere any fine day impacting the earth in a deadly way.

Carbon Reduction — Companies try to reduce the carbon footprint produced by them. They try to achieve it by incorporating various sustainable measures in their operations, supply chain and environmental intelligence. For IT Industries, this is where Sustainable Software Engineering comes into picture!

Sustainability was mainly considered in IT Industries for hardware and not much for Software. With the digital revolution, and the shift to cloud computing it has become obvious that softwares are also impacting deeply to earth. Thus there is a need for Softwares to be sustainable.

How can you as a Software Developer contribute towards Sustainable Software Engineering

As a computer science engineer, we learn about both software and hardware of a computer. These are some sustainable approaches that you can follow in your day to day software engineering.

Software:

  1. Computation — What comes to your mind when you think of computation? Firstly Algorithms! Choosing the right algorithm that has an efficient time and space complexity will end up consuming lesser energy. Secondly Databases, choose the right database for the right purpose. Example don’t use a MySQL database to store your log files. Such databases are not optimized for storing log files and thus will end up burning more resources. Rather use something like a S3 bucket if you don’t access logs often or use something like a HDFS storage incase you access the logs frequently. Finally Architecture, A poor architectural design will end up consuming good amount of energy which is not very good for earth. Hence make sure to design an architecture that is sustainable.
  2. Programming Languages — What is the programming language of your choice? Personally my programming language of choice is python. It is easy to learn and simple to code. But did you know programming languages also leave a carbon footprint on earth? 🤯 You can read the research paper “Ranking Programming Languages by Energy Efficiency”. Python is more time intensive, memory intensive and energy intensive programming language! Where as C, Java, Go, Javascript are less time, memory and energy intensive respectively! I intend to use one of these programming languages going forward rather than python. By choosing the right programming language you can also improve the energy efficiency.
  3. Data Transfer — Every bit of data transferred over the internet consumes energy and indirectly produces greenhouse gases(GHGs). The audio/video that you watch, API calls that you make, emails that you send consumes energy. Imagine you are watching a YouTube video on your iPhone and you select the video quality as 4K(2160p), you are consuming high amount of data on your device which doesn’t even have a 4K display, rather you can choose 1080p and contribute towards less data transfer which will indirectly impact the earth. Similarly, as a best practice make actual API calls only during production. During development and testing, make an habit to setup mock API servers.
  4. Data Storage — With cloud storage becoming cheaper, many of you might be paying monthly/yearly subscriptions to get huge amount of cloud storage. To store the data there are Datacenters setup in multiple regions. These datacenters require air conditioning to keep the servers running at optimal temperature. Now imagine how much of carbon is emitted un-necessarily when you keep your old data that you no longer require just lying there in your cloud storage? Similarly have you ever thought of all the spam, junk, or unwanted emails present in your mailbox? that as well consumes storage space somewhere in some datacenter. As a best practice delete the unwanted data from your cloud storage & email mailbox. If you have any data that you might require someday then store such data in a physical hard drive and keep it in your cupboard. It doesn’t cause harm to the environment!

Hardware:

  1. Energy Consumption — You already know the basics such as turn off laptop/desktop when not in use, etc. You can consider other aspects in you daily workflow that can cause less harm to the environment.
  • Say NO to Red Green Blue (RGB) lights! RGB lights are everywhere lately: RGB strips, RGB RAM, RGB Cooler, RGB Keyboards, RGB Mouse, etc. Ask a simple question to yourself why do you need so much of LEDs? Setup your workspace near a window in your room (preferably a window in your west so that you get good amount of light even in late evenings!) and use one light source that can brighten entire room.
  • Software Developers generally like to use an external display. You can use monitors that have Energy Star label on them. Energy star products are more energy efficient and cause less harm to the environment.
  • Talking about Printers, Ask yourself do you really need a hard copy of your documents? If yes then why? By not taking a print out you end up saving papers and indirectly saving trees. If for any reason you want a hard copy of documents then again consider printers with Energy Star label on them.
  • If you are a Bitcoin miner then you have already caused a lot of harm to the environment already. If you are considering Bitcoin mining then please DON’T! did you know? energy consumed to mine a bitcoin exceeds the energy consumption of Netherlands!

2. Embodied Carbon — The carbon emitted during manufacturing of your laptop/desktop is considered as embodied carbon emission. So what can you do here? Imagine in manufacturing a laptop/desktop a company emits suppose 500 tons of Carbon. You buy the laptop/desktop, and as an end user you can do the following:

  • Use Laptop/desktop for a longer duration. For example if you use it for 3 years, you will end up contributing towards 166 tons of carbon per year (500/3). Where as, if you use the same for 5 years, you will end up contributing towards 100 tons of carbon per year(500/5).
  • Batteries 🔋 are essential part of your laptop, iPads and Phones. Batteries depreciate over time and you will have to replace it so that your device functions efficiently. Imagine 100/500 tons of carbon emitted in manufacturing batteries. If your battery dies in 3 years you will have contributed 33.33 tons of Carbon per year(100/3) and you will replace the battery continuing to contribute for more carbon footprint. Where as, if you take good care of you battery and suppose it lasts for 5 years then you end up contributing 20 tons of Carbon per year(100/5). You can take sustainable measures such as charging your devices only upto 80% on an everyday bases rather than charging it to full 100% increases you battery’s health since the charge discharge cycle is reduced and your battery will last longer. Also do not leave your device plugged in while working throughout the entire day that will kill your battery faster.
  • Recycle ♻️ the device when you no longer need it. By recycling companies reuse the components inside a device which is good for the planet.

Summary

The intent of this blog was to share my thoughts on Sustainable Software Engineering. By spreading Awareness among the developer community I hope collectively we can Improve the current situation of emissions for a more sustainable future ahead! Thank you. 🌎

Further Reading

Stay tuned! I will be publishing a blog on the topic Environment Social Governance(ESG) simplified where I will explain what is ESG reporting and disclosure in simple terms.

--

--