Keep It Simple - But For Who?

Keep It Simple Wall Text
Photo by Mad Geek Love on Unsplash

The Mantra

Every team I've worked on, every organisation I've worked for they've had one thing in common: the belief to keep things simple.

But we need to go beyond this straightforward phrase and ask the follow up question "simple for who?"

This question poses the uncomfortable truth that some teams like to keep it simple for themselves, rather than for the product users.

Simple For The Developer

Simple in this context means keeping development effort as low as possible so that the tickets are completed in a speedy manner and velocity remains high. Little focus is given to how the user will experience the product or even what the downstream effects of these choices are. The team keep it simple for today to close the ticket quickly.

This tends to manifest itself in the following ways:

The reason this path is taken by teams is that it creates the appearance of velocity and efficiency. Tickets are being closed down, work is being done. These are excellent, visible metrics for management.

But this is the very definition of Technical Debt. Prioritising comfort and ease above rigour, documentation and long-term thinking leads to a fragile, hard-to-maintain codebase for future developers. More importantly it leads to a frustrating and abrasive experience for the user.

Simple For The User

The main goal is to reduce friction for the user. This is both the user of the product being developed as well as future developers who can be thought of as users of the codebase.

In both cases, the goal is to reduce cognitive load and ensure that they have a smooth, easy, efficient experience.

This can be done by implementing the following:

The benefits of this approach are that it creates a durable, trustworthy and adopted data product. It builds long-term velocity.

However it looks like over-engineering and risk-averse thinking to a team focussed on short-term outputs. It requires more deep thought and time upfront.

The Trade-Off

The "simple for the dev" choice is like a short-term loan. Yes it's quicker and easier now but you end up paying interest forever in the form of user education, user support, bug fixes and misinterpreted data. Indeed in some cases you will also have to deal with user frustration and negativity.

The "simple for the user" choice is a long-term investment. It takes longer in the moment but reaps rewards forever in the form of user trust, clarity, reduced need for user support and increased user satisfaction. And user satisfaction is important because a happy user is your best marketer.

So when you hear someone say "let's keep it simple", to build the best data product your response needs to be "Are we making this simple to build or simple to use?"

The answer to this is the difference between an exceptional data product and a mediocre one.

Simplicity is a Promise

"Keep it Simple" is not an excuse to cut corners. It's a promise and it's a sign of respect to the end-user.

True simplicity is not about having fewer lines of code, it's not about using simple tools as opposed to complex ones. It's about removing as much friction as possible so the user experience is as smooth and pain-free as possible.

The most sophisticated, complex piece of engineering behind the scenes can still be described as simple if it results in a single, clear and trustworthy insight for the user.

So the next time someone tells you to "keep it simple", make sure you ask "simple for who?"