The Eco-Programmer's Dilemma

The Problem

If you ride the bike to work to save the planet, consider optimizing your loop code instead. According to The Guardian, the Internet releases around 300 million tonnes of CO2 annually- the combined equivalent of all the coal and oil burned in Turkey and Poland.

Needless to say, this impact is significant, and it stems from deep inefficiencies in computer hardware and software. We can do something about it. As software engineers, we have the ability to multiply our positive impact on the environment by writing better, faster software.

Moore's law predicted that the number of transistors in a given area would double approximately every two years. With this speed improvement came the oft-quoted wisdom: "programmer time is more important than CPU time".

As a consequence of this "wisdom"- heavy, all-in-one solutions began to flood the market. All of these products were designed with a singular goal: reducing developer time. This reduction in developer time was offset by a higher CPU cost. This CPU cost has a price, the future of our planet.

The typical businessman may argue that time to market, agility, and ease of development are more important than CPU time. But, there is a hidden tax: any time one of these massive monolithic frameworks is employed (I'm looking at you electron), excessive amounts of carbon and fossil fuels are being deposited into our atmosphere. Will the company pay any taxes to offset their carbon? Will they plant trees?

As a programmer, you are the last bulwark against irreversible damage to humanity's home. It is your duty to inform and explain the impacts and costs associated with building atop inefficient platforms. A short term gain now (possibly releasing a product a month earlier), against long-term damage against the ecosystem (guaranteed). You have to make the case clear. Illustrate exactly how much carbon impact a particular platform or technology may make.

I can't convince my managers, can I still help?

Of course you can! There are plenty of ways that you can help. You can begin by spreading awareness to the issue. You can make it part of your ethos and your integrity as a programmer to write more efficient code. Whenever you write some elegant, efficient piece of code and some other developer reuses it, you've again, multiplied your impact.

Small changes in efficiencies throughout a code-base can mean huge overall changes on application, and environmental performance. So, do what you can, where you can, and together we can make a huge difference.

Final Thoughts

I am not advocating complete obfuscation and optimization in the sake of performance. I am advocating a lens of responsibility that we must use when assessing a technology. The energy impact and usage of computers is too great to ignore. If we were to treat compute power as a precious resource our computers would have longer lives, burn less energy, and make the world a lot cleaner.