Le secrétaire de Fernand

Outgrow Your Taste, Don't Defend It

Outgrow Your Taste, Don't Defend It

Building software is three distinct activities: understanding a reality, engineering a general machine, and encoding one into the other. Taste is required by none of them, which is exactly why ego hides there.

Central idea: Building software is three separate activities: understanding a reality, engineering a general machine, and encoding the one into the other. Each answers to something outside you. Taste, which answers only to you, is required by none of them. It is the name for the three before you have learned to tell them apart.

Reading time: ~6 min

Everyone stopped saying elegant

A few years ago, good code was "elegant." Now it has "taste." The word changed; the move did not. Both borrow an aesthetic vocabulary, the language of how a thing feels to the person looking at it, and use it to settle a question that is not aesthetic at all: whether the software is any good. The serious advocates will object that taste was never about aesthetics. Hold that objection; it turns out to be the most revealing thing they say, and I will come back to it.

I am not standing above this. I have spent years trusting my taste, and I still catch myself at it. So read this as a map of a place I live in, not a place I am pointing at from higher ground.

The three things you are actually doing

Here is the move that dissolves the confusion. When you build software you are not doing one thing. You are doing three, and they differ in kind.

You are understanding a reality: how the business actually works, what the people you build for actually do, the exceptions and workarounds the official process hides. This one is not engineering. It is closer to fieldwork. You investigate it; you cannot intuit it from your chair.

You are engineering a general machine: the domain-agnostic craft of making software hold up. Concurrency, error handling, module boundaries, the architecture skeleton, the patterns that keep a system from collapsing under its own weight. This part is the same whether you are building a CRM or a game, and it is mostly solved. We have the tools. The gap is rigor, not mystery.

And you are encoding the first into the second: translating your understanding of the reality into that machine, expressing this domain's truths as types, states, boundaries, and invariants.

Three activities. One of them is not even engineering. None of them is the same skill. And you do all three within the same hour, which is exactly where the trouble starts.

Watch taste fail to appear

Go through the three and look for the place taste decides.

Understanding the reality answers to the reality. You are right or wrong about how the warehouse actually reconciles its stock, and the warehouse, not your sensibility, settles it. Engineering the general machine answers to correctness and consequences: will it deadlock, will it leak, will the next person follow it. Encoding answers to fidelity: does the code say what the model means. Even when several models fit the reality and the choice between them feels like taste, what should decide is which one serves the people downstream, not which one you prefer.

Each of the three is accountable to something outside you. Taste is the one thing that answers only to you. It has no seat at any of the three tables. It is not that taste is bad; it is that when you name the things you actually do, taste is not one of them.

So why does everyone reach for the word

Because you do all three at once, and you feel them as one.

In a single afternoon you investigate the domain, decide how to model it, encode it, and keep the plumbing sound, and the whole thing arrives as one undifferentiated competence: a sense that this is right and that is wrong. The sense is real. But "taste" is just the name for the three activities before you have pulled them apart. It is the fog, not a fourth skill hiding underneath it.

Which means outgrowing your taste is not about acquiring a rarer sensibility. It is decomposition. The next time something feels off, the move is to ask which of the three it is. Did I misunderstand the reality? Is this a craft problem with a known answer? Did I encode the model badly? The moment you can say which, the taste has dissolved into one of the three real things it was standing for.

Taste is borrowed, and it is the larval stage

It helps to see where the feeling comes from. Mostly, it is borrowed. The type checker that refused your sloppy union, the linter that flagged your dead branch: each is a named practice somebody worked out and baked into a tool. Use good tools for years and you absorb the shape of those practices without reading their names. So when you "just sense" something is off, you are usually recognizing a pattern that already has a name, in a book you have not opened.

That is why taste is, at best, pre-learning. It is the pre-verbal stage of a skill: the intuition you have before the name, before the structure, before you can say why. I say this as someone who arrived at half of my own ideas by instinct and only found their proper names while writing them down. The work is to keep converting: feeling into name, name into structure, structure into something you could defend to a person who disagrees. I am not finished. Nobody is.

It only decides what does not matter

