When in Doubt, Choose the Simpler Solution

Posted by Tahir Waseer on June 13, 2024

Developers love to overcomplicate things. Fancy features, endless “what ifs”, and magic tricks often turn straightforward tasks into maintenance nightmares. This tendency doesn’t always work out in the long run. The feature that started out to make life easier ends up becoming a burden for users and developers alike.

In reality, simplicity scales better and avoids these pitfalls. The simpler solution, which was quite obvious and wasn’t trying to do too many things, is the one we land on. And this is a good thing!

One of the features we’re rethinking in our website redesign is our campaigns module. This module helps our visitors discover new collections and products on our website while keeping the content fresh. Currently, campaigns are simple, with titles, media, and descriptions only on the home page. Now, we’re introducing them to menus, categories, and product pages, with personalization to make the content more relevant and previews for all formats.

Let’s take this example to explain how it played out and the rationale behind our approach. Initially, we thought of creating separate campaigns for each location: the home page, menus, and product pages. But then the developer brain kicked in. What if we could create a single, flexible campaign instead?

It seemed like a great idea, offering benefits like cognitive ease for users (working on one campaign like a summer campaign), reusing media across layouts, and managing everything from a single workspace. However, as we drafted this solution, it became clear that making it truly flexible required adding many more options and controls. What if a user wants a title in one location but not another? What if descriptions need to vary? This complexity signaled that we needed to rethink our approach.

When we considered the marketing team’s needs, we realized they focus on one thing at a time, such as highlighting the summer collection. This content typically goes upfront on the homepage. Cross-promoting products in different categories is a separate task that they would handle independently.

By rethinking and focusing on how the feature would be used in the real world, we simplified our approach and eliminated unnecessary complexities. It’s now easier for users and retains the flexibility to customize campaigns as needed.

This new design simplifies things for both developers and users. Users can preview their campaign and make adjustments without juggling multiple previews and controls. The benefits of this new approach are clear: it’s straightforward for users to figure out what they need to do, provides a clear preview of the campaign, and avoids the clutter of multiple controls for different formats.

Initially, we thought creating a single campaign would bring efficiency. But creating more campaigns for different locations might seem like a storage issue. In reality, campaigns are secondary content, just supporting the main content on the website. Modern databases handle this easily, and storage is cheap, so it’s not a real concern.

I’ve seen this happen again and again: we get attracted to complexity and lose sight of the actual goal of a feature. Recognizing this tendency helps us avoid these pitfalls and stay focused on what truly matters.

Simple is always the better solution. Embracing simplicity not only scales better but also enhances usability and maintainability. The ability to simplify complex things is a superpower that benefits everyone.