proj-oot-ootDesignPhilosophyNotes1

One way of using the words "complication" and "complexity" is that complication is mere quantitative increase in informational clutter, whereas complexity is something that requires qualitatively deeper thought in order to understand it/work with it/solve its problems (note to self: this is a sort of hyper/meta distinction). In a design context, some amount of complexity is inherent in the problem; the inherent problem complexity is inescapable so one should not try to find a solution that isn't itself complex enough to address the inherent problem complexity. This is not to say that one should attempt to estimate the complexity of the inherent problem complexity, and estimate the complexity of the solution, and try to match them (that would be cool, and works sometimes in math, but this domain has not been sufficiently formalized to allow the application of those kinds of methods); rather, it is saying that although unnecessary complexity is often bad, it should be forgiven if the solution complexity is necessary to deal with the inherent problem complexity.

There is a debate about the treatment of solution complexity beyond what is necessary. Some say that any complexity beyond what is necessary is bad. Others say that in some circumstances, some unnecessary complexity is justified in order to buy expressive power, even though in other situations unnecessary complexity is all bad (a criticism of this approach is that it seems to be hard to tell in which circumstances expressive power can justify complexity).

I am of the view that expressive power can sometimes justify complexity (but yes, some amount of judgement/taste is involved in order to choose when).

I am a fan of the approach that defines: expressive_power = expressiveness / complexity

and then says that only those few features which have the greatest incremental expressive power are justified (incremental_expressive_power = expressive_power2 - expressive_power1). This is in some ways close to minimalist (we are trying to keep the number of features waaay down, although not to the absolute minimum). On the other hand, it does permit the introduction of features even if they introduce complexity which is unnecessary, in contrast to some other approaches which flatly demand, "No unnecessary complexity".

---

incremental_expressive_power

expressive_power2 - expressive_power1

expressiveness2/complexity2 - expressiveness1/complexity1

(expressiveness2*complexity1 - expressiveness1*complexity2)/(complexity1*complexity2)