Why is complexity bad?

In an internal meeting here this morning, I had another “rant” about unnecessary complexity in a design. One of the guys in the meeting wrote down what I said, pretty much verbatim and sent it to me afterwards asking if he could use it as a quote. When I read it even I was surprised with the clarity.

“Complexity in computing systems is really a bad thing, it’s the result of too many bright people making misguided judgements about what customers want, and customers thinking that their need to control has to come from complexity. Complexity creates cost, bugs, inhibits design, makes testing overly expensive, hinders flexibility and more. Most IT companies design approach to complexity is to automate it, which in turn creates more complexity.”

Comments?

4 Responses to “Why is complexity bad?”


  1. 1 Jonathan Eunice February 16, 2012 at 1:40 pm

    Bing bing bing! Get this man an gold star and a prize package!

  2. 2 Phil Hartman February 16, 2012 at 2:13 pm

    Don’t hold back! Say what you mean Mark. Seriously, good words!

  3. 3 Steve Weeks February 20, 2012 at 12:59 am

    How often do you see a new version of anything that has been simplified? It seems as if complexity cannot be removed, only slowed in its rate of growth. It even seems to me as if the only limiting factor for complexity is when owners themselves can no longer understand a design.
    I think there should be recognised principles of simplification, to help people to recognise the potential.Especially in User Interfaces.

    Meanwhile, a quote from the computer scientist, Edsgar Dikstra: “There is no problem in Computer Science that cannot be solved by adding another level of indirection”.

  4. 4 cathcam February 20, 2012 at 7:25 am

    Steve, you are of course right, and this is exactly where I made these comments. We came up with a very simple design for software upgrades of what was a very complex appliance based product that included 3x OS’s VM’s and a hypervisor. It was deliberately designed that way that way to avoid all the problems likely to occur if you tried to break it down into more granular components, also in the UI. The second release proposal added back in much of the complexity, under the guise of simplicity, but really without thinking through all the complexity it would take and all the additional testing and config and automation it would take for 75% of the customers…

    As always, the point was just to step back and keep asking why…

    Removing complexity is a different problem. It mostly requires technical debt in a development schedule, which often marketing won’t pay for or allocate resources to. Another reason why complexity doesn’t get taken out is compatibility. Where that complexity has been in the product or technology for a number of years, customers will mostly automate the complexity and that automation becomes a sticking point when upgrading the product. In that case it’s hard to know what to do, as an architect/designer you always want to do the write thing by taking out unusual prompts, config. parameters and function no longer really needed and simplify where ever possible.

    The best way to avoid complexity, is to require marketing to be specific about the customer, who they are, how they’ll use the product and in what environments. If they can’t do that, then you already have a different problem.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




About & Contact

I'm Mark Cathcart, formally a Senior Distinguished Engineer, in Dells Software Group; before that Director of Systems Engineering in the Enterprise Solutions Group at Dell. Prior to that, I was IBM Distinguished Engineer and member of the IBM Academy of Technology. I'm an information technology optimist.


I was a member of the Linux Foundation Core Infrastructure Initiative Steering committee. Read more about it here.

Subscribe to updates via rss:

Feed Icon

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 887 other followers

Blog Stats

  • 83,852 hits

%d bloggers like this: