Software Shouldn't Flow Away

Posted on July 2, 2020

There’s a problem in the design of some software. This problem is seen mostly in web-based software. The companies that create it ask their employees to improve metrics. When the north star is conversion, the company structures itself around activities that improve conversion. They simplify forms, run user testing sessions, and A/B test changes. This is an effective process for optimizing flows. That’s not the problem.

The problem is that this same kind of design gets applied to pieces of software that are not flows.

A flow is some bit of software that helps you accomplish a specific, well defined task. That task might be installing a piece of software, requesting an Uber ride, or ordering yet another pair of headphones.

A flow is like getting coffee at Starbucks. Once you have the coffee, your mission is accomplished. The work leading up to having the coffee - standing in line, ordering, paying - is something you want to get out of the way as soon as possible. A flow is software where you get the value at the end.

Not all software fits this model. Some software acts more like a tool or a workspace. An image editor doesn’t provide the value the moment you save the result - if it did, just replace the whole thing with a giant save button! It provides the value with each adjustment you make and operation you try. You don’t get the value of a video game when you’ve beaten it, you get the value by having fun while playing it.

This kind of software is analogous to a vacation. My goal isn’t to “complete” the vacation - I want to spend the time having fun. Likewise, tools are software that provide value as you are using them, not (just) at the end.

A flow gets better if you remove questions, make it simpler and faster, and make the next step more obvious. A user may well have never seen the flow before (and may never see it again), so a lot of work has to go into making it easily digestible. Since the value comes at the end, anything you can remove before that point makes it better. But with tools, where you get the value throughout the middle, removing things from the middle removes the value! The way to add value to a flow often destroys value in tools.

Let me put it this way: If you take my vacation and remove the sightseeing, the food, the hikes, and the time spent sitting by a lake, it would certainly streamline my vacation. The kind of optimizations that get more customers through a coffee shop per hour shouldn’t be applied to a vacation. But that is exactly what it feels like happens in software design. So many pieces of software that deserve to be rich experiences get stripped down to something fluid, simple, and useless.

The features and ergonomics of tools and workspaces are the source of their value. If you take an image editor and remove half of the adjustments, you will accomplish three things: 1) you have decluttered the interface, 2) you have removed steps before the user hits save, 3) you have lost all your customers. Those features can be the deciding factor in whether someone is able to create the final result they want.

To someone who edits images every day, sliders and buttons aren’t clutter and don’t take up mental effort to process. Instead, they’ve faded into the background like the titles of books on a bookshelf. Those adjustments shouldn’t be closeted away in menus and sub-menus. The things you need every day should be right there when you reach for them.

If someone came into my kitchen and tried to declutter it, they might do one of two things. They might throw away my spatulas, pans, and bottles of oil (in which case, I should be very upset with them), or they might hide those things away in cupboards and drawers and closets. I would still be annoyed with this, because there’s a reason my spatula and oil are right next to the stove: I reach for them every time I cook.

This isn’t an argument for awkward, ugly interfaces with a structure not aligned to what the user needs to do. Filling my kitchen with a bunch of plastic gimmick tools would make it harder to cook, not easier. I don’t want my blender right next to the stove or my spoons stored in the microwave. You have to know how to cook in order to understand what utensils are valuable and how to properly organize a kitchen. A properly organized kitchen isn’t the simplest possible kitchen, nor is it one where every possible tool is at hand.

Having seen how a few software products are made and having watched many software products evolve over time, I’ve been disappointed to see important features hidden away or completely removed in the name of simplification. This sort of optimization comes from an organization structured to optimize things that way. Companies whose lifeblood is optimizing signups and increasing conversion often fail to put their default mode of operation aside when working on software that acts as a tool.

Don’t optimize tools for the person who has never seen them before at the expense of the person who uses them every day. Not all features are bloat.