this post was submitted on 30 Jan 2026
758 points (97.1% liked)

Programmer Humor

29027 readers
941 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
top 50 comments
sorted by: hot top controversial new old
[–] BarneyPiccolo@lemmy.today 4 points 8 hours ago

I used to work those corporate jobs, where I'd have to go to these boring conferences, and executives would come out and dance around and do a little comedy show, just to prove that they were just as normal as all the wage slaves, and we were supposed to get all excited and clap and shit. Fuck those losers (the execs, not the workers).

[–] tatterdemalion@programming.dev 5 points 9 hours ago

Not a senior dev thing, just a bad dev thing.

[–] demizerone@lemmy.world 2 points 8 hours ago

"ANYONE SEE THE PENICILLIN?"

Bill Gates probably

[–] kamen@lemmy.world 6 points 1 day ago

Developers developers developers developers

[–] sunbeam60@feddit.uk 4 points 1 day ago

Where we vibe code, we don’t need abstractions!

Just an inglorious soup of notches and work arounds.

It’s the ultimate shitty transpiler —> from shitty requirements to crappy architecture by fibbergibberting!

[–] ChickenLadyLovesLife@lemmy.world 32 points 1 day ago* (last edited 1 day ago) (2 children)

I started working as a professional programmer in the mid-90s when three-tiered design was all the rage: a data access layer, a business logic layer, and a presentation layer. It seems that nobody actually knew what "business logic" was even supposed to be, because I kept inheriting projects where all the middle tier did was hand data objects from the data layer to the UI. In theory this prevented the UI from being fundamentally bound to the data access, but all three layers were always written in Visual Basic which got kicked to the curb in a few years anyway.

[–] Buddahriffic@lemmy.world 8 points 1 day ago (1 children)

Business logic would be transformations to the data. Like for a spreadsheet, the data layer would handle the reading/writing of files as well as the storage of each cell's content. The business logic layer would handle evaluating each of the formulas in the cells, and the presentation layer draws it on the screen.

I think the part where it gets confusing is that each of these layers are pretty tightly coupled. The end destination of the presentation layer might change, one might show it on a GUI, another might print it, and another might convert it to pdf or html, but each of those presentation layers needs to understand the data that it is presenting, so it's tightly coupled to the data layer. Same with the businesses logic layer, though it's tightly coupled on both the input and output sides. The design of the data layer constrains the possibilities of the other two, so it's hard to draw a clear boundary between the layers because they all need to know how to walk the same data.

My mental flow chart for this is more of a data layer in the middle instead of business logic, where business logic is to the side with arrows going both ways between it and data layer, then the presentation layer also accessing the data layer directly, which I suppose is a different permutation of what you described.

Though another way to look at it does make sense. For a website, think of the database as the data layer, the server scripts as the business logic layer, and the client side scripts/html/css as the presentation layer. That one also follows the layered approach where the presentation layer is talking with the business logic layer.

It's simpler than that, if you're working on the data layer anything you don't want to touch is business logic.

If you're working on business logic the bad stuff is data layer.

Presentation layer just isn't my problem.

load more comments (1 replies)
[–] thedeadwalking4242@lemmy.world 71 points 1 day ago (6 children)

Junior devs not abstracting anything and now the app is unmaintainable

[–] Tamo240@programming.dev 26 points 1 day ago (1 children)

Exactly, have fun trying to get test coverage without dependency injection

[–] jjjalljs@ttrpg.network 10 points 1 day ago (7 children)

with patch("some_file.requests.get", side_effect=SomeException("oh no")):
  result = func_using_requests()

Though not every language makes mocking as easy, and multiple responsibilities in a single function can quickly get messy.

[–] wpb@lemmy.world 2 points 1 day ago* (last edited 1 day ago) (1 children)

Quickest way to get a test suite so tightly coupled to structure rather than behavior that even just looking at the tests wrong makes them fail. But technically you do get test coverage I guess. Goodhart's law in action.

[–] jjjalljs@ttrpg.network 1 points 19 hours ago

It's not really that different from like


my_get_mock = Mock(side_effect=Some exception("oh no"))
result = some_func(http_getter=my_get_mock)

There's many ways of writing bad code and tests, but mocks and patches aren't always a bad tool. But sure, you can definitely fuck things up with them.

load more comments (6 replies)
load more comments (5 replies)
[–] lessthanluigi@lemmy.sdf.org 117 points 2 days ago (4 children)

DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS!!!!

[–] squirrel@piefed.kobel.fyi 69 points 2 days ago

COPILOTS, COPILOTS, COPILOTS, COPILOTS!!!!

There, I updated it for you and I hate it.

[–] GreenKnight23@lemmy.world 25 points 2 days ago (1 children)

