Sustainable development is becoming a topic of discussion in the IT industry due to the software industry’s growing carbon footprint and the increasing social responsibility, among other things. Many business and social functions are becoming more dependent on software, which increases the industry’s ethical responsibility overall.
Sustainable software development should not only take into account technical requirements and
sustainable technology choices, but also the fact that testers and developers take ownership of 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 (The climate impact of digitalisation is huge)
- Financial sustainability(What solutions are financially sustainable and cost-effective for customers)
- Social sustainability(What impact does IT solutions have on society)
- Human sustainability(Continuing life-long development and wellbeing 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 already estimated to be 14%. As early as in 2013, in an interview by the Finnish national public broadcasting company, Yle, Professor Jukka Manner estimated that in 2007, the ICT industry already accounted for 10% of British electricity consumption and that the industry is rapidly overtaking the much-maligned 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 there to be used for testing
Financial sustainability refers to solutions that are cost-effective for customers. The customer’s budget should not be experimented with. Instead, 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 of 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 resources in vain and generate code without even knowing what outcome we are looking for. Trust, transparency and sustainability are especially important in defining the basis of operations between organisations and IT suppliers.
Management systems should also support sustainable economic development. Management parameters should be set in such a way that progress can be made with small agile experiments instead of allocating development resources far into the future. This ensures that we can focus on the appropriate things. Projects often face major challenges due to conflicting objectives at different levels of the organisation. These objectives should be harmonised and coordinated 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.)
From the viewpoint of election algorithms,data protection and energy consumption, software industry has a growing ethical responsibility. Some companies already use corporate social responsibility reports, but how could the software industry better consider 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 wellbeing at work, i.e. how employers treat their employees or how employees take care of themselves.
Software needs to be written and maintained in such a way 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 cooperation between experts and customers so that all parties receive the support of a community of professionals. One of the best practices of such a method is DevOps modelled software development and the working culture it creates.
A common people-driven 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 of supporting the high-quality work and wellbeing of the teams requires a sustainable organisational culture that fosters continuous improvement and provides sufficient resources and support for development.
Without a people-driven culture, there are also no prerequisites for technical sustainability. With regard to technical sustainability, the following areas (Penzenstadler, 2013) should be taken into account, among others:
- Development methods and processes
- Maintenance and testing policies and processes (Maintenance process)
- System production
- System Utilisation
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 its challenges for the IT industry are, and how the software industry could respond to its growing responsibility in both technology and people-driven 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.
Learn more about Compilate | An experienced software developer – apply to work for us! | Software consultancy