If you work in software development, you probably don't think much about the carbon footprint of the lines of code that you write. Outside of specific niches, such as applications for the blockchain, the energy consumption of software tends to receive little attention.
But the fact is that software does have a significant impact on energy consumption — and, by extension, environmental sustainability. Realizing this, a small but growing number of developers are embracing what's known as sustainable software engineering.
Here's what sustainable software engineering means, why it's important, and how you can adopt its principles.
Sustainable Software Engineering, Defined
Sustainable software engineering (or sustainable software development) is an approach to software design, implementation, and deployment that emphasizes energy efficiency and environmental sustainability. The goal of sustainable software is to minimize the impact that applications, and the infrastructure that hosts them, have on the planet.
How Does Sustainable Software Work?
Sustainable software engineering techniques must be tailored to each application and use case; there is no one-size-fits-all formula to follow to build sustainable software.
In general, however, sustainable software engineering requires developers to focus on:
- Application optimization: The more efficient your code, the less energy your applications will require to run. This is one reason (application performance and user experience are the others) why developers should optimize functions and avoid extraneous features (like unnecessary splash screens or image loading) that bloat the software. The energy wasted by each inefficient application instance may be minimal, but it adds up when your app runs millions of times over a period of years.
- Deployment optimization: Some application deployment techniques are more energy-efficient than others. For example, deploying applications in containers will generally lead to a lower total energy cost than deploying in VMs because containers don't require hypervisors.
- Application architecture: Where possible, developers should take advantage of application architectures that improve overall efficiency, and therefore reduce energy consumption. For example, if you can deploy some parts of your application as serverless functions instead of running them continuously in a VM, you may achieve lower overall energy consumption rates.
- Infrastructure architectures: There may be good availability-related reasons to do things like mirror your applications or data across multiple cloud regions instead of hosting them in just one location, but doing so increases overall energy consumption. Sustainable software development weighs the impact of choices like these.
- Data center choices: The data centers that you choose to host applications bear implications for how "green" your applications will be. Different cloud and colocation providers have different levels of commitment to carbon neutrality and green energy sourcing.
If you're a sustainable software developer, you make considerations like these central to your overall software development strategy.
How Much Does Sustainable Software Engineering Cost?
One of the great things about building sustainable software is that it doesn't usually cost any more than software development processes that don't prioritize sustainability. On the contrary, it can save money in the long run by reducing your software hosting costs.
There may be some upfront costs associated with turning to sustainable software engineering practices; you may, for example, have to invest in development resources in order to refactor applications to run inside containers, or to rearchitect inefficient applications. But these efforts are likely to pay for themselves by leading to lower overall hosting bills once your applications are made more efficient.
How New Is Sustainable Software Engineering?
Microsoft calls sustainable software engineering an "emerging discipline," which it is. Although conversations about the environmental impact of public clouds and the data center industry have been happening for several years, discussion of the role of software — as opposed to hardware — in the sustainability of the IT industry is relatively new.
Still, it's a safe bet that sustainable software development will become an increasingly hot topic in coming years, as more and more companies look for strategies to become more eco-friendly at all layers of the technology stack — not just hardware.
Who Needs Sustainable Software Engineering?
In that sense, every business that builds software (which is, of course, virtually every business today, if you believe the popular mantra that every company is a software company) can benefit from sustainable software engineering.
Sustainable development practices are one way for companies to become more ecologically and socially responsible. Customers are likely to appreciate these efforts, too.
Plus, as noted above, sustainable software engineering tends in most cases to reduce overall IT hosting costs. You're likely to spend less on servers or cloud services when your applications run as efficiently as possible.
So, sustainable software engineering is a win-win: It's better for the environment, and it's better for your business's bottom line. Even the most cold-hearted CEO can get on board with that.