Engineers Build Ugly Products

Why do engineers build ugly products? What is it in the nature of engineering or the software development process that leads to user interfaces that are impossible for users to actually use?

Perfect Storm Of User Discontent

The short answer: The most interesting part of an engineer‘s job is the obsession with the possibilities in the solution space (all the cool stuff you can make computers do); engineers don’t want to make choices that limit power and flexibly (a design); engineers value adding potential functionality higher than removing unneeded complexity; engineers want to engineer their way out of design problems.

Thinking about a new product begins with an attempt to understand what it is the software is supposed to do. In other words, it starts with a solution to a problem, assuming that the problem itself is correctly framed — which often it isn’t.

Implicit in this is the understanding of what technology is able to do. This is the part that gets engineers excited, especially for a product with a novel technical solution. What is it that we can make this technology do? Can it actual do that? Especially if the technology is halfway understood or being actively developed, engineers are drawn to exploring the endless possibilities.

Regardless of whether or not the end product uses well-understood technology, there always will be different challenges that come up when building an application, and there are different paths to explore that could be shortcuts just as easily as dead ends. Building software is actually very difficult.

The Fractal Nature Of Engineering

For engineers, this is the fun part. Every engineer loves greenfield development because it allows them to explore the terrain without having to deal with the trade-offs, constraints and messiness of existing code. The process is one of adventure, being able to explore a technical space of possibilities and potentialities. This is really awesome, and a large part of what makes engineering interesting.

You are not insulting people by making choices for them, you are cleaning junk out of their lives.

It begins with building little ideas, putting them together in novel ways and developing concepts that are increasingly powerful. This leads engineers to put knobs and buttons and gizmos on different features to make it easier to explore all of what it can do — not necessarily what it should do. It’s socially rewarding to the immediate group to show off all the cool features, not just what it does now, but also what it’s capable of doing. Focusing on the technology aspect of development leads people to optimize the functionality in both breadth and power.

The ecstasy of possibility is in direct conflict with producing elegant products, because products are fundamentally about making choices and creating clarity around something, which is very complicated. This is more than missing the forest for the trees; the ideals and aspirations of both efforts are directly contradictory.

The difference between something “just working” and being handed a box full of parts is extreme, and, left to their own devices, engineers always err on the side of the parts. Engineers tend to see software in terms of flexibility, thus providing consumers with the power to do whatever possible. That power puts a lot of pressure on users. You are not insulting people by making choices for them, you are cleaning junk out of their lives.

Building a usable product is about collecting ideas, trying them out, playing with them and seeing what works. This is the part that excites engineers. But the second part, in many ways, is harder; it’s about letting things go, making choices and stripping out functionality which, from the user’s perspective, isn’t needed and isn’t interesting. Many features released by engineers don’t strip things down, which is why they are cluttered, confusing and have no clear purpose.

The inevitable problem is that products aren’t about technology. Products are about helping real people live their lives better or in a more interesting way. Technology is necessary to take people there, but not sufficient to build products. Technology is just the plumbing, the framework which makes it possible — but not actually what people care about.