Refactoring Civilization

Mayan ruin in Tikal, with jungle

I recently read Clay Shirky’s eloquent article The Collapse of Complex Business Models. Shirky summarizes Joseph Tainter’s The Collapse of Complex Societies, relating societies to businesses.

According to Tainter, Jared Diamond, Ran Prieur, and many dystopian science fiction writers, when societies shed complexity, it happens in a catastrophic fashion. As part of the science fiction book The Caryatids, set in 2060, Bruce Sterling tosses off the fact that to reduce its complexity, China killed off 500 million people – mainly its old and infirm. Other writers imagine chaos, war, and burning cities.

Software programs have many of the problems Shirky mentions in his post:

In such systems, there is no way to make things a little bit simpler – the whole edifice becomes a huge, interlocking system not readily amenable to change. Tainter doesn’t regard the sudden de-coherence of these societies as either a tragedy or a mistake—”[U]nder a situation of declining marginal returns collapse may be the most appropriate response”, to use his pitiless phrase. Furthermore, even when moderate adjustments could be made, they tend to be resisted, because any simplification discomfits elites. When the value of complexity turns negative, a society plagued by an inability to react remains as complex as ever, right up to the moment where it becomes suddenly and dramatically simpler, which is to say right up to the moment of collapse. Collapse is simply the last remaining method of simplification.

(via John Robb)

But there are other ways out of this mess. Software developers have a technique called refactoring that is often used to combat complexity.

Left unchecked, each modification of a program moves it toward more complexity. But good programmers keep cleaning house – every so often, you need to go in and purposefully reorganize, eliminate cruft, and simplify. Refactoring reduces complexity of software without adding anything new. Often it feels good, since achieving a new level of understanding lets you do the same task in a much simpler way – or a new perspective lets you combine several similar things into one simpler piece of code. And sometimes it’s painful – understanding a mess of complicated spaghetti code is hard, and finding new solutions is often even harder. But without it, you end up with a big ball of mud that will collapse eventually.

Turning a working program that uses the “big ball of mud” design pattern into a something that’s simple, supple, and easy to change – well, that’s an art. It’s especially hard when there’s a lot of money running through your software, like the program I work on at Grameen Foundation, Mifos.

Though Shirky doesn’t say it, business as a whole does have a way of reducing complexity without systemic collapse – via disruptive innovation. Disruptive innovation, as detailed in Clayton Christensen’s book Innovator’s Dilemma is actually a non-violent process. Companies may go out of business, but no one loses their life.

The problem with complex societies is that the collapse of civilizations has been violent. We need ways to simplify without causing violence, or starvation, or mass suffering. One way is via business model changes – Paul Hawken, Amory Lovins, and Hunter Lovins say in their book Natural Capitalism that ecological companies will win out over those that aren’t ecological. Another is via other movements, such as the huge do-it-yourself movement (popularized by Make magazine and Cory Doctorow‘s book Makers). When you can print out or machine complex industrial parts in your garage, and sequence genes and make transistors at home, you don’t need huge factories anymore. That’s refactoring industries.

So how do you avoid war, famine, and chaos? One way is to reduce population. Curiously, a really great way to do that is educate girls and women, and raise peoples’ standard of living – in other words, eliminate poverty. When people are not poor, they have fewer kids. Fewer kids means fewer people consuming fewer resources. So eliminating poverty is one way of refactoring society. The sooner we can do that, the less risk of a whole-society crash we will have.

Another might be another idea from Bruce Sterling’s Caryatids, the rise of global civil societies, organizations that take care of people the way governments do now. Another is Paul Romer’s Charter Cities, a 21st century version of the Hanseatic League – where nations team up to create new city-states that can reimagine the social contract for people in their supply region.

These are all innovations. That’s what I think Ran and many “pro-crash” writers miss (such as the Archdruid)- it is possible to innovate our way out of trouble, if we can see the complexity and reduce it fast enough. Our economy isn’t based on energy anymore – it’s based on information. And with economies based on information, you can change all three sides of the cost-time-quality triangle, not just two sides.

I get angry when I see us being mediocre – accepting war, violence, starvation, oppression, ecological devastation.

As with big-ball-of-mud software, we have to think big – if we don’t think big, people will add complexity faster than we can take it away. So that’s why I’m interested in greatness – how to get teams of people, and teams of teams, and even larger groups, thinking big, and acting effectively at that scale. We need to ship big, great innovations. We need to think big to refactor our civilization, to reduce its complexity in a non-violent way.

Be awesome!

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">