In the rush to create innovative software, we’ve often overlooked the full spectrum of sustainability. True sustainability in software development reaches deeply into every aspect of a product’s lifecycle. It’s about considering the entire lifecycle of a product—from how it’s designed and built to how it’s used and eventually retired. Oftentimes, we assume the sustainability of a product from one perspective without looking deeply at other layers through which the software affects sustainability.
Consider environmental sustainability in software development. It’s not only about how much energy a piece of software uses while running but also about the broader impact of its associated hardware, from production to disposal. Take your smartphones, for instance. The development and eventual recycling of your devices at the end of their life raise significant environmental concerns like I discussed in my previous blog.
Economic sustainability also isn’t just about turning a profit. It’s about creating systems that provide financial viability across different scales. Consider a mobile app developed to help you track your carbon footprint. For the developers who built the app, economic sustainability means balancing revenue from ads or subscriptions with cost control, ensuring the business thrives without pricing out users. For users like you, it may involve accessing the app without financial strain. On an industry level, the application might have relied on gig workers for data collection and development of the software, paying them low wages and providing no job security. This creates a sustainable economic model for the developers and users but perpetuates social inequality and exploitation for the workers. Can you see how the layers interconnect?
Let’s also look at the social dimension of sustainability. Social sustainability in software extends beyond the software design to affect societal norms and individual well-being. Let’s consider the same app designed to help users track their carbon footprint. On one layer, it might encourage users to make more environmentally conscious choices, thereby fostering a culture of sustainability among individuals and communities. The app could include features that promote social interaction, like sharing achievements or participating in community challenges, which can strengthen social bonds and collective action towards environmental goals. However, on another layer, the app might inadvertently reinforce social inequalities. For instance, if the app requires users to have the latest smartphones or a stable internet connection, it could exclude lower-income individuals or communities with limited access to technology. Moreover, the data privacy practices of the app might disproportionately impact vulnerable populations, who may be less aware of the implications of data sharing and more susceptible to privacy breaches. Gig economy platforms like Uber and TaskRabbit also illustrate how social sustainability can be complex at multiple layers; while they offer flexibility and income opportunities for individuals, they also raise concerns about job security and workers’ rights at larger scales.
In essence, sustainability in software development is multi-faceted and layered. As developers, users, and industry leaders, it’s our responsibility to look beyond the surface and examine the various layers of impact—such as individual users, workers, organizations, and the industry as a whole. Evaluate how your software affects and is affected by these layers at every stage, from design and development to deployment and disposal. By adopting this comprehensive approach, we can create software that is not only sustainable today or on the surface but also supports a better future for all dimensions.
Image by Gerd Altmann from Pixabay