Skip to content
DevMeme
2655 of 7435
The Evolution of Code Review Feedback: Juniors vs. Seniors
CodeReviews Post #2934, on Apr 10, 2021 in TG

The Evolution of Code Review Feedback: Juniors vs. Seniors

Why is this CodeReviews meme funny?

Level 1: Cleaning Up the Mess

Think of it like cleaning your room. A younger kid might yell at their friend, “Hey, you’re not cleaning up the right way!” and the friend yells back, “You just don’t understand why I’m doing it this way!” They’re arguing over the proper way to clean, and both are upset.

Now imagine two older siblings looking at their totally messy room. One just says, “Wow, this place is a dump.” The other laughs and says, “Yeah, I know.” They both agree it’s messy, and nobody gets upset – then they start tidying up (or at least joke about it).

This meme is just like that. When we’re new at something, we argue about doing things the “perfect” way. When we’re more experienced, we simply admit when something’s a mess and then work together to fix it. It’s funny because it shows how people go from stressing over rules to accepting reality as they learn and grow.

Level 2: Best Practices vs Reality

Let’s unpack the joke in simpler terms. First, a code review is when developers check each other’s code before it’s merged or released. It’s like proofreading a friend’s essay but for software: you look for bugs, suggest improvements, and ensure the code follows your team’s guidelines. In the meme, the top part shows two junior developers (developers who are relatively new to the field) having a dramatic code review discussion. One junior is essentially saying, “Your code violates important rules we’re supposed to follow!” – specifically mentioning the SOLID principles and code style guidelines.

SOLID is a set of five famous rules in object-oriented programming that many developers learn early on to write cleaner, well-designed code. The principles are:

  • Single Responsibility – each class or module should do one job (no overstuffed “God” classes that handle everything).
  • Open/Closed – code should be open to extension but closed to modification (add new features without constantly rewriting old code).
  • Liskov Substitution – objects of a parent class should be replaceable with objects of a subclass without breaking things (a fancy way of saying subclasses shouldn’t betray the expectations set by their parent classes).
  • Interface Segregation – don’t force one class to implement methods it doesn’t need; instead break large interfaces into smaller ones (no giant catch-all interfaces that make classes do too much).
  • Dependency Inversion – depend on abstractions (like interfaces), not concrete implementations (think of plugging into a universal socket instead of hard-coding to a specific power source).

A junior dev often latches onto these rules and other code style best practices (like naming conventions, consistent indentation, where to put braces, etc.) as the gospel of good coding. They might say things like “This function is too long” or “Your variable names don’t follow our style guide.” These are sometimes called nitpicks when they’re minor issues that don’t actually break the software. In the meme, the junior reviewer’s comment “Your code breaks SOLID and code style best practices” is exactly this kind of textbook-driven critique. It’s not wrong — those guidelines exist for good reason — but new devs can be very strict about them.

Now, look at the junior on the right in the top panel. He’s crying and yelling “No! You don’t understand!” This suggests the person whose code is being critiqued feels attacked or misunderstood. It’s common for less experienced devs to take code criticism personally. If you poured a lot of effort into writing something, hearing someone say it’s all wrong can hurt. The junior developer might feel that the reviewer is nitpicking or not seeing the bigger picture (maybe the junior had a reason to write the code that way, or they just didn’t know a better way yet). This can lead to a lot of back-and-forth arguing in a code review, where neither side really wins and everyone ends up frustrated.

Now compare that to the bottom half: Senior Devs. A senior developer is someone with years of coding experience, who’s probably been through hundreds of code reviews, tight deadlines, and messy projects. The meme shows the seniors communicating in a much more blunt and relaxed way:

  • The first senior plainly says, “Your code is shit.” That’s a very harsh way to say “your code isn’t good.” It’s direct feedback with no sugarcoating.
  • The second senior just replies, “I know.” No arguing, no crying – just agreeing that the code isn’t great.

In reality, most people wouldn’t phrase it exactly like “your code is shit” in a professional code review, even if they’re senior. Usually, they’d still be a bit polite (“This code has a lot of issues” or “We might need to rethink this part”). But the meme exaggerates to make a point: senior devs often skip the formalities and get straight to the core issue when they talk to each other. They focus on the outcome (does the code do what it needs to and will it cause problems?) rather than naming the specific rule that was broken. And the experienced developer hearing the critique doesn’t get upset; they already know the code isn’t great. In fact, it might even be the person receiving the feedback who originally wrote that messy code, and they’re fully aware of its flaws. The quick “I know” response shows that the senior developer is not taking the criticism as an insult. They acknowledge the problem and are ready to deal with it.

