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.
Term | Description |
---|---|
spaghetti code | badly structured code that is difficult to detangle |
god-object | a software component that does too many things and it must be simplified |
shotgun surgery | when you make too many unrelated changes in too many files at the same time |
glue code | code that connects other code - normally glue code is perceived as being lower quality than the components that it connects |
throw-away code | a quick hack that will be inconsequential if removed |
golden hammer | when you over-use a tool or a pattern even when it is not a good fit for the problem domain |
cargo cult programming | using code or patterns without understanding them, just because they seem to work |
fear-driven development | coding driven by fear of touching fragile systems |
stovepipe system | system developed in isolated pieces with little to no integration |
heisenbug | a 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 kiddie | an unskilled individual who uses scripts or programs without even understanding them |
code smell | a surface indication that something may be wrong with the code |
technical debt | poor 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 numbers | using unexplained constants directly in code instead of named variables |
hardcoding | embedding fixed values or logic inside the code, reducing flexibility |
refuctoring | a process that makes the code worse and less understandable - the opposite of refactoring |
dead code | code that is no longer used or it is not reachable |
zebra pattern | different coding styles in the same program |
factory factory | overuse of the factory pattern - a sign of over-engineering |
over-engineering | too much planning and structure that leads to less flexibility |
verbose code | code 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.