§ essay · ai

Nobody Understands the Code

Business wants speed. AI delivers. But every line nobody understands is a dead program waiting to break.

Code as artifact means that as long as it works, nothing else matters. AI made that argument easy to sell. Code is cheaper to generate now, and business sees that as progress.

Against everything we learned

As a developer, it goes against what we learn. Code might be supporting the business process, but we craft it with care. It’s not just about getting it to work, but making sure the other developer can understand easily, making sure that our current decision doesn’t produce compound debt.

Code turned commodity

But AI is turning code into commodity. It writes code faster than developers can understand. Making business processes move fast. Too fast.

This debate between business and engineering isn’t new. But the arrival of AI tilted the scale in favor of business.

Just use AI

The business decision makers have new ammunition when debating with engineering team, “just use AI”. If you’ve worked on a big project lately, they will cut the timeline aggressively.

The business people love speed. They won’t slow down if they can help it. Time equals money for any business. The longer they delay, the longer they lose money. Speed is the only metric they trust.

The engineering team won’t be able to argue. Before AI, sometimes we could request for maintenance period, in which we fix things. Now, they will always say “just use AI”. Arguing with those who only care about “it works now” won’t lead to anything different.

Nobody reads the code

If you’ve seen AI-generated code in a large codebase, you know what it looks like. Hard to follow, hard to trace. It comes in faster than anyone can review, so developers auto approve the PR or copy-paste the review from AI. Debugging it by hand is a nightmare. So developers let AI debug their code too.

The managers will always tell developers to own the code, even when it was written by AI. But that’s impossible when the only thing they care about is speed. Everything else is an afterthought. Treating code as a byproduct will eventually cost you.

The line

Both extremes lose. If you only code by hand, you fall behind. If you treat code as disposable, the system grows beyond anyone’s understanding. When it breaks, no one knows where to look.

The dividing line isn’t who typed the code. It’s who understands it.

If AI wrote every line, but you reviewed it, tested it, and can explain what it does, that code is yours. You can fix it when it breaks. You can refactor it when the requirements change.

If you can’t explain the diff, don’t approve it. Approving code you don’t understand just delays the cost.

Dead programs

Peter Naur argued in 1985 that the real “program” isn’t the text on disk. It’s the understanding in the programmer’s head. If the team who built it leaves, the program is effectively dead. It still runs. Nobody can confidently change it anymore.

Every time you ship code you don’t understand, you’re shipping a tiny piece of dead program. It works today. When it needs to change, you’re stuck. The dangerous zone is when teams are accidentally there while thinking they’re not. They ship AI-generated code, rubber-stamp the review, and convince themselves they understand it.

You can use AI. Just make sure someone still understands what it wrote. That’s the only thing that keeps the program alive.

Code you can’t explain is code you don’t own.