It Compiled. It Was Still Wrong.

Share X LinkedIn Facebook WhatsApp
Back to Life in Production
It Compiled. It Was Still Wrong.
TL;DR

AI can build the thing perfectly and still build the wrong thing. Taste, knowing not just what's good but who it's good for, is the part of the job that stays yours.

My wife and I recently had a real fight about a font. Not a disagreement. A fight. She is an architect, so she sees type the way I see a stack trace, and to her the blog was screaming. Every paragraph set in Space Mono, the monospace I love, the one the whole portfolio still wears. I read it all day. I had stopped seeing it. She read three sentences and asked why I was making people read code.

There is no unit test for that. I could not run a benchmark that returned "your font is exhausting." There was no assertion that failed. She was just right, and the only proof was taste.

What the machine can't see

Here is the thing about that fight. I had rebuilt this whole blog with the help of AI. Claude Code and Gemini, to be exact. Claude wrote the templates, the build pipeline, the responsive image shortcodes. Gemini made the cover images. At no point did either of them stop and say "by the way, nobody wants to read a thousand words in monospace." Why would they? I never asked. I pointed them at "make the blog," and they made the blog, in the font that was already there. I had stopped seeing that font. The machine never saw it at all.

That is the part people miss. The model optimizes the thing you point it at. It does not optimize the thing you forgot to measure. It will pass every test you wrote and stay silent on the test you should have written. My font was not a bug. It compiled. It shipped. It scored fine on contrast and load time. It was just bad, and "bad" is not a value the machine returns.

🎸 The session musician

A good AI is a session musician who can sight-read anything you put on the stand and play it perfectly, first take, in time. What it cannot do is tell you the song is boring. Technique is free now. Knowing whether the thing is worth playing was always the hard part, and it still is.

The real mistake went deeper than a font. I am an engineer. I read monospace all day, so to me the blog looked normal, even nice. But this blog is not written for engineers, or not only them. I had built the reading experience for the one person guaranteed never to struggle with it: me. Then I handed that same blind spot to Claude, which did not invent the bias. It inherited mine, because I never thought to question it.

Taste is not only knowing what is good. It is knowing who it is good for.

That is the whole basis of good engineering. I had skipped it for the one reader who never needed me to ask: me.

The compromise was the engineering

We did not settle the fight by one of us winning. We settled it by getting more precise about the question.

The blog has two jobs. One job is to be read, long-form, top to bottom. The other job is to feel like mine: the terminal-green, monospace, engineer's-desk identity I actually like. Those are different jobs, so they get different type. The article reading surface uses a face built for long-form. Everything you browse and navigate, the masthead, the post titles, the chrome, stays Space Mono. And the portfolio, which is a poster and not an essay, stays one hundred percent Space Mono because I like it and nobody has to read it for ten minutes.

No tool handed me that split. The work was not changing a CSS variable, that part took a minute. The work was deciding the rule: type by role, not by page. That is a taste call dressed as an architecture decision. Most of the good ones are.

Here is how reflexive the mistake is. While putting this post together, I almost configured every external link on the blog to open in a new tab, so you would stay on my site. The AI would have done it in a second. Then I caught it: I was optimizing for me, the author who wants the traffic, not you, the reader who just wants the back button to work. Same blind spot as the font. So the links open the normal way. Click away.

Taste is the senior skill, and it does not transfer

So what is actually left for you once the model writes the code? The judgment the model never had. Knowing that the font passes every check and is still screaming.

You do not get that from the model, because the model has never been annoyed by your blog. My wife has. She read it as a reader, not a build, and that is the entire difference. Taste is what you earn by caring about the output the way the person on the other end experiences it, not the way the test suite reports it.

You are reading this in the readable font. She won. She was right.


Older The Cult of Complexity: From Internet Cafes to AI Chatbots June 28, 2026  ·  12 min read

Charbel Wakim — Staff Engineer at Emma Sleep, writing about production systems, career, and life across the Levant, Europe, and the GCC.

Back to Life in Production