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.
Recently I realized that there is a third kind of complexity that is especially dangerous:
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.