We can summarize the difference in communication like this:

Junior Code Review (by the book) Senior Code Review (pragmatic)
“This violates the SOLID principles.” “This code is really messy.”
Focuses on following best practices to the letter. Focuses on whether the code works and can be maintained.
Might feel offended or argue back when the code is criticized. Doesn’t take it personally – agrees the code needs improvement.
Aims for perfection in code structure and style. Aims for practicality – get it working first, then improve if possible.

As developers gain experience, they often become more pragmatic. Pragmatic means practical and realistic. A senior dev has likely seen that sometimes you have to write code that’s “good enough for now” and improve it later, whereas a junior might try to make everything perfect from the start. This can lead to seniors occasionally producing code that isn’t ideal (maybe it violates some SOLID principles or isn’t very elegant) because they had to meet a deadline or quickly patch a problem. Both seniors in the meme have probably been through that. That’s why one can bluntly say “this code is bad” and the other just nods “yep” – it’s almost a shared joke at that point.

The humor in this meme comes from seeing these two stages side by side. When we’re new, we tend to be very serious about the rules and can get into emotional debates over code feedback (just like the top panels). When we’re more experienced, we cut to the chase and don’t get bent out of shape by feedback – we might even be the first to admit our own code’s faults. It’s a snapshot of how junior vs senior interactions often go in code reviews: the junior phase is all about best practices and pride, and the senior phase is about honesty and fixing problems quickly. It’s funny and relatable to developers because most of us have lived through that change in perspective.

Level 3: From SOLID to Spaghetti

Junior Dev A: "Your code breaks SOLID and code style best practices."
Junior Dev B: "No! You don't understand!"
Senior Dev A: "Your code is shit."
Senior Dev B: "I know."

In the top panels of this meme, two Junior Devs are heatedly arguing about a code review. The left junior reviewer points out “Your code breaks SOLID and code style best practices” with almost religious fervor. SOLID stands for five core object-oriented design principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion). These are textbook rules meant to keep code clean, modular, and maintainable. The right junior developer (likely the code author) is depicted crying and shouting “No! You don’t understand!” – getting defensive as if their very honor is under attack. This top scene satirizes how newbies often approach code reviews: with textbook ideals in hand and emotions running high, ready to nitpick every little deviation from the holy best practices.

By contrast, the bottom panels show two Senior Devs (represented by the bearded Chad Wojak characters) having a much shorter exchange. The left senior calmly states “Your code is shit.” No elaborate critique, no mention of specific design principles – just a blunt assessment. And the right senior simply nods with “I know.” There’s no outburst, no denial, just calm acknowledgment. This stark difference is where the meme’s humor kicks in: after years in the industry, experienced devs often communicate in a brutally honest, almost deadpan way that would scandalize their younger selves. The seniors skip the nuanced SOLID lecture and jump straight to the bottom line. They both understand that, yeah, the code is far from ideal (it might even be violating every principle in the book), but they also share an implicit understanding of why it ended up that way.

This meme highlights a pragmatic programming mindset that tends to develop over time. Junior engineers are often idealistic – they just learned the “one true way” to write code from courses, blogs, and maybe reading Clean Code. They enforce things like consistent code style, proper design patterns, and the SOLID principles with zeal. If a variable name doesn’t conform to the style guide or a class does too much (violating the Single Responsibility principle), a new dev might treat it like a cardinal sin. Code reviews among juniors can turn into lengthy debates over the right way, with lots of formal phrases: “This violates X principle,” “According to our standards, you should refactor this.” Each comment can feel personal to the author, because less experienced devs often tie their self-worth to how perfectly their code meets these standards. That’s why the right-hand junior in the meme is crying “You don’t understand!” – it’s the frustration of a newbie who thinks the reviewer is being unfair or missing the bigger picture of their approach. Junior-on-junior code review often lacks perspective; they either nitpick each other’s code to death or defend their own code like it’s their baby.

