A starter kit for building climate friendly software
3 minute tour of key online resources that will help you be a carbon cutting, page speed racing, climate friendly dev.
Table of contents
No headings in the article.
When you think about climate change, it's easy to feel fatalistic. Then again, fatalism comes easy to anyone who has had to start a new dev job, looked at their new codebase, and found themselves staring at the Big Bad Ball of Mud.
And when you read more about the connection between web development and climate change, it's easy to feel not just fatalistic, but guilty, seeing as the code you continuously deploy into the wild, the apps you lovingly (or frustratingly) maintain, the servers you consume, when added to the work of all your peers, account for as many CO2 emissions as the whole of aviation industry!
Everyone tells you to cut down on flying, but who tells you to cut down on <video>
tags?
Still, we're not fatalists, we're software engineers: problem solving is what we do. Every week we get to feel like crime scene investigators, obviously doomed idiots, and certified geniuses, twice over. In a single day.
Being responsible for so many emissions, counter-intuitively also gives us an extraordinary opportunity for postive inpact.
Given the scale of much of what we work on, if just a small percent of us commit to a green web, our impact on emissions could be exponential.
Still, if you're like me, you may be willing, but not know how to start. Green web patterns are not yet regularly discussed in the spaces where devs can be spotted in the wild.
So here are some resources that might help get you started.
The green web journey began for me when I stumbled across this fantastic blog post by Phil Sturgeon of Build APis You Don't Hate fame.
This led me to the awesome earth collection, a catalogue of all the tools and ideas you might want to start with.
Soon after, I was invited to organise a panel and present at COP26+ on Engineering and Climate Change: Remaking the Future at the invitation of the International Environment Forum.
The experience made me aware of the power of engineering communities to both inform, and motivate, and I set about looking for the best one in the tech space.
I am confident I found it in ClimateAction.tech. They have built a fantastic and impactful green tech community, including many of the pioneers and leading voices in the green software movement.
From their website you can join the Slack group which is probably the best single place to keep track of developments, network with fellow travellers and ask questions.
Other good resources to get started are:
The Green Software Foundation and its podcast, Environment Variables
Gaël Duez' podcast Green I/O
The Well Architected Framework's Sustainability Pillar
As to the skillset involved in environmentally aware software, I suspect you'll find you already have a strong foundation.
It just so happens that what's required for green tech is exactly what's required to reduce costs, cpu usage, improve speed and user experience in any web application! These should be part of the arsenal of any experienced engineer, and part of the journey of every committed junior one.
- Move your application to a (greener) cloud provider/zone
- Make your content delivery as local to the client as possible (e.g. via CDNs)
- Minimise your page loads and data consumption by targeted caching strategies using service workers
- Design your APIs to minimise http requests and data exchanges
- Optimise your images and reduce the javascript and in general the data you send to the client front end, by minification and exclusion.
You may not have thought about the emissions side too much to date, but I suspect you already know a thing or two about performance optimisation, api design, caching, and graceful degradation.
Which means you're set to go on your green journey, equipped with a community, good resources, and your own accumulated, growing skill.