If you live on planet Earth, you have heard about sustainability. A lot. And you probably have some idea of what it is – probably related to CO2 emissions or energy consumption. Your are right. But it is also more! And sustainability is very relevant in the field of software engineering. But let us takes two steps back.
Sustainability is the capability to endure.
A commonly accepted definition of sustainability is:
Sustainability means meeting our own needs without compromising the ability of future generations to meet their own needs
World Commission on Environment and Development. Our Common Future. Oxford University Press, ISBN 9780192820808, 1987
Sustainability for any (technical) system is often defined as the capability to endure. If we build something today, it should last for a long time and not have negative effects in the future.
Sustainability has different dimensions to it.
Reducing CO2 emissions is important. But there are other very important aspects of sustainability. There are three generally accepted dimensions of sustainability: environmental, social, and economic.
For technical systems – such as a piece of software – we use the definition by Duboc et al, which encompasses 5 dimensions:

Here are some examples to make these concepts more concrete:
- Optimising nightly builds and tests has an impact on the environmental dimension because it saves electrical energy.
- Allowing the development team to participate in important decisions (as in agile development) has an impact on the social dimension.
- Automating repetitive tasks is an investment that reduces expenses in the long term, thus impacting the economic dimension.
- Making all dependencies to external libraries explicit allows the team to quickly react to vulnerabilities in these libraries, which impacts the technical dimension.
- Tailoring the development process to accommodate the needs of individual contributors helps preserving their health, thus impacting the individual dimension.
Summary
Sustainability is an important concept in software engineering. It helps teams to build efficient systems at high quality that meet the needs of the customers. Over a long period of time, the software can be efficiently maintained and the team members have the opportunity to learn and stay healthy.
After this short introduction, please read the other articles on this page for more details.