Engineering Culture

Shame is the most expensive bug in your codebase

The most expensive bug in the AI era is not the code you no longer understand. It is the silence around it. On why honesty, not velocity, is the real bottleneck in AI-assisted engineering.

A staff engineer I respect approved a pull request last week that he did not understand.

He told me quietly, the way people confess things they have already decided not to feel bad about. The AI wrote it. The tests passed. It looked like something he would have written, more or less. The ticket was old, everyone wanted it gone, so he hit approve. A part of his brain that used to be load-bearing just did not fire.

He is not lazy. He is not a fraud. He is one of the best engineers I know. That is exactly why it bothered him.

Here is the part nobody says out loud: a lot of us are now shipping code we do not fully recognize. Not all of it. Not even most of it on a good week. But some of it. The function that "works" and that you could not re-derive on a whiteboard if your life depended on it. The migration the model wrote that you skimmed instead of read. The clever block you accepted because pushing back would have meant admitting you were not sure why it was clever.

And then we do the thing humans do with feelings we are not supposed to have. We hide it.

The bug is the silence, not the code

A bug you can see is cheap. You file it, you fix it, you move on. A bug you are ashamed of is expensive, because shame does not file tickets. Shame closes the tab. Shame says "it is probably fine" and changes the subject. Shame makes you the only person who knows about the soft spot in the system, and then makes sure you never tell anyone.

You cannot fix a bug you are not allowed to talk about. And right now, on a lot of teams, the thing you are quietly not allowed to talk about is how much of the work you no longer understand.

We measure the wrong cost. We celebrate the velocity. Look how much we shipped, look how fast. That number goes on the slide. The other number, the one about comprehension, about who actually understands the system we are now all responsible for, does not go on any slide. There is no dashboard for "percentage of our codebase that exactly one tired person half-understands." But that is the number that pages you at 3am.

Honesty is the bottleneck now

The fix is not "use less AI." That ship has sailed, and it was a good ship. The fix is making it cheap to say one sentence: I shipped this and I am not sure I get it.

On a healthy team that sentence is cheap, and it triggers something useful. A second read. A pairing hour. A "yeah, me neither, let us actually understand this before it owns us." On most teams that sentence is expensive, so nobody says it, and the not-understanding compounds quietly, like interest, until one day the system does something nobody can explain and suddenly everybody is very interested in understanding it.

You are signing your name to work you no longer fully recognize. That is not a moral failing. It is the default outcome of tools that made producing output nearly free while leaving the part where you understand it exactly as expensive as it always was.

The teams that come out of this era ahead will not be the ones that resisted AI, and not the ones that adopted it fastest. They will be the ones that made it normal to admit what they do not understand, fast enough to fix it. Honesty is the bottleneck. Shame is the tax.

So the cheapest thing you can do this week is not write more code. It is to say the quiet part to one person you trust. Here is something I shipped that I do not fully understand. Watch what happens. Either nothing does, which is a relief, or you just found the most expensive bug in your codebase before it found you.

I wrote a short book about this: the honesty cost of AI-assisted engineering, and what to do about it. It is free, no signup, PDF or EPUB: How to Use AI Without Lying to Yourself. The book is optional. The conversation with your team is not.