Skip to content
DevMeme
2910 of 7435
The Grand Creativity of Over-Engineered Code
CodeQuality Post #3216, on Jun 11, 2021 in TG

The Grand Creativity of Over-Engineered Code

Why is this CodeQuality meme funny?

Level 1: All the Same Name

Imagine a writer who brags about being super creative, but in their story every character is named Alice. 🤦 That would be pretty confusing, right? You couldn’t tell who’s who because everything has the same name. This meme is making fun of programmers for doing something like that. In the picture, the programmer says, “We’re as creative as artists and writers,” but then their code shows them naming everything “Event.” It’s like if you named all your pets “Pet” – one dog, one cat, one bird, all called “Pet.” If someone says “Pet is hungry,” you wouldn’t know which animal they mean! In the same way, if a programmer calls every message an “Event,” it’s not creative at all and gets really confusing. The joke is funny because it’s a silly contradiction: programmers want to think they’re imaginative, but sometimes we do things that are as uncreative as calling every toy you own just “Toy.” It’s a friendly tease that even smart, creative people can be lazy or plain in the simplest ways – like picking names. So the meme basically says: programmers talk about being creative, but then go and name everything with the same boring word. And that little truth makes us laugh at ourselves.

Level 2: The Name Game

Let’s break down why Events.EventBus.sendEvent(Events.Events.events.defaultEvent); looks so silly (and why it’s humorous). This line appears to be from a Java or C# style language. Here’s what each part likely means:

  • Events (the first part) – This could be a package or namespace named "Events". Think of it like a folder or grouping for event-related code.
  • EventBus – This is probably a class (or object) inside that Events namespace. An EventBus is a common component in software that allows different parts of a program to communicate by sending events (messages) to each other.
  • sendEvent(...) – This is a method defined in EventBus that broadcasts or posts an event. Calling EventBus.sendEvent(x) means “send out event x to whoever is listening.”
  • Events.Events.events.defaultEvent (the part inside parentheses) – Oh boy, this is where it gets wild. This suggests there’s something else also named Events inside the Events namespace or class (confusing, right?). It might be a static inner class or an object literally called Events. Then .events could be a field or property of that, and defaultEvent is likely a default or generic event object. Essentially, the programmer created a default event and, true to form, they also named it “Event”.

So the whole call is taking that default event and sending it through the EventBus. The humorous part is how all these pieces are named. The word “Event” appears four times! This is like naming everything in a house “house”: house.house.house(house). It’s redundant and tells a newcomer almost nothing about what’s actually happening. What event is being sent? What does defaultEvent do? The code doesn’t convey those meanings because the names are too generic.

In good practice, naming conventions are meant to make code clearer. For example, instead of naming every class “EventSomething,” we’d prefer specific names: maybe UserSignupEvent or OrderCreatedEvent for different events, and a class EventBus inside a package messaging or eventsystem to clarify its role. In clean coding, if something is already in an “Events” module, you don’t also repeat “Event” in all the class names inside it – that’s redundant naming. It’s like having a folder called Photos and then naming a file inside it photo_picture.jpg – the context is already clear from the folder name.

For a junior developer, this meme highlights a common beginner mistake: using overly broad or repetitive names. CodeSmells like this one are hints that the code design might need improvement. Perhaps the programmer wasn’t sure how to structure an event system, so they dumped everything into an Events container and called it a day. It’s an easy trap when you’re learning: you might create a class DataManager in a package Data with a method manageData(Data data) – see how the word “Data” repeats just like “Event” does here. Experienced devs cringe at this because it can make the code confusing to read and maintain. When everything is named so vaguely, it’s hard to tell the purpose of each part.

The top part of the meme quotes programmers saying, “We are creative people just as artists and writers.” The joke is that in reality, programmers often struggle with creativity in one very basic area: naming things in code. It’s a friendly jab at ourselves. While coding can indeed be very creative (designing systems, solving problems, writing algorithms), we sometimes give classes or variables the laziest names. Inside jokes about Foo and Bar placeholders, or naming every other thing “Manager”, abound in programmer communities. Here, calling everything “Event” is that same joke. It’s funny because it is relatable developer humor – almost every coder has looked back at their old code and found embarrassingly bad names that make you go, “What was I thinking?” This meme is a lighthearted reminder to choose clearer names, and it gets a laugh because we’ve all been the “also programmer” in the text at some point, using one word over and over when a more creative, specific name would have been better.

Level 3: Event Inception

