Sustainable development is becoming a topic of discussion in the IT industry due to the software industry’s growing carbon footprint and increasing social responsibility, among other things. Many business and social functions are becoming more dependent on software, which overall increases the industry’s ethical responsibility.
Sustainable software development should take into account not only technical requirements and
sustainable technology choices, but also the fact that testers and developers take ownership for long-term customer satisfaction. In terms of sustainability, one of the most challenging things is adapting to constantly changing customer needs, such as how to prioritise developing features according to customer feedback or changing business needs.
Sustainable software development is literally Compile’s way of working, and it has been the core philosophy of our company’s founders Juha and Mika from the very beginning. That is why we want to highlight the tangible meaning of sustainable software development in our company. Based on our extensive experience, we also take a look at sustainable software development from different perspectives.
In general, sustainable development refers to meeting the economic, environmental and social needs of the present, without the future generations having to compromise on their own needs. The requirements for sustainable development will be examined in the following areas (Goodland, 2002):
- Ecological sustainability (Digitalisation has an enormous impact on the climate)
- Economic sustainability (What solutions are economically sustainable and cost-effective for customers)
- Social sustainability (What impacts do IT solutions have on society)
- Human sustainability (Continuous, life-long development and well-being of the individual)
However, researchers (Penzenstadler & Femmer, 2013) believe that these four areas do not provide an opportunity to look at software development in terms of the sustainability of technical systems. That’s why they’ve added a fifth area to study software development and the IT industry:
- Technical sustainability (Long-term use of systems and ability to develop them in accordance with changing circumstances and requirements)
Software development is therefore sustainable when the negative direct and indirect effects of software development and use on the economy, people, society and the environment are minimal and when long-term use and development of software in accordance with changing circumstances and requirements is possible.
IT industry’s unsustainable carbon footprint
The software industry has a responsibility to be aware of its environmental burden. US researchers estimate that by 2020, the IT and communications sector will create 3.5% of global climate emissions, and by 2040 the ratio is estimated to already be 14%. In an interview, as early as in 2013, by the Finnish national public broadcasting company, Yle, Professor Jukka Manner estimated that the ICT industry had already accounted for 10% of British electricity consumption in 2007, and that the industry is rapidly overtaking the much-disputed aviation industry in terms of emissions levels.
Digitalisation is constantly increasing the amount of data. For this reason, more hyperscale data centres are also required, and the biggest instances worldwide would consume the same amount of electricity as one whole country. In Finland, this is mainly Google’s data centre in Hamina. Norway, for its part, has already set a good example for the Kolos data centre that is under construction. It is aiming to be the world’s largest data centre that fully uses renewable energy. Such solutions for data centres are increasingly needed, for example, as new technologies (data mining for cryptocurrency, machine and deep learning, IoT, robotic process automation) become more common, which has only recently been made possible by the 5G network. The 5G network has ten times the capacity to traffic data compared to the 4G network.
Large global cloud service providers are actively working to reduce their carbon footprint. In its 2018 environmental report, Google announced that it would cover 100% of its electricity consumption with renewable energy purchased on the market. Amazon, on the other hand, says that AWS generated more than 50% of its services last year with renewable energy, but the company has committed to a 100% target. However, local actors still have a lot of room for improvement in this regard. In many situations, the most environmentally friendly choice is not always the most cost-effective one, in which case the financial decisions get the upper hand, especially when it comes to customer work. When it comes to sustainability, however, organisations can first take small steps internally and move towards setting an example for the customer.
Customer’s finances are not the resources that should be used for testing
Financial sustainability refers to solutions that are cost-effective for customers. The customer’s budget should not just be experimented with, but the tools and solutions that genuinely best suit the customer’s operating environment should be selected. Developing features sustainably involves progressing in small sections (in the spirit of Minimum Viable Product) and allocating moderate resources to the near future instead burning money on IT projects that go on for years.
It can therefore be said that some projects should not be launched at all. In these cases, we use unnecessary resources and create code without even knowing what outcome we are looking for. Trust, transparency and sustainability thinking are especially important in defining the basis of operations between organisations and IT suppliers.
Management systems should also support sustainable economic development. The management parameters should be set to be able to make progress with small agile experiments instead of allocating development resources far into the future. This ensures that we can focus on the right things. Projects often face major challenges due to conflicting goals at different levels of the organisation. These objectives should be harmonised and united on a sustainable basis.
Software industry’s great social responsibility
Social sustainability means maintaining social capital. Social capital is the investments in the matters that lay the foundations of our society. Social sustainability reduces the cost of cooperation and improves its conditions. Mutual trust between different parties, on the other hand, reduces commercial costs. (Goodland, 2002.)
The software industry has a growing ethical responsibility, for example, from the perspective of candidate selection engine algorithms,data protection and energy consumption. Some companies already use corporate social responsibility reports, but how could the software industry take better account of this growing responsibility?
Microsoft’s Jeffrey Snover suggests that the following CSR issues should be considered in software development projects:
- Does the solution improve people’s quality of life?
- Could the solution be misused for something unethical?
- Which user groups are excluded?
- Is what we do ethical?
- Is what we do legal?
Technical sustainability is built through people and culture
Human sustainability means maintaining human capital. It includes health, education, skills, knowledge and leadership. Investments in the teaching, health and nutrition of individuals have been integrated into economic development and its sustainability. (Goodland, 2002.) In software development, this may concern, for example, cooperation between development teams and well-being at work, i.e. how employers treat their employees or how employees take care of themselves.
Software needs to be built and maintained so that developers and product development teams can be satisfied with their work and working environment in the long term. The working culture should be based on expert and customer cooperation so that all parties receive the support of a community of professionals. One of the best practices of such a methods is DevOps modelled software development and the working culture it creates.
A common human-oriented sustainability problem is also developers’ unrealistic time management. This can happen when the schedules created for development sprints are too tight and quality suffers as a result. The pressure to launch a product may take focus away from careful code review and testing as businesses are served by launching new functionalities at a rapid pace.
Although the challenges in time management and the management of business requirements take time away from technical sustainability, in most companies the problem lies in the culture. Efforts should always be made to create an internal culture that focuses on improving quality. This includes continuously improving the team that makes the software and its competence, motivation and tools. The effort to support the high-quality work and well-being of the teams requires a sustainable organisational culture around them that fosters continuous improvement and provides sufficient resources and support for development.
Without human-oriented culture, there are also no prerequisites for technical sustainability. With regard to technical sustainability, for example, the following areas (Penzenstadler, 2013) should be taken into account:
- Development methods and processes
- Maintenance processes
- System production
- System usage
The code’s continuous improvement is essential for development: the architecture and transparency of the code must be continuously developed to adapt to changing needs and characteristics.
It is also important that customers are encouraged to improve development tools and methods so that technical debt and bugs do not end up in version control and production. Among other things, this includes extensive automated testing of the code, as well as inspections involving the entire team, where the problem areas are genuinely highlighted. These measures can improve quality, reduce regression and speed up production, in other ways ultimately save mental and natural resources and money.
The purpose of this article was to provide an overview of what sustainability is, what challenges it has the IT industry, and how the software industry could respond to its growing responsibility in both technical and human-oriented sustainability. In the following articles, we discuss the culture of information and sharing in successful software projects, tool and technology choices that are technically sustainable, and responsible customer work, among other things.
Goodland, R. (2002). Sustainability: Human, Social, Economic and Environmental. Encyclopedia of Global Environmental Change: Social and Economic Dimensions, 5, 489–491.
Penzenstadler B. (2013). Towards a Definition of Sustainability in and for Software Engineering. Proceedings of the 28th Annual ACM Symposium on Applied Computing, 1183–1185.
Penzenstadler B., & Femmer H. A. (2013). Generic Model for Sustainability with Process and Product specific Instances. Proceedings of the 2013 Workshop on Green in/by Software Engineering, 3–8.