Back to blog

Building 'Simple' Systems is Hard: The Complexity of Simplicity

Published: 5:30am on 30/09/2023

In today's digital age, as the clamour for user-friendly interfaces and streamlined processes grows, the mantra seems to be: "Keep it simple." But any engineer, developer, or designer will tell you that constructing a 'simple' system is far from easy. Here's an exploration of why achieving simplicity in systems can be such a challenging feat.

1. Simplicity is Subjective

What appears simple to one person can be profoundly complex to another. For a tech-savvy individual, a platform with numerous features and customisation options might seem straightforward. In contrast, a tech novice might find the same platform overwhelming.

This inherent subjectivity means that building for 'simplicity' often requires designing for a wide range of user experiences and expectations, which in itself is a complicated task.

2. Hidden Complexity

A significant portion of simplicity is about moving complexity out of the user's view. When you tap your contactless card at a shop, the transaction feels simple. But behind that single tap lies a robust infrastructure involving encryption, authentication, and banking protocols.

Creating a system where complexity is hidden but functionality remains intact requires intricate design and engineering.

3. The Challenge of Reduction

Simplicity often involves stripping away the unnecessary. However, deciding what to remove without compromising on functionality or user experience is a delicate balancing act. Every removal, change, or addition can have cascading effects on other parts of the system.

4. Evolution Adds Layers

Over time, as systems evolve and adapt to new requirements or technologies, they naturally accrue layers of functionality and code. This evolution, while necessary, can add complexity. Keeping a system 'simple' in the face of constant change requires regular review and refactoring.

5. The Balance of Flexibility

Simple systems are often rigid because they're optimised for a specific task. Adding flexibility to cater to various needs or future adaptability can introduce complexity. Striking a balance between simplicity for the user and flexibility for future growth is a tough juggling act.

6. Documentation and Training

Even with a focus on simplicity, there's often a need for comprehensive documentation or training. Ensuring this documentation is clear, concise, and easily accessible becomes a project in itself, adding another layer to the development process.

Conclusion

While the end goal of a 'simple' system is to make life easier for the user, the journey to get there is filled with intricate decisions, hidden complexities, and a lot of hard work. As Leonardo da Vinci once said, "Simplicity is the ultimate sophistication." Achieving that sophistication demands a deep understanding, careful planning, and a lot of effort. But when done right, the results are invariably worth the challenges faced along the way.