Essential, accidental and fabricated complexity

August 10, 2009 | 1 Minute Read
This post was originally posted on my old blog.

Programming consists of overcoming two things: accidental difficulties, things which are difficult because you happen to be using inadequate programming tools, and things which are actually difficult, which no programming tool or language is going to solve.

Joel Spolsky

20080118-confusing-street-sign.jpg Recently I realized that there is a third kind of complexity that is especially dangerous:

Fabricated complexity

Fabricated complexity is very similar to accidental complexity, but its worse in the sense, that it is not only not necessary, but it was added deliberately and is now generally accepted for some reason that is not questioned.

Fabricated complexity is one of the common underlying reasons for environments where efficiency is confused with effectivity.

The reality loop symptom is the extreme form of this, where people just are concerned with satisfying fabricated complexity and are not producing any additional value any more. follow me on twitter, I need some friends :-)