Complexity Is the Enemy

As engineers, it’s very easy to make something unnecessarily complex. Some even find great joy in doing so, revelling in the looks of confusion as others try to understand their design, whether it be of a network, piece of code or a product. Those who don’t immediately grasp it must just not be as smart, their lack of knowledge conclusively exposed in the face of such a genius system.

This attitude is highly damaging, not just because people you may be working with feel like you’re trying to catch them out, which promotes an unhealthy working relationship; but it tends to make everything harder. Altering the design at a later date, explaining it to someone else and especially troubleshooting are all complicated greatly by the addition of unnecessary complexity.

In fact, one of the worst things you can do as a product designer is needlessly expose the underlying complexity of your system to your users. Some will argue that such products are fine and designed for ‘power users’, but they leave the majority of those who could interact with them utterly bemused, or at best dissatisfied.

In fact, the power user is often not as prevalent as designers like to think, and even when they do exist would often like to use a simpler product that abstracts complexity away as well, just as those less familiar with the complex underpinnings would. Frequently they are used as an excuse to justify poor, lazy design and lack of thought.

If a company believes 100% of their users are these power users who don’t value user experience at all, that is the sign of an out of touch company that is sure to lose large swathes of their audience the moment a competitive option that has put simplicity first becomes available. Labelling your power users as a ‘professional audience’ doesn’t make it any better, either; people aren’t flattered enough by being called professional to waste their time and effort on unintuitive products today.

If you truly understand something, you are able to simplify it down to its core points without losing the full impact or scope of what it means. The shelves are filled with products and systems that look promising, have all the right marketing noise, smooth packaging, and are utterly infuriating to use when you get them out of the box because the designer couldn’t figure out how to hide the complexity.

When we talk about understanding something in this context, that can be a number of things, from an in-depth understanding of a technology to understanding what people truly need to get from your product. Beyond the level of ‘people want holes not drills’, properly designing a product requires a thorough understanding of what your intended users really value.

What if you’re not a product designer as such? For many people, today that simply isn’t true – think of the code you write or the networks you design as your product. Just because it may not be front and centre with the average consumer doesn’t mean you’re not creating a product, and one that can benefit greatly from thoughtful simplification.

However, simplicity for the sake of it can also be damaging, if the simplification comes at the expense of core points that must be understood. As the saying goes, make things as simple as possible, but no simpler. Understanding is the key here – thoughtful simplification should remove the unnecessary bells and whistles that are so easy to tag on to a simple design, and make the result approachable and easy to understand.

As an example of the power of simplicity, when it comes to selecting network equipment today, even though I spent quite a bit of time obtaining my CCNP (Cisco Certified Network Professional) certifications, I find myself drawn to other vendors who have paid attention to the user experience.

Why should I dig through a frankly ancient CLI with a very specific, unfriendly syntax and conventions and dated unintuitive web interfaces to configure basic functionality, when there are alternatives that abstract much of the complexity away for me?

Another argument is the success of Apple products in general, which have always emphasised the user experience and simplicity of operation and purpose above complexity. Some more advanced users may criticise their self-imposed limitations, but rarely are people in doubt on how to use an Apple product to do what they need, or for what purpose a product or feature was created.

Simpler ideas are easier to understand, and this applies regardless of what your idea is. A network design, a function in code or a product: the less time and effort you need to explain it, the more people will appreciate what you’re saying.

Even with an initially simple design, complexity easily begins to creep in. Your own understanding of the subject increases, leading you to think things are obvious – so why shouldn’t they be included? The familiarity level of those viewing your product also increases, and they have the same reaction. It’s important to resist this wherever you can – it’s amazing to see how many small ‘obvious’ changes will add up into a messy, complicated product that’s no better than anything else out there.

Maintaining simplicity in your thinking and designs is a constant challenge, and keeping it intact means denying perfectly reasonable ideas and suggestions from not just others, but yourself as well. It’s always useful to have someone who doesn’t deal with your area of expertise day to day to bounce ideas off of – if you can’t explain it to them in a short period of time, the chances are it’s not simple enough even for people who do understand the deeper complexities of the subject.

In an increasingly diverse and busy world, more people from different backgrounds and with less time for concentrated attention on what you’re trying to say will be seeing your product and making a snap judgement which will hold for some time, possibly forever.

Never doubt the power of simplicity.

Leave a Reply

Your email address will not be published. Required fields are marked *