Code Review Hypocrisy: Garbage vs. Trash
Description
This meme is a screenshot of a tweet from user Katerina Borodina (@kathyra_). The text of the tweet reads, 'when you push your changes but deny someone's pull request'. Below this caption is a photograph of a white rectangular sign with black, bold, sans-serif text. The sign says 'GARBAGE ONLY' on the top line, and 'NO TRASH' on the line below. The humor stems from the absurd and arbitrary distinction between 'garbage' and 'trash', which are synonyms. This is used as a metaphor for the hypocrisy sometimes present in code reviews, where a developer might consider their own code (the 'garbage') acceptable for merging, while rejecting a colleague's code (the 'trash') for similar or equally trivial reasons. For senior developers, it's a cynical but relatable take on ego, subjectivity, and power dynamics in the pull request process
Comments
7Comment deleted
My code is 'technical debt'. Your code is 'a legacy-to-be'. It's all about framing
Senior dev logic: my emergency hotfix can go straight to prod because “Garbage Only™” is basically a design pattern; your fully-tested PR is rejected because we don’t allow “trash” that might bump the cyclomatic complexity by one
The difference between garbage and trash is that garbage has commit history proving it evolved from good intentions
The classic 'do as I say, not as I commit' philosophy - where your hastily written 3am refactor that touches 47 files gets force-pushed to main, but your colleague's meticulously crafted, fully tested, single-line bug fix gets blocked for 'not following team conventions.' It's the architectural equivalent of demanding SOLID principles in code reviews while your own codebase is held together by global variables and prayer
Protected branch policy: my admin-merge is “garbage collection”; your PR is trash until it survives a design doc, perf benchmarks, and three approvers on PTO
We call it “quality gates” - your code needs two approvals and green CI; my commits are “expedited maintenance” straight to main - governance for thee, velocity for me
My pushes bypass linting like GC pauses; your PR triggers every static analyzer alarm. Denied