Orthopraxy
Take XML: it started life as a (relatively) simple language but has grown into a myriad of dizzying dialects. Contrast it with JSON, a very simple specification that Douglas Crockford has managed to fit onto a business card.
And what of our friend, OO? That, too, I fear has become too complex -- to the point where the sheer weight of the technology threatens to sink it. Unthinkable? Other technologies, every bit the darling that OO is, have met a similar fate.
"Any intelligent fool can make things bigger, more complex," wrote Einstein. "It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
It takes genius to make things simpler? OK, but why courage? The question has multiple answers.
First, it takes courage to believe that out of the complexity and diversity of problems, simplicity can be achieved. It's so much simpler to tack something on. And then something else. And something more still until what was once simple is utterly daunting to the beginner.
It takes courage to resist this spreading complexity and strive for the simple. I've noted before that, when our coding gets particularly complex, my colleague, Maciej, and I will say to each other: "Something's wrong. This is too complicated."
Second, complexity creates "in" groups and "out" groups. As humans, sadly, we love these distinctions. "What? You don't know the SlithyToveBrillig pattern? Hmmm...tell me, have you ever actually programmed before?" Goethe captured this brilliantly: "When ideas fail, words are very useful." Those who resist the siren call of complexity may find themselves dismissed as intellectual lightweights. Indeed, it does take courage to oppose the crowd.
The irony of this strutting "my brain is bigger than your brain" is that it takes real brilliance to hew to simplicity without falling into the trap of dumbing things down. Mediocre minds simply add on as situations arise, sacrificing simplicity.
I know from conversations stemming from emails I've received that not a few in the ColdFusion community find themselves feeling as "children of a lesser god" because they long for the simplicity that first attracted them to the language. They fear that simplicity is somehow the mark of a weak programmer.
Yes, complexity glitters and promises sophistication, but it eventually destroys the community that enthrones it. Beginners, put off by it, return seaward for more promising shores and even those with significant investment in a technology may find that the burden of it has become unsustainable and themselves look (again) for a more welcoming technology.
There may be no cure for this. Empires rise and fall. So do technologies. But we should recognize the fatal nature of allowing complexity to take hold and reject all notions that more means better.


;-)
How bout "the greatest threat to simplicity is complexity", profound huh?
Seriously, this is a big problem. Developers, in their own nirvana, add complexity where not needed, add frameworks where not needed. Its a balance, sometimes you *need to add a little complexity because you are trying to implement new ideas, to move something from the abstract.
Keep up the insightful posts Hal.