Monday, August 10, 2009

Essential, accidental and fabricated complexity

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.

1 comment:

  1. Good post, Jonas. I guess it results from a chaotic, design-less development process.

    I see live examples of this everyday in legacy enterprise apps. Once something has been added, it remains unquestioned, even if it brings negative value. It becomes part of the 'history' of the product.


Related Posts Plugin for WordPress, Blogger...