There are so many big problems the world faces today. We hear about them in the news every day.
You want to do something good in the world. You want to make a change. But you like building software.
What can a software developer do to make the world a better place?
Probably most of humanity had big problems in their time. In some way or another we might always fight for survival, for our existence. Uniquely nowadays is the global scale of our problems. The challenges we are facing have never been more complex and as part of our information-driven society the media constantly keeps reminding us of the threads we are facing. At the same time our abilities and the reach of our actions has never been greater.
I mostly see three obvious challenges nowadays:
- Keeping the global human society in order to prevent fatal conflicts between different groups of humans. Even with free and diverse societies we need to find ways to solve conflicts peacefully. Modern warfare has advanced to a point where any wrong action could make the whole planet uninhabitable.
- Finding ways to control human health and prevent epidemics. We still understand surprisingly little about the biology we are made of. A single virus could wipe out all of humanity.
- Managing to live in harmony with our environment. The impact humans have on the planet has become so big that we have to find ways to keep our planet's ecosystem in balance. We need to find sustainable ways to deal with carbon emissions, air pollution, energy consumption, waste, water pollution, food production and many other issues.
The most frightening thing with these issues is that they seem too big for anyone to solve and it is difficult to even know where to start.
John Kay has some great advice for achieving complex goals:
But how can software help approaching these problems?
These issues seem to be only solvable by politicians and policy makers, scientists and engineers, company managers and journalists.
And this, I think, is the key:
I don't believe software can change the world. Humans can. I think our role as software developers is to support the ones that can make a change. We build tools and platforms to enable others.
If you are building software and want to tackle critical issues, ask yourself who you are building software for. Think about how you can enable others.