Hard Things in Computer Science, And AI Aren’t Fixing Them

Computer Science jokes are old, but they’re still true

“There are only two hard things in computer science: cache invalidation and naming things.” — Phil Karlton (and eventually, off-by-one errors).

We’ve laughed at this trope for decades, but we’ve spent far too little time dissecting the second one: Naming. On the surface, naming is about semantics—choosing user_id over id_1. But at its core, naming is an act of exorcism. In ancient Tibetan folklore, as well as in Western occultism (think the Goetia or Ursula K. Le Guin’s Earthsea), to know the "True Name" of a demon or a dragon is to have absolute power over it. To name a bug is to strip it of its mystery. To name a design pattern is to make it reproducible.

In the era of AI coding assistants, this is more important than ever. Low-hanging fruit—the repetitive boilerplate, the tasks with clear patterns—will soon be “harvested” by AI. Everything it can solve, it will. But the problems that haven’t been documented, defined, or named remain out of reach. AI simply doesn’t know what it doesn’t know.

The Value of the Waste: When Byproducts Become the Point

Recently, I’ve been experimenting with AI coding assistants almost every day. The results are impressive—sometimes even exhilarating. Years of hobby projects suddenly feel “done.” But there’s also a hollow feeling: the AI takes over the thinking, the tinkering, the trial-and-error process that once taught me more than the final product ever did.

Here’s a key insight: sometimes the byproducts are often more valuable than the intended product.

The real danger of AI isn't that it's "wrong"—it's that it's too helpful. AI is a "direct-to-result" machine. But in the history of human progress, the Product is often the least interesting part. The Byproduct is where the revolution happens.

When you struggle to build a library, you might fail to ship the app on time, but you end up naming a new state-management pattern or a faster JSON parser. That "byproduct" becomes your tool for the next ten years. AI doesn't do "side quests." It follows the shortest path of least resistance to satisfy your prompt.

In the history of software, our most vital concepts weren’t created by committee; they were "named" after the lessons we learned while failing to do something else.

These names don't describe the goal; they describe the scar tissue of the process. By focusing only on the "clean result" provided by AI, we risk losing the ability to recognize these scars—and without the scars, we have nothing to name.

If we move to a world where we only write "Specs" and let Agents handle the "Implementation," we are becoming high-level managers of a Soviet tank factory of "fitting".

The Engineering of "Fitting"

I happened to read a fascinating engineering story on zhihu from Soviet-era manufacturing—what they called “Fitting” (пригонка).

In Western manufacturing, the gold standard is "Interchangeable Parts." You build a part to a 0.01mm tolerance so it fits any machine on the line. But in Soviet tank factories, tolerances were loose. Instead of perfecting the part, they perfected the "fit."

AI coding today is turning us all into "fitters." We are no longer architects designing perfect, interchangeable modules; we are engineers in a tank factory, taking AI-generated blocks that almost work and "fitting" them together with shims and workarounds. The AI can accelerate production, but it lacks the "eyes" to see why a part doesn't fit—it just produces more parts.

The Final Exorcism

If we outsource the struggle, we outsource the learning. The "fitting" process is where the real knowledge hides. When you manually debug a race condition for three days, you aren't just fixing a line of code; you are learning the "True Name" of concurrency.

AI can give you the solution, but it cannot give you the "Aha!" moment. It can provide the syntax, but it cannot provide the Naming. As we move deeper into this automated era, the role of the developer is shifting from "Writer" to "Editor," and from "Builder" to "Exorcist." Our value will no longer lie in the volume of code we produce—AI has made the marginal cost of code zero. Our value will lie in our ability to look at a chaotic "fitting" of AI logic and give it a name.

Because in the end, the AI is just a mirror of what has already been said. It can rearrange the words, but it cannot speak a new True Name into existence. If you let the AI do all the "shaving," don't be surprised when you find yourself standing in the cold, having forgotten why you wanted to wash the car in the first place.

Master the tools, use them to "fit" your dreams into reality, but never stop looking for the "detour" in the relay. That's where the next great idea is hiding, waiting for someone to finally give it a name.


Author's note:

This original article was organically, hand-written by me https://blog.est.im/2026/stderr-03

I also drafted this English version, and ultimately "fitted" together by Gemini 3.

Comments