Saturday, March 05, 2011

The Conundrum of Deconstructing Complexity

Programmers will know what I’m talking about.

When you have a complex piece of code written by someone else, sometimes you intuitively know how it must have been coded. But if you actually start to read through the code and understand it line-by-line you get overwhelmed. You can get to the point where you simply discard the original and write it again. You might use a different approach, but you know you can get the same end result or something very close to it.

It is sometimes that way in life and at work. Something happens and you try to understand it, deconstructing it to its core and trying to arrive at the underlying factors which led to it but it gets very complicated. So you try and try and decide that it is too complex and that therefore it cannot be understood.

But if you stand back and look at it again from the point of view of replicating it rather than understanding it, it becomes ridiculously simple.

In such cases, it is easier to just start from scratch and do it your own way to reach the desired goal rather than trying to follow the exact path that someone else took. Sometimes complexity can be reduced by not trying to understand everything.

To quote from Braitenberg, this is the principle of “downhill invention versus uphill analysis; meaning that it is much more difficult to try to guess internal structure just from the observation of behavior than it is to create the structure that gives the behavior.”

No comments:

Post a Comment