Software development is not easily linked to sustainability – IT is a high growth, high energy business and is about as far away from being truly sustainable as we can get. And yet in the case of modern software systems, as in the case of sustainable development, we often face a task that is difficult to fully understand or specify at the start. In software development, agile methods are adopted to address this complexity. Does this provide us with any lessons for sustainability?
I work as part of the software development team at a large university in Australia. After many years of working with a traditional ‘waterfall’ development methodology (first write the requirements, then the design, then all the code, then test it and finally release), we are finally making the first real steps towards an agile development approach.
In agile development, only the core basic requirements of the system are identified at first. These are then developed with a lot of direct interaction between the software users and the software development team. Each iteration is small and each time a running application is produced. Initially it may not do very much, but the result is self correction of software bugs and unknowns in what the users and clients actually want.
This approach will be very suitable for efficiently building a lot of our software applications. We usually have a diverse range of stakeholders and don’t have a good idea of exactly what we need to develop at the start. In the past we have often ignored this and have found that as projects run and the requirements become clearer, a significant portion of application needed to be rewritten – or worse, unacceptable compromises needed to be made so that the project could be delivered.
This type of software development can be described as a ‘wicked problem‘, as it is not possible to fully specify what is required at the start and there are many complexities in ensuring that the whole problem is solved. In the past some of these projects have turned into super wicked problems – there was additionally not enough time to complete the work and the project stakeholders and developers started to contribute to the problems.
It occurs to me that in this sense sustainability is also a wicked problem. While it is possible to ascribe some vague attributes to being sustainable, it is not possible to fully plan what needs to be done to move to a sustainable society – not in a way that all would agree with and that could in fact be delivered.
Many people lose hope in regard to building a sustainable society. They see the impending climate issues, pollution, resource shortages and population explosion – and give up. It is not a problem that can be solved in one go. We may need to regard sustainability in the light of a more agile approach – to work in an iterative process of many small steps that is self correcting. Perhaps this way it will be possible to make positive steps forwards. Perhaps that is already what we are doing?