Senior developers, on the other hand, have been around the block. They’ve seen ugly, “spaghetti” code that somehow works and beautifully architected code that fails under real-world conditions. They know that sometimes you have to bend or break best practices to meet a deadline or keep legacy systems running. The phrase “Your code is shit” in the meme is an exaggeration of the kind of blunt feedback that can happen when there’s mutual understanding and trust. It’s funny because it’s true: by the time you’re a senior, you’ve likely written plenty of questionable code yourself at 2 AM while firefighting a production issue. You’ve made peace with the fact that not every commit will be a paragon of code quality. In a real code review, a senior might not literally say “shit,” but they’ll often cut to the chase: “This code has serious problems.” And the other senior won’t burst into tears or argument; instead, they’ll often respond with something like, “Yeah, I know it’s bad. We had to rush it to meet the release. Let’s figure out how to improve it.” In other words, seasoned devs focus on fixing the problem rather than proving they’re right.

The maturity_in_code_reviews being depicted is almost cathartic. Both senior dev characters understand that no code is perfect, especially not on the first try or under tough constraints. The right senior’s “I know” isn’t defeatist; it’s a mark of experience — an admission that even CodeQuality is a spectrum and sometimes you land on the ugly end despite your best intentions. Seniors carry less ego about their code. They’ve learned about technical debt the hard way: sometimes you knowingly incur it by writing less-than-SOLID code, promising yourself (often unrealistically) that you’ll clean it up later (“We’ll refactor it next sprint,” famous last words). The humor here is that the seniors are basically joking about something very real: a lot of code is kind of crap, and everyone knows it, so why dance around it? It’s code review banter distilled to its purest form.

Even the visual format amplifies this contrast. The top uses the standard woeful Wojak faces (one even with tears and glasses) to show stress and despair over code critique. It’s basically two novices in a dramatic slap-fight about programming rules. The bottom uses the confident Chad Wojak figures with impeccable jawlines and cool beards, emphasizing how senior_vs_junior_communication differs in tone. The Chad on the left delivers the harsh one-liner with a straight face, and the Chad on the right accepts it with equal stoicism. It comes off almost like an inside joke between them — they’re on the same wavelength. This plays on the stereotype that senior devs become a bit jaded or dark-humored. They’ll call an ugly hack exactly what it is, without the sugarcoat of methodology jargon. After all, when you’ve survived enough 3 AM deployment rollbacks and refactored other people’s legacy monstrosities for years, a blunt “this code is garbage” can practically become a term of endearment.

In essence, the meme humorously captures how developer communication evolves: from earnest, theory-driven critique to concise, brutally honest truth. It’s poking fun at both sides. The juniors are lampooned for obsessing over SOLID principles and style guides to the point of tears. The seniors are mocked (affectionately) for their candid, almost comically terse feedback style. But beneath the exaggeration lies a shared understanding: writing good software is hard, and even the best of us produce cringe-worthy code sometimes. The difference is in how we talk about it. Early in your career, a comment on code feels like a judgment on you as a developer. With experience, you realize “my code is crap” isn’t an insult, it’s often just a fact – one you acknowledge so you can go about making it better (or at least making it work). That dose of blunt honesty is something you earn over time, and ironically, it can make code reviews far more efficient and even oddly comforting – because everyone’s finally on the same page about the mess at hand.

Description

A four-quadrant meme using Wojak characters to contrast the communication styles of junior and senior developers during code reviews. The top half, labeled 'Junior Devs,' shows a developer hiding a crying face behind a smug mask, stating, 'Your code breaks SOLID and code style best practices.' The recipient, a crying Wojak, retorts defensively, 'No! You don't understand!'. This depicts a pedantic, emotionally charged exchange common among less experienced engineers. The bottom half, labeled 'Senior Devs,' features two calm, bearded 'Chad' Wojak characters. One states bluntly, 'Your code is shit.' The other simply replies, 'I know.' This illustrates the pragmatic, direct, and ego-free communication that often develops with experience, where both parties understand the real-world constraints and imperfections of software development

Comments