you missed the best part

AAAAHHHHRRRRGGGHHHHHHHAAAAAAAA! sweat pouring off balmer as his body goes into shock from the pain

[–] a_non_monotonic_function@lemmy.world 7 points 1 day ago (1 children)

His mutant power is absorbing all of the cocaine in a 20 mi radius.

load more comments (2 replies)
[–] red_tomato@lemmy.world 80 points 2 days ago (1 children)

Why should I want simplicity? I want to make unnecessarily complex programs to gatekeep those pesky junior programmers.

[–] WanderingThoughts@europe.pub 34 points 1 day ago (1 children)

Just got out of a discussion with a supplier. We can do what we needed by connecting to the database. Instead we have to go through four layers of different tech to arrive at the same point in the database otherwise it's not compliant. That the supplier needs to sell a license for those layers is purely coincidental.

[–] expr@piefed.social 16 points 1 day ago

Obviously don't have the full context, but rarely is it ever advisable to give third parties direct access to a database. There are many reasons for this, like, for example, the fact that doing so makes schema migrations practically impossible.

[–] addie@feddit.uk 17 points 1 day ago (3 children)

Abstraction is not very compatible with concurrency, so as well as your your beautiful abstract API, you also need some 'cut through the layers' functions to return the underlying classes you need to synchronise on. Now you have a right mess that's incredibly hard to understand, infuriating to debug, and impossible to refactor. Best you can do is put another layer of abstraction on top. Repeat every six months.

[–] Evotech@lemmy.world 2 points 1 day ago* (last edited 1 day ago)

That's why you build the api first. If you need to "cut through" anything you build an api for that instead.

[–] 3abas@lemmy.world 12 points 1 day ago (1 children)

That's just bad interface... When you design an API as if operations were independent, but they aren’t, you run into these issues.

Don't add "cut through the lawyers" functions, fix your interface.

load more comments (1 replies)
[–] LodeMike@lemmy.today 31 points 2 days ago (2 children)

Abstraction layers is simplicity given a complex enough bottom.

[–] ToastedRavioli@midwest.social 26 points 1 day ago (1 children)

A complex bottom may have difficulty mating with a simple top

load more comments (1 replies)
load more comments (1 replies)
[–] Randelung@lemmy.world 15 points 1 day ago (2 children)

I recently started a new job. We use Java. There's a class that does a few things based on explicit arguments only to decide whether to use an FTP or file output, and you supply all parameters yourself. A whole ass Rube Goldberg machine that could be replaced by a single line of Files.writeString.

Also, there's a great video on YT "Stop writing classes" that is incredibly relevant.

[–] Buddahriffic@lemmy.world 7 points 1 day ago

Yeah, Java's enforcement of everything must be a class put me off of the language right from the start. I was already used to C++ at that point and hated that I couldn't just write a quick little test function to check something, it needed a bunch of boilerplate to even get started.

I still think C++ has a great balance between object oriented and sequential programming. Not sure if it's the best, but I can't think of ways to improve on it, other than built in concurrency object stuff (like monitor classes that have built in locks that prevent more than one thread from accessing any of its functions at the same time, basically guaranteeing any code in it has mutual exclusion).

load more comments (1 replies)
[–] RedFrank24@piefed.social 18 points 1 day ago (8 children)

Always favor composition over inheritance if you can.

[–] logi@lemmy.world 8 points 1 day ago (3 children)

All absolute statements are false.

load more comments (3 replies)
load more comments (7 replies)
[–] mattyroses@lemmy.today 8 points 1 day ago (2 children)

yeah, I remember not understanding domain driven design

load more comments (2 replies)
[–] vatlark@lemmy.world 20 points 1 day ago* (last edited 1 day ago) (2 children)
[–] HellieSkellie@lemmy.dbzer0.com 16 points 1 day ago (2 children)

they really made their domain pee rate dot france huh

load more comments (2 replies)
load more comments (1 replies)
[–] db2@lemmy.world 11 points 1 day ago (2 children)

They look so painfully awkward, like a parent should be telling them to knock it off or something.

[–] lemmy_get_my_coat@lemmy.world 11 points 1 day ago

At least one of them is a pedophile, so you're probably not wrong

[–] Bosht@lemmy.world 9 points 1 day ago (2 children)

If you haven't seen the vid it's 500 levels of awkward cringe that's hard to watch. Had to do with one of the MS version releases. They're acting so awkward you can't tell if they're yakked out in coke or just that socially awkward. Full disclosure I'd be worse than them in that situation, just calling it like it is.

load more comments (2 replies)
[–] kali_fornication@lemmy.world 20 points 2 days ago (4 children)

that image is from the whitest gif of all time

load more comments (4 replies)
load more comments
view more: next ›