Saturday, February 23, 2013

Systemic Breakdown

One of my favorite parts about building software is that I am free to indulge my endless curiosity. I prefer to dig deeply into the domains I’ve tackled so that I can tailor my solutions to actual problems, not just the high-level perception of them. The world is wonderfully complex place and it can be fascinating to delve into the details and underlying history. 

To really solve a person’s problem with some code running on a computer you have to understand the root causes. A 10,000 foot view is just too high to grok the details, which often become counter-intuitive as you descend. As I've switch from domain to domain, I've obviously found huge differences between the issues but I’ve also found many underlying consistent patterns.
For this post I thought I'd pull back a little and discuss one of these larger veins running through much of my work. I’ll pick a very abstract example, but only because I prefer not to antagonize both my past and future employers.

We can start with the distinction between formal and informal systems. Formal systems are such because the underlying rules are rigid. All things must follow the rules (or they are invalid and no longer within the system). A few examples are mathematics and running software programs.
Informal systems on the other hand often involve people, although not always. The rules are mostly followed, but there are always exceptions. Informal systems are not rigorously constrained. There are a huge number of examples of informal systems, but any sort of social interaction -- companies, governments, etc. -- form the basis of many of them. Basically all you need is some 'objects' (entities, nouns, etc) and a set of rules that are applied to them.

For an overly simple example I keep coming back to cars driving on a highway. The underlying road supports a number of vehicles that are attempting to get somewhere, each with a unique destination. There are mandated constraints such as following the speed limit and staying in particular lanes. Many highways these days are challenged with a lot of problems: congestion, accidents, speeding etc. They are fairly simple systems, but their behavior is fairly complex.

Because it doesn’t really matter, I’ll focus my discussion loosely around the highways in Ontario, Canada that I drive regularly. Please don’t get too lost in the specifics, I’m only using these examples to illustrate the larger patterns that are common amongst similar and very different informal systems. Cars, rules and roads just help as reference points, nothing more.

A key constraint when driving on the highway is a speed limit. The rules and limits on speeding were set long ago, most likely when cars were considerably less sophisticated. So for instance a speed limit of 100 km/h was probably created long ago as a protective measure to decrease the likelihood of serious accidents. When highways were poorly paved and cars crude, no doubt these rules made a great deal of sense and contributed significantly to the safety of the roadways. These days, for a well-maintained highway, modern cars which handled better are quite capable of navigating the same terrain at a significantly higher speeds. That is, 140 km/h for many drivers in a modern cars is well within their ability to react correctly to hazards, road conditions and other vehicles. Because of this, in Ontario at least, 'speeding' is epidemic. Everybody exceeds what seems like the relatively slow limit of 100 km/h. 

The response to people increasingly speeding was the creation of traffic police whose role is to enforce the rules. We can see this as a subsystem that sprang into life because of a degeneration of drivers in obeying rules like the speed limit (although there are probably many other causes). This new subsystem quickly figured out that ticketing people, beside enforcing the rules, was extremely profitable. And even more profitable if they put less effort into the overall ‘general’ enforcement but instead choose to hang out at inconvenient locations where people tend to speed naturally. Thus ‘speed traps’ sprang up from perhaps rather noble goals, but financial incentives quickly had considerable influence. Once create the local drivers quickly figured out where they were located, so they shifted their behavior to speed only in areas that they knew were safe. 

Summarizing: this informal system rule for speed limits sprang up, degenerated, was buttressed with a new subsystem of ticketing but that too degenerated. The key point here is that when we are analysing the creation of speed traps we need to go beyond just the obvious cause, that more people were violating the speed limit. Getting to the 'root' causes is extremely important in analysing informal systems. It is easy to say that speed limits and traps exist because people are speeding more often, but that's not really capturing the whole picture. Rather the deeper root cause is that modern cars started allowing people to drive at higher speeds. They handle better, have bigger engines and can accelerate rapidly. The root cause for speeding is an advance in technology and that technology was getting applied by a large number of drivers to violate a pre-existing set of rules, which is a downstream consequence.

What's particularly true of informal systems is that their interactions are extremely complex. To fix the speeding problem by just creating traffic police is not enough, and because it didn't really fix the problem the traffic enforcement directives gravitated towards finding their own usefulness (generating money). Thus adding speeding tickets to the overall system did not really improve it in any significant way. Some people probably speed less, but most people are likely to just be more picky about where they are speeding. At various times and locations speeding is reduced, but many drivers are probably over-compensating now for the added inconvenience. People aren't going to stop speeding for instance, and their expectation for travel time isn’t going to change.  