Taste feels low-stakes once you look straight at it, because it only gets to choose when nothing else does. Any choice with consequences is decided by those consequences. Will this boundary leak, will this model survive the next requirement, will the next person understand it. Those have answers, and reality supplies them. Taste only breaks the ties that are otherwise even, which is to say the choices that do not matter. "Taste decides" and "it does not matter" turn out to be nearly the same sentence.

The interface is the clearest case, because it is the one people argue about most. The purely visual layer, the exact blue, the mood of the font, is taste, and it mostly moves nothing. The part that actually matters, whether the thing is usable, learnable, and gets the user to their goal, is not taste at all. It has heuristics, research, and tradeoffs. It is an engineering problem wearing a designer's coat.

Why ego moves in

So if taste is borrowed, larval, and decisive only when nothing is at stake, why do capable people wrap their identity around it?

Because taste is the one corner of the work where you cannot be proven wrong.

You can be wrong about a domain. You can be wrong about a boundary, an invariant, a failure mode, a model. Reality, or production, or the next engineer will eventually tell you. Taste is the only place that never will. There is no disputing a preference; it is unfalsifiable by construction. So ego, which wants more than almost anything to be safe from being wrong, does the rational thing: it flees the three accountable activities, where failure is public, and settles on the one hill where it can never be embarrassed. Heavy taste-talk is usually that. Not expertise. The sound of someone staking their identity on the only thing in the craft that cannot be checked.

Which gives the distinction worth keeping. The problem was never having taste. Everyone has it. The problem is taste that refuses to decompose: instinct frozen into a credential instead of resolved into one of the three real things. The failure is not a kind of person. It is the choice to stop pulling the fog apart.

The thing people are actually reaching for

Here is the generous part, and the true one. People who talk about taste are reaching for something that exists. In an age when a machine can produce infinite plausible code, some scarce human skill clearly separates the good from the slop. They feel it. They are right that it is there. They have just named it wrong.

The defenders worth taking seriously have been waiting for this, and they have a real objection: the serious version of the taste argument is not about the shade of a button. It says taste is refined, repeatable judgment under uncertainty, the ability to see what is good before anyone else can and to be proven right when the rest catch up. That deserves an answer, not a strawman.

So look at what that describes. "Proven right when the others catch up" is a falsifiability claim: the judgment answers to a reality outside the person, one that will confirm or refute it. But the moment a judgment answers to a reality outside you, it has stopped being taste in the only sense that made the word worth using, and become understanding. The strong version of taste is not a defense of taste. It is understanding, wearing the word because that sounds like a gift you were born with rather than work you went and did. And the part that answers to nothing outside you, pure preference, is the part we already caught only breaking ties that do not matter. Steelmanned all the way up, taste splits: where it is good it is understanding, where it is merely taste it is inconsequential.

The deepest version of the difference is the direction of the gaze. Taste looks in, at your own sensibility. Understanding looks out, at a world you have to go and find and build a working theory of. One is consulted, the other is discovered, which is why no tool will ever hand it to you: it is the one activity of the three that is not even engineering.

One honest exception. Some of that understanding never fully decomposes into rules; there is a tacit residue even experts cannot put into words. But that residue still points outward, at reality, in service of others. It is understanding that has not finished speaking, not preference dressed as authority. Even the part of "taste" that is real turns out to be understanding wearing a borrowed coat.

The practice

If you want one thing to do with all of this, it is small and repeatable. Treat every "this feels off" as a debt. Find which of the three it belongs to, give it a name, make it explicit enough to defend or be corrected on. That is the move, and it is the same one I keep arguing for on the code itself: do not leave the important things implicit, encode them. This is that discipline turned inward, on your own knowledge. Encode your taste; do not trust it.

A doorway, not a room

None of this is a reason to be ashamed of the feeling. It is where everyone starts, and the best engineers I know never lose it: a live, restless sense that something is wrong long before they can prove it. That intuition is precious. It is the start of every good decision they make.

But it is the start. It is a doorway, not a room you furnish and move into. The work is walking through it again and again, turning the feeling into the right one of the three real things, on behalf of the people who will never see your taste and never needed to. Defend your taste and you stop at the door. Decompose it, over and over, and you get to go inside.

A thought after reading?

If you would like to discuss about this article, you can write to me here. I share because I care and I want to learn. Please teach me with care.