back to writing

Building taste

·Training taste like any other skill

Taste is the thing most engineers say they don't have, and most designers claim they do. Both treat it as innate when it isn't. Taste is a skill, and like every skill, it compounds with deliberate practice.

I spent years thinking taste was something you either arrived with or acquired by osmosis. Then I started building products and understood that taste is just another word for pattern recognition trained on quality.

I came to this from both sides. At 16, I taught myself design while building my first tech startup with support from PayPal and the Toronto Stock Exchange. Years later, learning full stack development brought me into product engineering. Crossing from one into the other showed me that taste isn't native to any one discipline; it transfers.

What taste actually is

When Jony Ive says a corner radius is wrong, he isn't expressing a feeling. He's recalling ten thousand radii across thousands of objects and computing the distance between this one and the Platonic ideal for that context. The computation is fast and feels like intuition, but it isn't.

Taste is built the same way any model is built: through exposure to high-quality examples, explicit feedback on your outputs, and iteration. Most people miss the first step and wonder why their bar never rises. The model only reflects what you feed it (average inputs = average outputs).

The cognitive science of aesthetics

My undergraduate studies in cognitive science taught me that aesthetic judgment is largely predictive processing. Your brain is constantly modeling the world and flagging prediction errors. When something is off — the type too tight, the padding too generous, the hierarchy inverted — you feel it before you can name it because your model was contradicted.

This is why experienced designers can react to a layout in milliseconds. They have refined internal models, and the dissonance registers immediately. Junior designers need more time because their models are less refined. The interval between "something's wrong" and "here's what's wrong" is just the response time of the model.

So the question becomes: how do you build a finer model faster?

How I trained my taste

Three things accelerated it for me:

Obsessively analyze what you consume. I stopped passively admiring things I liked and started asking why, then interrogating my own answers. When you visit a site and think "this feels right," resist the impulse to move on. Sit with it. Inspect it. Name every design decision you can see. Then try to name the ones you can't see, the ones you only feel.

Build with constraints. The blank canvas is the enemy of taste. Constraints force precision. When you can't rely on variety to cover bad decisions, every decision becomes visible. Give yourself tight constraints (one colour, two type sizes, no images) and see if you can make it work!

Show work before it's ready. Taste atrophies in private. The gap between what you made and what you meant to make only becomes clear through the reaction of someone who has no idea what you were trying to do. Build that feedback loop as early and as often as you can :)

On the engineering side

What I find underappreciated among product engineers is that taste applies to code the same way it applies to interfaces. A well-named function, a composable API, and a data model that matches the mental model of its users are design achievements as much as technical ones.

The engineers I admire most design code the way architects design buildings, paying attention to the experience of moving through it. They design for readability so future contributors, including their future selves, can keep building easily.

Ultimately, taste is about caring enough to notice the delta between what is and what could be, and having the craft to close it.