A solution like raising the speed limit wouldn't fix the issue either. The newer cars may allow good drivers to go faster, but highways contain more than just good drivers. They contain many poor ones, without the ability to safely handle higher speeds. It's perhaps this constraint that keeps the authorities from changing the rules. A faster highway might be significantly more dangerous if there are enough drivers on the road that can't react fast enough. So the average or less-skilled driver keeps the status quo intact, but as in the case of Toronto people simply moved forward and start creating their own rules of thumb for how fast to drive. Many in TO believe for example that +10 km/h for the city and +20 km/h for the highway are acceptable. This is so common that in the absence of any traffic police nearby, this is frequently the pace of most vehicles. Thus a breakdown in the informal system causes a creation of another even less formal system built on top.
Informal systems based on people always morph as time progresses. Some systems such as the highways find their own equilibriums by spawning off new subsystems. Some systems fluctuate, but generally drive themselves downward. We know how to make things more complex, but we seem to lack in the ability to reduce complexity. A degenerating informal system can often acquire enough unwarranted artificial complexity that its only path forward is to explode. The issues simply can't be fixed anymore.

The idea of speeding tickets was no doubt someone’s best effort to deal with the speeding problem. But as is true for all complex informal systems, the whole systemic complexity exceeds the ability of most, if not all, people to visualize and correctly modify it. Speeding tickets created speed traps. Speed traps are a rather grey aberration of the laws of highways, since they aren't helping to keep locals from speeding, but rather they are preying on unsuspecting strangers. This causes a hierarchy of drivers, creating a division between 'us' and 'them'. In that sense it is morally questionable, since a civilized society these days demands that the rules are applied equally to all people, not just some. A speed trap functions because it is based on ignorance. Non-local drivers following the normal rules of thumbs are caught simply because they strayed too far from their own locale. Stated that way, the enforcement part of society is actually preying on people for revenue, not to uphold the honor and virtue of the rules. 

If technology got traffic into trouble, it is likely that it will also get it out of it. Automatic driving may allow cars to chain together into larger loosely affiliated trains headed into common directions. If that comes to pass cars will scout for a suitable train, then join up. As that becomes more common, the efficiencies of the highway -- which are poor now and getting worse -- will start to improve creating less traffic congestion. These trains of cars will follow limits set by computers, so speeding tickets and speed traps will become a thing of the past. Of course some people will continue to 'manually' drive, but official enforcement of any remaining rules will likely shift to some other basis, like asserting that speeds of 140 km/h are 'reckless' rather than 'speeding'. The rule remains, but gets generalized to include a wider collection of behaviors.

Informal systems are everywhere. They form the basis of all human organizations and they fracture into an endless variety of associated subsystems. These days computers have made it possible to quickly introduce new poorly thought-out rules and enforce them, so the underlying complexity has exploded. Most large companies, for instance, are so outrageously complicated that no single human could hope to know or understand the basis behind even a fraction of the rules.Thanks to badly designed software and archaic historic rules many of these are in various stages of systemic breakdown, with rules degenerating and inefficient subsystems spewing off everywhere to replace high-level but hopeless directives. Computers have the capacity to solve problems for people, but their dark side is that they can allow for massive increases in artificial complex that can quickly get gouged into the status quo. Ambitious, but misguided people tunnel onto little aspects of the overall problem and seek change, but once the system has gone beyond a human's ability to comprehend, most such changes ultimately make the problems worse not better. 

Getting back to traffic, if someone really wanted to stop speeding and installed a massive number of high-tech cameras to cover every inch of the road, they might think that they'd be able to stop anyone, anywhere, from speeding. But sorting through that footage would be daunting, and just creating the infrastructure to fine and collect all of the tickets would be massive. So, ultimately there would still be blind spots, and over time these would become known. People, hoping to reduce their travel time would fly recklessly through the blind spots because they were forced to slow down once in the spotlight. Then some areas would become safer for driving, but some, well... they'd just push the envelop for danger until they too caused various spin offs. To fix complex system breakdowns the one thing that definitely doesn't work is to narrow the focus down to something believed to be 'tangible'. That type of tunnel vision only begs for disaster.