back to reflections

Before AI Slop We Had Spaghetti Code

In Reddit communities dedicated to vibe coding, I'm seeing more posts suggesting that experienced developers are unfairly critical of AI-generated code. To newcomers, this can look like gatekeeping, as if seasoned programmers are dismissing AI code simply because it's new or threatening. However, what appears to be hostility is usually just pattern recognition. Long before AI-assisted programming existed, developers had well-established terms for bad code and practices that reflect poor understanding. The criticism isn't new - just old problems in a new context.

To address this disconnect I pulled together a list of old-school programming terms that predate AI-coding assistants but describe the same problems developers criticize today. I think these terms could help new developers understand that this criticism comes from a long tradition, and it's not just because code is AI-generated.

TermDescription
spaghetti codebadly structured code that is difficult to detangle
god-objecta software component that does too many things and it must be simplified
shotgun surgerywhen you make too many unrelated changes in too many files at the same time
glue codecode that connects other code - normally glue code is perceived as being lower quality than the components that it connects
throw-away codea quick hack that will be inconsequential if removed
golden hammerwhen you over-use a tool or a pattern even when it is not a good fit for the problem domain
cargo cult programmingusing code or patterns without understanding them, just because they seem to work
fear-driven developmentcoding driven by fear of touching fragile systems
stovepipe systemsystem developed in isolated pieces with little to no integration
heisenbuga bug that seems to disappear when you try to debug it
1337 (leet or elite)a very good programmer - sometimes associated with hackers (in more traditional sense)
script kiddiean unskilled individual who uses scripts or programs without even understanding them
code smella surface indication that something may be wrong with the code
technical debtpoor design or quick fixes that need to be "repaid" with future refactoring
yoda conditions (yoda code)when you write code in reverse or illogical order - for example if (5 == x) instead of if (x == 5)
magic numbersusing unexplained constants directly in code instead of named variables
hardcodingembedding fixed values or logic inside the code, reducing flexibility
refuctoringa process that makes the code worse and less understandable - the opposite of refactoring
dead codecode that is no longer used or it is not reachable
zebra patterndifferent coding styles in the same program
factory factoryoveruse of the factory pattern - a sign of over-engineering
over-engineeringtoo much planning and structure that leads to less flexibility
verbose codecode that could be expressed in simpler terms
AI slop (for code)a new term that describes code that is written by vibe coder that exibits many of the bad practices outlined above

When developers criticize AI-generated code, it’s not some knee-jerk reaction just because it came from an AI. What they’re seeing are patterns that they’ve been trained over years to recognize as bad code. The thing is, they often struggle to articulate these problems to people who are new to programming, because understanding these terms takes experience. Definitions are one thing - recognizing them in the wild is another.

I don’t believe developers are scared of AI. Most of them love new technology and are totally on board with progress, including AI. But the good ones also have extremely high standards, and right now, AI just doesn’t meet them. Yes, AI can generate landing pages and basic CRUD apps that might look impressive to someone new to coding. But for seasoned developers, those aren’t hard problems - they were just tedious. The real engineering challenges are in building distributed systems, optimizing performance, dealing with security, scalability, and reliability. And automating the boring stuff? That’s a win.

In fact, the resistance to AI is almost non-existent in professional settings. AI is already helping many teams to write tests, catch bugs, speed up repetitive tasks. But when it comes to code quality, developers aren’t being negative. They’re just holding the line.