I had a conversation with Jon after Steve’s talk yesterday. Here’s the gist of it. The disagreeable parts are my unfounded opinions. The reasoned, intelligent stuff is Jon’s.
First: Climate change is a big problem. We have many possible activities which could help. Most of them are distractions because they could never solve the big problem.
Imagine I ask you to move a handful of dirt across a garden. You would pick it up and move it with your hands.
Let’s say I ask you to move a few kilos of dirt across the garden. Then, you might move it one handful at a time. It would take all day, but it would get you there. If you were impatient, you might step back and look for new tools. Perhaps you would go out to find a shovel and move the dirt one shovelful at a time. Or maybe you would use a wheelbarrow.
What happens if I ask you to move a mountain? It is true that moving dirt one handful at a time is progress. But it’s obvious that it will never get you there. If you try to move the mountain one handful at a time, you waste your energy and time. You’ll be forced to step back and think about the problem. You couldn’t do it with a shovel. You couldn’t do it with a wheelbarrow. In fact, you couldn’t do it with any tool currently in existence.
If I asked you to move a mountain, you would need to invent entirely new tools. You would probably need to create an organization to manage the effort of designing the new tools and putting them to work.
If moving the mountain were really important, you wouldn’t want to waste any time on solutions that won’t solve the whole problem. You would want a strategy and a systematic approach. You would create a system that explores potential solutions, evaluates them, and improves them.
My first point is that the scale of the problem is so large that most proposals will be essentially useless. We need systems designed.
Steve asks, “How can we as software engineers help?”
We are specialists at managing complexity. We have techniques and notations for eliciting and modeling requirements. We architect, test and debug large systems. We create abstractions. We are systematic thinkers. Software engineering researchers are increasingly familiar with empirical approaches. We have large libraries of general approaches to problems: Branch and bound, genetic algorithms, searching, machine learning and so on.
We can apply these skills to the design of systems (or meta-systems). There are analogies between software design and organizational design. We should exploit these and apply every tool in our toolboxes to building a robust system for addressing climate change.
I don’t think this is too vague. We could start today by calling together requirements elicitation experts and mapping out requirements for climate change change. We could model the artifacts of an organization such as values documents and organizational structure and link these artifacts to the goals they’re meant to achieve. We can specialize business process models.