Halhelms
SIGN UP FOR MY NEWSLETTER
 
 
Halhelms

Shameless Money

Recent Comments

Recent Entries

RSS

Subscribe

Orthopraxy

Try googling "quote simplicity" and "quote complexity" and you'll find some wonderful thoughts from people like Leonardo da Vinci, Albert Einstein, Ludwig Wittgenstein, Christopher Alexander, and Charles Mingus on the virtues of simplicty and the perils of complexity. But it seems the way of things that they often start out simple and accrue complexity.

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.

Comments
Mike Britton's Gravatar Well put, totally true, and inspirational. I want to revisit everything I've written in the past year and look for ways to simplify. Granted I did this anyway, but time heals old codebases.
# Posted By Mike Britton | 8/24/09 3:11 AM
Sami Hoda's Gravatar Hal - What is "simplicty"? Did you mean "simplicity"?
# Posted By Sami Hoda | 8/24/09 10:30 AM
Hal Helms's Gravatar No, Sami, you see, I'm even simplifying "simplicity".

;-)
# Posted By Hal Helms | 8/24/09 11:56 AM
Adam Haskell's Gravatar Good Post Hal. As much as I disagree with some of your recent remarks and entries I think this one rings very true in many respects. I think it especially rings true for CFML where often times the encapsulation and business logic is already wrapped up in tag. Now does that entirely discount the need for OO practices or borrowing some OO concepts in CFML or PHP for that matter? I don't beleive so, but I also think we as developers always want to solve something complex. Sure maybe there is a degree of superiority complex in there. Don't you think that as a whole developers like to solve problems and if the problem presented is not interesting enough, we make it interesting? Making it more interesting often times comes by over complicating the solution.
# Posted By Adam Haskell | 8/24/09 12:37 PM
Hal Helms's Gravatar Yes, Adam, I find myself sometimes dissatisfied with a simple solution when a juicier complex one is available! Simplicity is something I constantly have to adhere to.
# Posted By Hal Helms | 8/24/09 12:44 PM
james's Gravatar Hal - your insights are always soooo keen. One of the hallmarks of development that i wrote on a sticky many moons ago is "The greatest threat to software is complexity".

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.
# Posted By james | 6/11/10 12:35 PM
 
   
Clicky Web Analytics