At first glance, this code snippet looks like an event-obsessed tongue twister. The meme sets up an ironic contrast: programmers boast “We are creative like artists and writers,” yet here we have code literally naming everything Event. It’s a classic case of poor naming conventions and a glaring code smell that seasoned engineers instantly recognize. In many programming languages (Java, C#, etc.), we organize classes into namespaces or packages. But here the developer has gone overboard with an “Events” namespace, an EventBus class, an events object, and a defaultEvent – all variations of the same word! This repetition screams redundant class names and violates pokes fun at the DRY principle (“Don’t Repeat Yourself”) in the most literal way.

In a clean, well-structured codebase, names carry meaning. Good naming is a key part of CodeQuality and Clean Code principles: each class or variable name should communicate its intent without needless repetition. But in Events.EventBus.sendEvent(Events.Events.events.defaultEvent);, the intent is buried under a pile of “Event” labels. It’s as if the developer couldn’t think of descriptive names, so they just slapped the same word everywhere – namespace overload to the max. This is both funny and painfully relatable. Every senior dev has encountered a project where NamingThings was handled poorly – everything is ManagerManager or DataObject or, in this case, “EventEvent…Event.”

Why is this funny to experienced devs? It’s a bit of developer self-deprecation. We’ve all been guilty of naming something lazily when creativity (or time) ran out. The meme exaggerates it to absurdity: an EventBus that sends an Event called “defaultEvent” in an Events system – it’s like an event horizon of naming redundancy. 😅 This inside joke hits on the gap between how we like to see ourselves (innovative problem-solvers) and some real-world habits (using unimaginative, copy-paste names). It also hints at the notorious saying among coders: “There are only two hard things in Computer Science: cache invalidation and naming things.” If you’ve ever groaned reviewing code with ridiculously vague or repetitive names, this meme is speaking your language. It satirizes a relatable dev experience: pompously claiming we code like creative art, while committing the sin of naming everything the same. In short, it’s poking fun at our industry’s eternal struggle with one of the simplest-sounding tasks – coming up with good names – and how even clean code ideals can get lost in the rush of coding.

Description

The image is a two-part meme that satirizes the creative self-perception of programmers. The first part, with black text on a white background, states, 'programmers: We are creative people just as artists and writers'. The second part, labeled 'also programmers:', presents the punchline: a screenshot of a single line of code against a dark background. The code reads, 'Events.EventBus.sendEvent(Events.Events.events.defaultEvent);'. There is a small, faint watermark for 't.me/dev_meme' in the bottom corner of the code block. The humor lies in the stark contrast between the claim of creativity and the reality of writing absurdly verbose and repetitive code. The example line shows terrible naming conventions and excessive nesting, with the word 'Event' appearing five times. For senior developers, this is a painfully familiar sight from legacy systems or over-engineered enterprise frameworks (often seen in languages like Java), where poor API design and namespacing lead to such unreadable and unwieldy code

Comments

25
Anonymous ★ Top Pick I see the architect was a fan of the AbstractSingletonProxyFactoryBean school of naming conventions. You don't write code like that; it's procedurally generated by the tears of the maintenance team
  1. Anonymous ★ Top Pick

    I see the architect was a fan of the AbstractSingletonProxyFactoryBean school of naming conventions. You don't write code like that; it's procedurally generated by the tears of the maintenance team

  2. Anonymous

    grep -R "Event" | wc -l returned 11,342 - turns out our “ubiquitous language” is just EventBus.EventService.EventHandler in the Events module… truly domain-driven, if the domain is existential dread

  3. Anonymous

    After 15 years of arguing about microservice boundaries and event sourcing patterns, you realize the real distributed system was the Events.Events.events we named along the way

  4. Anonymous

    Ah yes, the classic 'Events.EventBus.sendEvent(Events.Events.events.defaultEvent)' - when your event-driven architecture becomes so meta it achieves self-awareness through sheer namespace recursion. This is what happens when your abstraction layers have abstraction layers, and your team's 'creative solution' to event handling looks like it was designed by the Department of Redundancy Department. At least when the inevitable refactoring ticket comes, you can defensively argue it follows the Single Responsibility Principle - it's singularly responsible for making code reviewers question their career choices

  5. Anonymous

    When every bounded context is named “Events”, you’ve built an event‑driven monolith: perfect autocomplete, zero semantics, and a code review that lasts two sprints

  6. Anonymous

    We’re creative - then ship Events.EventBus.sendEvent(Events.Events.events.defaultEvent). DDD by tautology: our ubiquitous language is just “event.”

  7. Anonymous

    Claiming artistic creativity while turning a simple event into a 50-level recursion tower - because who needs a for-loop when you have eventBus.sendEvent(eventBus.sendEvent(...))?

  8. @alhimik45 5y

    Replaces with spaces the braces in cases where braces in places cause stasis

  9. Deleted Account 5y

    Isn't it a poetry?

  10. @dsmagikswsa 5y

    Naming is always the hardest thing...

  11. Deleted Account 5y

    i hate oop

    1. @RiedleroD 5y

      I hate functional programming all my homies use Object-oriented programming

  12. @lirys 5y

    Sometimes creativity is stupidity

  13. @lirys 5y

    thy art is murder - their name fits the best here

  14. @azizhakberdiev 5y

    Event event = new Event(default_event);

    1. @RiedleroD 5y

      wrong DocumentActionListenerEvent documentActionListenerEvent = new DocumentActionListenerEvent(DocumentActionListenerEvent.DEFAULT_DOCUMENT_ACTION_LISTENER_EVENT);

      1. @sylfn 5y

        DEFAULTDOCUMENTACTIONLISTENEREVENT ---> DEFAULT_DOCUMENT_ACTION_LISTENER_EVENT

        1. @RiedleroD 5y

          FIXED

          1. @RiedleroD 5y

            fuck forgot to turn capslock off lol

  15. @azizhakberdiev 5y

    Heard you hate fp function callbackCaller(...callbacks) { let callbacksCount = 0 if(!callbacks.length) return return callbacks[n](callbacks[++n]) } function callback1(nextCallback) { if (!nextCallback) return return nextCallback } callbackCaller( callback1, callback1(function callback2() { return antoherCallback } )

    1. @RiedleroD 5y

      I have no idea what that does, but I don't like it

  16. @adhdnigga 5y

    imtelligemt

  17. @Agent1378 5y

    Sorry

  18. @Dobreposhka 5y

    !report

  19. @Agent1378 5y

    Okok

Use J and K for navigation