November 24, 2006
Complex Systems: Where does autism come from?
I was just reading an article on Autism, which talked briefly about all of the many theories as to what causes autism. What makes finding a cause so difficult is how different people's symptoms are. Now they believe there are probably many types of autism. They've linked certain genes, they've linked environmental factors, they've linked lots of things, but none of them have proven to be causal.
This morning I saw the movie Happy Feet, about penguins. Long story short, one of the penguins, an outcast because he can't sing, goes in search of where all the fish have been disappearing to. Of course he finds it is humanity that is exterminating the fish.
What do these two stories have in common. Well, they got me thinking about the problems of medicine and environmental concern today. It continues to become clear to me how the problems I face on a daily basis in software design are mirrored in the medical and environmental sciences. The problem is complexity.
I went looking for, but can't seem to find, this quote I saw in a book about complexity. Some algorithm or phrase which explains how increased complexity exponentially increases the risk of unintended behavior. In my work, I maintain and insanely complex system. Worse still, we are constantly adding complexity. There is value to simplicity. There is a rule in software development that the system isn't done until there's nothing left to take away. This is echoed in Einstein's quote, "Everything should be made as simple as possible, but not one bit simpler."
Then there's Gall's_law, "A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system."
So what's the problem with Complex Systems? The problem is, the more complex a system gets, the more unpredictable the interaction of the individual components becomes. Predictable is the key word. It doesn't mean complex systems all fail, but it does increase the risk. I see this daily in my work. We have lots of tests to make sure all the components of the system are working, but problems still arise. The truth is, we could have an infinite number of tests and problems would still arise. That's because there is a nearly infinite number of combinatorics of how each of our subsystems can interact. At least once a week we see a scenario like this.
Something is wrong, but we don't know what. The only reason we know something is wrong is because the metrics we use to measure our business are off. So we go in search of that something. It's rarely obvious. Sometime between a day and 2 weeks, we figure it out. Once we know what's wrong, we have to figure out why its wrong and how to fix it. This process itself can take a day to 2 weeks. It's never obvious either. It's rarely obvious because most of the time, every single component in the system is doing exactly what it's supposed to. We can test each component and verify it's behaving exactly the way we expect it to. Either one subsystem has a little problem which causes a cascading affect, OR there was an input to a single system which, even handled the way it was supposed to, caused a subtle change which rippled throughout the system causing the negative end result. In my work I've spent two weeks searching for why the dates in an application were wrong only to find that buried in the code was a variable set to "1" and when I set it to "0" it worked again. I never knew why it worked again, though I could tell that the variable needed to be changed every year. I'm sure I could have discovered why, but after two weeks, I just wanted to get it to work and move on. That was in one application. I work in an environment where there are thousands of applications interacting towards a narrow conclusion, compounding the problem greatly.
Back to autism and the environment. We inhabit an extremely complex system. This system is based on many smaller complex systems. The human body itself is a complex system made of smaller complex systems. The brain itself is a comlpex system made of smaller complex systems. The environment that sustains us is itself a complex system made of many complex systems. In fact, our relationship with our environment is its own complex system. "Tightly coupled" as we'd say in software design. One of the consequences of tight coupling is that changes on one system can and most likely will affect the other 'coupled' system.
I'm going to shift back to software development for a second. The company I'm working for has embarked on a HUGE effort to launch a parallel colocation facility in another state. As I mentioned, we have a very complex system. Replicating that system is no easy task. You'd think it would be a matter of just copying each component and putting it in the other facility. The truth is, we don't really have a good handle on how these systems interact... not until a problem arises. So this exercise has been one of putting it together to where we think it should work, turning it on, seeing what blows up, and fixing it. The thing is, the systems are so complex, fixing it VERY often breaks something else. One component talks to another component THROUGH a third component. This communication isn't working well, so we remove the middle component that wasn't supposed to be doing anything in the first place but passing messages along. A day later something else breaks seemingly COMPLETELY unrelated. Turns out due to complex interactions, some subtle difference meant something nearly unrelated DID break by the first change.
Back to the environment. Since the industrial revolution we have been attempting to improve upon the complex systems in which we rely. At first we made minor tweaks, but as we became more brave so did our reach. We'd come up with a new chemical to do something more efficiently or effectively than something already done in nature. What we don't realize is that, even if the chemical we make is PERFECTLY safe by itself, it changes other interactions around it. It subtly changes the inputs into other systems causing a cascading affect. Make 2 subtle, seemingly unrelated changes, and their cascading affects will eventually connect further down the line creating a third unpredicted and unpredictable change in the system.
That is the answer of where autism comes from. Autism comes from unintended interactions in changes we've made to our environment. All factors play a role. Genetics AND environmental. There is no one cause. It could have been 10 subtle changes we made over the course of 20 years that caused autism rates to soar 40 years later, after those interactions finally met, mixed in our genes, mutated, and became an accepted neurological condition.
This also explains why causes are sometimes definitively found and later renounced. The systems are so complex one might find causes which assume outputs of other complex systems only to find the output of the systems THOSE systems are made of play individual roles which vary.
That's not to say we might not someday find a cure to autism. It's also possible our cure might cause other problems later. It probably would have been better if we had never started mucking with the systems in the first place, but its too late to go back now. We have no idea what we've done or how to undo it without causing more damage. As a consequence, we will be forced to continue to modify these systems to deal with bugs caused by prior modifications. I predict that is where science will go. Science will turn from trying to improve systems to merely trying to stabilize them.
I wonder if we'll ever succeed.
Posted by wonko at November 24, 2006 06:39 PM
TrackBack URL for this entry:
Post a comment
Thanks for signing in, . Now you can comment. (sign out)(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)