Sunday, May 2, 2010


Creating the right mental model is key to solving a problem. Identify and classify the forces involved. Gain some intuition in areas little understood by mapping them to those more mundane. While watching Stephen Hawking's wonderful 2hr special on the creation and destination of the universe, I speculated about some of the problems we must solve to maintain our species indefinitely. It takes no effort to see that energy and climate control will need to be mastered. But closer to home, I see another effort that will have a big impact on our continuity.

In many ways we are defined by our tools. From stones to the printing press, each new tool has effects that reverberate through our society - pushing us slowly forward. What tools will we need to solve these problems of the future? We have some of them now. But they are grossly inadequate when compared to the scale of future endeavours. We need the correct model of the problem. We need to classify the forces.

In computing environments, we use code to express symbolically a simplified model of empirical observations. Occasionally we see deep enough to encode the root behavior in an expressive way that scales. More often than not, we do not have the continuous concentration required to hold the entire problems in our heads. So we break apart the design and implement it in stages. Even so, it's difficult to build even the things we can comprehend, let alone the things we can not. We require the end goal to see our way. Many times we are forced into the darkness with only a fuzzy view of the outcome. We know it must be possible. But the specifics escape us. We are not good at visualizing all the interactions of a large problem. We are good at solving what we can fit in our head. However, as systems grow, it becomes harder and harder to fit the entire set of interactions in our head. We create a mental model that is fuzzy on the edges, and only clear where we focus.

Working on a large software team, I see the problems of scale. There is a strong force of entropy that slowly tears appart our creation. As we add behaviors, the interactions become more and more complex as they integrate with previous behaviors. New unexpected consequences emerge. It is difficult to manage the complexity. It's easy to see that larger and larger efforts need a stronger force acting against the entropy. The human mind will need more assistance. We will need to build systems which work with us to express our ideas, and manage their interaction for us. We will need to learn to write systems which can debug and maintain themselves. Only then can we balance the strong force of entropy that will decay our most monumental computing efforts.

No comments: