Skip to content
DevMeme
2798 of 7435
The Self-Congratulatory CI Pipeline
Testing Post #3094, on May 14, 2021 in TG

The Self-Congratulatory CI Pipeline

Why is this Testing meme funny?

Level 1: Hiding the Mess

Imagine you’re told to clean your room, but you’re feeling lazy. Instead of actually putting each toy in its right place, you shove all your toys and clothes under the bed or into a closet where no one can see them. 😇 Then you proudly tell your parents, “Look, my room is clean!” and even give yourself a gold star for doing such a great job. But did you really clean it? Nope – you just hid the mess out of sight.

This meme is joking about the same kind of thing, but with computer tests. The developer had some tests that were making their project fail (that’s like a messy room). Instead of fixing what was wrong, they just told the computer not to look at those tests (hiding the mess under the bed). Suddenly everything looks okay (the project “build” is clean and green), and the developer feels happy and gives themselves an award. It’s funny because we know they didn’t actually solve the problem – they just covered it up to make things look perfect. It’s like giving yourself a medal for not doing your homework and hoping nobody notices the empty pages.

Level 2: Skip It, Ship It

Let’s break down what’s happening here. In modern software development, teams use CI/CD pipelines (Continuous Integration/Continuous Delivery) to automatically build and test their code. Think of it like a robot that checks your homework (the code) every time you make a change. If anything is wrong – say a test fails – the robot marks the build with a big red X (fail) and stops the process. A successful build gets a green check mark (pass). Developers love seeing green because it means their changes didn’t break anything – at least, in theory.

Now, what are these "tests" we're talking about? Unit tests are small programs that automatically verify that pieces of your code work correctly. For example, if you have a function add(a, b) that should return the sum of two numbers, you’d write a test to check that add(2, 2) returns 4. A flaky test is a test that sometimes passes and sometimes fails without any changes to the code. Flaky tests are super frustrating: one run it passes (green), the next run it fails (red) due to things like timing issues, random data, or environment quirks. They’re like a smoke alarm that goes off at random – after a while you might be tempted to just remove the batteries. In coding, “removing the batteries” means disabling that test.

Skipping tests (or commenting them out) means telling the CI pipeline not to run those tests at all. Developers have a bunch of ways to do this:

  • Commenting out the test code: putting // or # in front of test lines so they don’t execute.
  • Using a skip annotation or flag: many testing frameworks let you tag a test as “ignored”. For example, in Python’s pytest you can write @pytest.mark.skip(reason="Flaky test") above a test function, or in JUnit (Java) you use @Disabled("flaky"). In JavaScript’s Jest/Mocha you might use it.skip("should do XYZ", () => { ... }). This tells the test runner to completely ignore that test.
  • Running the build with a skip flag: e.g. using a Maven command like mvn install -DskipTests which explicitly says “build the project, but don’t run any tests at all.”

Here’s a quick illustration. Imagine we have a flaky test in JavaScript using Mocha:

// A flaky test that we decide to skip:
it.skip("should retrieve user data from API", function(done) {
  // ... test code that sometimes fails ...
  // (maybe due to network timing issues or an unsettled mock)
});

By adding .skip to the it test declaration, this test won’t run, and therefore it can’t fail. Our ContinuousIntegration pipeline won’t see any failure from this test anymore. Result? The build stays green ✅. Problem solved, right? Well, only on the surface.

The meme’s caption “Skipping tests so the build doesn't fail” is exactly describing this scenario. Instead of fixing the failing test or the bug causing the test to fail, the developer just skips it. The image is the famous "self-awarding medal" meme: the person giving the medal and the one receiving it are the same (even the face is the same person). It’s used to poke fun at situations where someone is basically rewarding themselves for their own action, especially when that action is dubious. Here, the developer both creates the problem (has a failing test) and "solves" it in a cheeky way (disables the test), and then figuratively pats themselves on the back with a medal. The background looks like a fancy award ceremony, which makes it even funnier because skipping tests is definitely not a best practice you’d officially celebrate!

Why would someone do this? Often, teams have a rule: if the build is red (failing), you can’t deploy or merge your code. It’s a good rule to maintain quality. But it also means if a test is flaky or failing, it blocks progress. A junior dev under pressure might think, "I can’t figure out this failing test right now, but I need my code to go through. Maybe I’ll just disable the test. The build will go green and my part is done." In the short term, it appeases the CI gods and unblocks the pipeline. That’s why the text also mentions "to keep CI green" – green means everything passed. It’s like getting a passing grade without answering all the questions.

However, there’s a cost to this trick. By ignoring a test, you might be ignoring a real bug. This is where TechnicalDebt comes in – a term for when you take a shortcut in code that you’ll have to fix later (often with added interest). Disabling a flaky test is considered adding technical debt because you’re avoiding the immediate problem which might grow bigger or cause issues down the line. Maybe that test was flaky because the feature itself has a race condition bug. Now that bug might slip into production unnoticed. Essentially, you sacrificed quality for speed. It’s a bit like covering up symptoms instead of curing the disease.

So the meme humorously captures a common newbie or under-pressure move in software teams:

  • ContinuousIntegration build failing? Quick hack: just skip the problematic tests.
  • Build passes (green)? Celebrate! You “fixed” the build! … except you really didn’t fix anything.

Developers share this meme because it’s a tongue-in-cheek reflection on our own bad habits. It’s both funny and a little uncomfortable because many of us have done it at least once. The meme uses exaggeration (a literal medal ceremony) to say, “Look how silly it is to reward ourselves for something that’s actually bad engineering!” It encourages us (especially newer devs) to recognize that while skipping tests might make the dashboard happy, it’s not a true solution.

Level 3: Award-Winning Anti-Pattern

In the world of Continuous Integration (CI), a passing build is like gold. A green check mark in the BuildPipeline signals all tests passed and everything is supposedly solid. This meme hilariously spotlights an anti-pattern where a developer ensures a green build at any cost: by skipping tests that might fail. The image of a person awarding a medal to an identical figure (a nod to the famous Obama self-medal meme) perfectly captures the absurdity: the developer is basically giving themselves a prize for sweeping a problem under the rug. The bold caption "Skipping tests so the build doesn't fail" calls out the act of disabling or commenting out flaky unit tests just to dodge a red build. It’s an ironic self-congratulatory moment — “Congrats, me, for making the CI green... by cheating!”.

On a technical level, this is poking fun at a real BuildSystems_CICD practice. In CI, when tests are flaky or failing, there's huge pressure to keep the ContinuousIntegration pipeline unblocked. Maybe a critical deploy is waiting, or perhaps management only looks at that green status. So what happens? Instead of fixing the flaky test (which might be non-deterministic due to race conditions, timing issues, or environment inconsistencies), someone slaps an @Ignore or .skip() on it, or uses a build flag to skip running tests altogether. For example, a desperate Java developer might run Maven with -DskipTests=true, effectively telling the build tool “Don’t run any tests, just build the artifact and pretend all is well.” And voila, the build passes! Green build achieved. This is the technical equivalent of taping over the "Check Engine" light in your car so you don't see the warning – the problem isn’t solved, you just stopped looking at it. The meme’s humor comes from this too-relatable scenario: many senior devs have seen someone (maybe even themselves) do this under pressure.

Why is this so funny (and painful) to seasoned engineers? Because it’s a textbook case of TechnicalDebt being created in real time, then bizarrely celebrated. By skipping tests to keep CI green, you’re essentially deferring the problem:

  • The flaky test (and the underlying bug or instability) is still there, lurking in the code.
  • The CI/CD pipeline now reports false confidence. Your build is green but your code quality just took a hit.
  • Future you (or some poor colleague) will eventually have to pay down this debt. The ignored test might let a real bug slip into production, or fail later at an even more inconvenient time (like Friday 5 PM deploys – because Murphy’s Law).
  • Culturally, if this habit spreads, the test suite’s credibility erodes. Suddenly, "green build" doesn’t mean "good build" – it just means problems were hidden.

The formal medal ceremony backdrop in the image underscores the satirical contrast: skipping tests is a dubious practice, yet here it’s treated as if it deserves an award. It’s a jab at how some teams or individuals prioritize metrics over quality. A continually green dashboard looks great to higher-ups, so there’s unspoken incentive to keep it green by any means necessary. The meme captures the dark humor of that situation – the developer knows they’ve done something questionable, but hey, the build is green and nobody’s yelling at them today, so it’s pat-on-the-back time. The Testing ideals say “Don’t ignore failing tests, fix the code or fix the test!” but reality at 3 AM says “Just comment it out for now, we’ll deal with it later.” This gap between best practices and real-world shortcuts is exactly what older engineers smirk (or cringe) at. We’ve all seen a “temporary” // TODO: fix flaky test comment that becomes permanent.

In essence, the meme lampoons how developers sometimes prioritize optics over substance. It’s the perfect self-own: you’re honoring yourself for avoiding failure rather than addressing it. The humor is tinged with truth – this quick fix feels like a win in the moment (hence the medal), but everyone knows you just built a house of cards in your CI pipeline. And yet, in the pressured world of software delivery, this anti-pattern keeps happening, making this meme painfully relatable. As a battle-scarred dev might dryly joke, “The build is green, my conscience is not.”

Description

A popular meme format showing former U.S. President Barack Obama awarding a medal to himself. A smiling Obama is seen in the foreground, while another, more stoic Obama stands behind him, placing the Presidential Medal of Freedom around his neck. The image is captioned with the text: 'Skipping tests so the build doesn't fail'. The humor is derived from applying this self-congratulatory meme template to a common, cynical software development anti-pattern. It perfectly captures the absurdity of a CI/CD pipeline declaring a 'successful' build, while the developer who configured it knows the success is hollow because the quality gates (the tests) were intentionally bypassed. For senior engineers, this is a deeply relatable scenario illustrating the pressure to maintain a 'green' build, even if it means accumulating technical debt and creating a false sense of security

Comments

11
Anonymous ★ Top Pick The build is green, the ticket is closed, and the SRE on call has no idea their pager is about to go critical
  1. Anonymous ★ Top Pick

    The build is green, the ticket is closed, and the SRE on call has no idea their pager is about to go critical

  2. Anonymous

    @Disabled the flaky suite, CI went neon-green, OKRs met - proudly pinning on my “Mean Time To Illusion” medal before prod deploy

  3. Anonymous

    The only thing worse than a developer who skips tests to make the build pass is the senior architect who approved the PR because 'we need to ship today' - and then wonders why production is on fire at 3 AM while the test coverage dashboard proudly shows 0% failure rate

  4. Anonymous

    Ah yes, the classic 'git commit -m "temporarily skip flaky tests"' from 2019 that's still in production. Nothing says 'we value quality' quite like achieving 100% build success by strategically applying @Ignore annotations until the CI turns green. It's not technical debt if you never plan to pay it back - that's just the new baseline architecture

  5. Anonymous

    Achieving 100% test pass rate without a single assertion running: the enterprise architect's ultimate facade pattern for masking integration hell

  6. Anonymous

    -DskipTests to meet the “green builds” OKR: the pipeline stays green, the pager does the integration testing

  7. Anonymous

    Nothing makes DORA metrics sing like -DskipTests; CI hands you a medal, production hands you PagerDuty

  8. @AlexSokolov88 5y

    https://t.me/sendmegifs/176

  9. Deleted Account 5y

    Yeah... In Salesforce you cannot deploy apex code to production org without at least 75% of coverage. So, i saw org, where code was "deployed" via developer console - in-built debugging tool, available for admins, which has a possibility to create and edit apex classes, just by using copy-paste. And this was done by some "senior" dev from Norway.

  10. Deleted Account 5y

    You guys do testing?

  11. @compile_commit 5y

    So I am the devops engineer in my domain and the pm of one of the projects under the domain came to me for the solution of so many pipelines failing build due to sonarqube issues. It escalated to the point where the domain head asked me to do something about it, because the customer would not agree to the time required to write good code. Ultimately I had to fool the sonar scanner by assigning a new version to the code upon every commit. And now every project follows the same...

Use J and K for navigation