43
Anonymous ★ Top Pick A junior's code review is an essay arguing about SOLID principles. A senior's code review is just the link to the new ticket in the tech debt epic
  1. Anonymous ★ Top Pick

    A junior's code review is an essay arguing about SOLID principles. A senior's code review is just the link to the new ticket in the tech debt epic

  2. Anonymous

    After two decades of code reviews I’ve reduced SOLID to one rule: the Single Liability Principle - whoever hits Merge owns the 3 AM pager

  3. Anonymous

    The real senior developer evolution isn't learning to write better code - it's developing the emotional detachment to watch your carefully crafted abstractions get called 'shit' in a PR comment and responding with 'fair point, let me refactor that' instead of writing a 3-page defensive essay about why your factory factory pattern was actually genius

  4. Anonymous

    The real senior move isn't writing perfect code - it's having the battle scars to know that 'shit code that ships' beats 'perfect code in your head' every time. We've all written that 3am hotfix that violates every SOLID principle but saves the quarter. The junior's defending their pristine architecture while the senior's already moved on to the next fire, knowing that code quality is a spectrum and shipping is binary

  5. Anonymous

    After 15 years, code review quietly rebrands to risk review - yes it violates SOLID, but touching it violates the SLO, the budget, and our weekend

  6. Anonymous

    Junior code review: “This violates SOLID.” Senior code review: “Touching it violates SLOs.” Architecture is choosing which acronym you’re willing to break this quarter

  7. Anonymous

    Juniors code SOLID; seniors know it'll be single-line prod fixes at 3AM

  8. idr 5y

    fuck SOLID/DDD/whatever, never helped and never will

    1. Deleted Account 5y

      whats ddd

      1. idr 5y

        you know what i will answer with

        1. Deleted Account 5y

          DICK DICK DICK

          1. idr 5y

            no i meant google anyway my point is, if you cannot come up with a good design using the thing called reasoning, no paradigm will help you

            1. Deleted Account 5y

              oh, you meant google...

            2. Deleted Account 5y

              well ofc, tho you can still help the compiler if you write the code in a specific way

              1. idr 5y

                compiler? it doesn't care what your code does and how it's structered while it's up to the compiler and language specification

                1. Deleted Account 5y

                  well, if it's an optimizing compiler, it kinda does, if you write code that's hinting the compiler at what you actally mean (eg using fold instead of plain for to accumulate a range of vals), it will optimize more

                  1. idr 5y

                    well yes obviously, but no paradigm aims to "hint the compiler how to optimize something". most paradigms aim to make the code, apparently, easier to maintain and read, tho on my experience in some cases they even make it worse. some oop programmers would go out of their way to write a singleton class instead of just writing a function, over-worrying about parts of code being reusable even though they are used only in one place but they abstract it into another function/class anyway

                    1. Deleted Account 5y

                      btw can we talk about how singleton is literally hitler

                      1. Deleted Account 5y

                        worst (p)oop antipattern

                      2. @RiedleroD 5y

                        idk I like singletons if used correctly

                        1. Deleted Account 5y

                          std::cin and std::cout in c++ are not singletons

                          1. @RiedleroD 5y

                            I was talking about singletons in Python

                            1. Deleted Account 5y

                              oh, python doesn't do oop that much

                              1. @RiedleroD 5y

                                literally everything in pytohn is an object

                                1. Deleted Account 5y

                                  well yes, there aren't classes tho, like java clsses

                                  1. @RiedleroD 5y

                                    Yes there are? Not exactly the same, but there are classes.

                                    1. Deleted Account 5y

                                      well, not exactly the same

                                      1. @RiedleroD 5y

                                        that's what I said

                                        1. Deleted Account 5y

                                          yes

                                    2. idr 5y

                                      he probably means that oop in python is not mandatory unlike java

                                      1. @RiedleroD 5y

                                        which should be the default imo

                                      2. Deleted Account 5y

                                        this too

                                      3. @nuntikov 5y

                                        How about functional java...

                                        1. @RiedleroD 5y

                                          Java 18 be like

                                          1. Deleted Account 5y

                                            it sounds like c++29

                                            1. Deleted Account 5y

                                              oh i remember the boost.blockchain talk

                                              1. @RiedleroD 5y

                                                I don't

                                                1. Deleted Account 5y

                                                  https://www.youtube.com/watch?v=tucdEnV4KYA

                                                  1. Deleted Account 5y

                                                    i like how he goes: you may be confused by this forward slash on the last line, it represents arithmetic division

                                            2. @nuntikov 5y

                                              C++29? What?

                                        2. idr 5y

                                          well every major framework is not

                        2. idr 5y

                          could you define "correctly"?

                          1. @RiedleroD 5y

                            no. I can't. Sorry.

Use J and K for navigation