Every codebase I’ve worked in has a function called isValid that doesn’t check whether anything is valid. It checks whether something is there.
Not null. Not empty. That’s it. Somewhere upstream, someone needed to know whether a field had a value in it, wrote three lines to find out, and named the function for what they hoped those three lines meant. Then they moved on. Everyone who came after read the name, believed it, and built on it.
That’s the part that gets you. The code isn’t wrong. It does exactly what it does. The name is wrong, and the name is the part people read.
A name in code is a claim. isValid says I checked. retryWithBackoff says I wait longer each time. tempFix says this won’t be here long. Every one of those is a statement about the world that the next developer takes on faith, because nobody has time to read every function they call. We trust names the way we trust road signs. When a sign points the wrong way, people don’t get lost because they were careless. They get lost because they believed it.
It Doesn’t Stop at the Code
Developers are supposed to be the people who care about naming. We argue about it in code review. We repeat the old joke that it’s one of the two hard problems in computer science. Then we close the editor and talk about our work in a vocabulary built almost entirely out of soft names.
The bug that’s been in production for two years, the one three customers have quietly worked around, is a “quirk.” The forty minutes nobody could log in is an “incident.” The feature that breaks if you look at it sideways is “technically working.” The deadline you’re going to miss is “at risk.” The code nobody understands is “legacy,” which sounds like something you’d inherit from a grandparent instead of from the guy who left in 2019.
None of these words are lies, exactly. That’s what makes them so useful. “Incident” is accurate. It’s accurate the way a press release is accurate. The word carries a story with it: something happened, it was contained, it’s been processed, somebody has it handled. “Forty minutes where nobody could log in” carries a different story. Same event. Different weight.
Marcus Aurelius had a practice for this. He’s at the table, looking at the food, and he makes himself see it plainly: “This is a dead fish. A dead bird. A dead pig.” The noble vintage is grape juice. And the purple robes, the imperial purple, the color reserved for the emperor, are “sheep wool dyed with shellfish blood.”
The man who wrote that was the one wearing it.
He says this is what we need to do all through our lives, whenever things lay claim to our trust: lay them bare and “strip away the legend that encrusts them.”
That’s the whole job. Not cynicism. Not cutting everything down to size for the pleasure of it. Just removing the legend so you can see the thing. The legend on “incident” is that it’s handled. The legend on “quirk” is that it’s harmless, maybe even charming. The legend on isValid is that somebody checked. Strip it away and you’re left with what’s actually there, which is the only thing you can reason about.
The Other Direction
The plain name isn’t always the harsher one.
Most of the time we inflate things to make them sound better. Under pressure, we inflate them the other way just as easily, and developers are very good at it. Production goes red and someone in the channel types “everything is down.” Everything is not down. One service is returning 500s and two others depend on it. A deploy fails and the story becomes “the whole pipeline is broken.” The pipeline is fine. One step has a bad credential.
That’s a legend too. It’s just a dark one. And it does the same damage as the soft kind, because nobody can fix “everything is down.” You can fix one service returning 500s.
Marcus covers this direction in another passage. In Book 3 he tells himself to define whatever he perceives, to see it stripped bare and as a whole, and to “call it by its name.” Then he gives himself a set of questions. What is this thing in front of me? “What is it made up of? How long was it designed to last?”
Those are debugging questions. He just didn’t have a stack trace.
Run them against the 2 a.m. page. What is it? One service. What is it made up of? A config change that went out an hour ago. How long was it designed to last? Exactly as long as it takes someone to roll it back. The catastrophe, named plainly, is usually smaller than the story you were telling about it.
Not always. Sometimes it really is that bad, and then the plain name tells you that too. But either way it tells you what you’re dealing with instead of what you’re afraid of, or what you’d prefer it to be. Marcus calls this the capacity for “logical and accurate analysis,” and he says nothing is more conducive to growth. That’s not a man talking about style.
Why This Is Reason, Not Style
It would be easy to file all of this under good communication. Write clear names. Skip the jargon. Be direct. All true, and all slightly beside the point.
The Stoics used one word, logos, for both “word” and “reason.” That wasn’t an accident of vocabulary. The word and the thinking were understood as the same faculty. You can’t reason well about a thing you’ve named badly, because the name is your first premise. Every conclusion you draw afterward inherits it.
If the function is called isValid, every caller reasons from “this input was validated.” If the outage is called an incident, every decision after it reasons from “this was contained.” If the failure is called “everything,” every response reasons from panic. The reasoning downstream can be flawless and still land in the wrong place, because it started from a name that wasn’t true.
So naming is the first act of reason, not a courtesy you add at the end. Before you can think clearly about something, you have to say what it is. Everything else is downstream of that sentence.
The practice is small. The next time you name something, a variable, a ticket, the thing that happened in production last night, ask whether the name says what it is or what you hope it is. If it’s what you hope, rename it. And if you’re the one typing “everything is down,” stop and say what’s actually down.
Marcus wore the purple and called it sheep wool dyed with shellfish blood. You can call an outage an outage.
👉 If you enjoy reading this post, feel free to share it with friends!
Or feel free to click the ❤️ button on this post so more people can discover it on Substack 🙏
You can find me on X and Instagram.


