Friday, November 28, 2008

Adressing Complexity......

Hard stuff usually boils down to some sort of "handling complexity" problem - ending up at some of the following categories :

a) Computational complexity
- a computationally hard problem => search for cleaver solution, if not , ideal approximation
c) Scale complexity
- problem on a scale order of magnitude larger than imagined => figureout how to scale, how to cut corners
b) Communication complexity
- it's hard to separate problem into pieces => cannot be either paralelized in computational sense , or - cannot be distributed to number of engineers and obtain speedup => redefine the problem ? redefine notion of communication ?
c) Description complexity
- it's hard to describe a problem - is it the problem itself ? or the paradigm used to represent it ? => search for the optimal paradigm ?
d) Representation complexity
- again -> once described, we need a ideal way to represent the problem and manipulate it => ongoing search for optimal representation

This does not only hold for some large-scale-woo-zam projects. If adressed correctly - we will face these issues even in the most trivial projects. What is needed is identifying the complexities we're facing with, and actually redefining the problem itself in the way that will help us adress the complexities more easily. This would yield a completely different perception of the issue - and , indeed, result in far more quality solution that the one obtained by rope-and-the-stick approach.

Finally - this gives a simple rule of a thumb for evaluating work presented - if you cannot identify any of the complexities in it - then it's definitely not something worth wasting time on (but if you really have to - try to add some of your favorite complexity artificially ;) - will make work more fun :) )

No comments: