this post was submitted on 28 Dec 2025
402 points (95.7% liked)

Programmer Humor

28225 readers
1983 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
 

Post:

If you’re still shipping load‑bearing code in C, C++, Python, or vanilla JavaScript in 2025, you’re gambling with house money and calling it “experience.”

As systems scale, untyped or foot‑gun‑heavy languages don’t just get harder to work with—they hit a complexity cliff. Every new feature is another chance for a runtime type error or a memory bug to land in prod. Now layer LLM‑generated glue code on top of that. More code, more surface area, less anyone truly understands. In that world, “we’ll catch it in tests” is wishful thinking, not a strategy.

We don’t live in 1998 anymore. We have languages that:

  • Make whole classes of bugs unrepresentable (Rust, TypeScript)
  • Give you memory safety and concurrency sanity by default (Rust, Go)
  • Provide static structure that both humans and LLMs can lean on as guardrails, not red tape

At this point, choosing C/C++ for safety‑critical paths, or dynamic languages for the core of a large system, isn’t just “old school.” It’s negligence with better marketing.

Use Rust, Go, or TypeScript for anything that actually matters. Use Python/JS at the edges, for scripts and prototypes.

For production, load‑bearing paths in 2025 and beyond, anything else is you saying, out loud:

“I’m okay with avoidable runtime failures and undefined behavior in my critical systems.”

Are you?

Comment:

Nonsense. If your code has reached the point of unmaintainable complexity, then blame the author, not the language.

top 50 comments
sorted by: hot top controversial new old
[–] jonathan7luke@lemmy.zip 120 points 1 week ago (1 children)

I'm not even going to bother commenting on that train wreck of a post, but I just wanted to mention that I hate the writing style of programming-related LinkedIn posts. They're just chock-full of sweeping generalizations presented as absolute truth in an extremely patronizing tone.

Why can't people just say, "In my opinion, X technology is a better fit for Y situation for Z reason," instead of "Every time you encounter X, you must do Y, otherwise you're dead wrong."

It's just simultaneously so arrogant and also aggressively ignorant. If someone spoke to me like that in real life, I would never want to speak with them again. And these people are broadcasting this shit to their entire professional network.

[–] Ephera@lemmy.ml 29 points 1 week ago

Yeah, particularly the broadcasting really irks me.
That is an opinion you can hold for yourself and then make compromises as you encounter reality. I do expect programmers to hold strong opinions.

But when you broadcast it, you strip yourself of the option to make compromises. You're just saying something which is going to be wrong in one way or another in most situations. I do expect programmers to be smarter than that.

[–] Shirasho@lemmings.world 105 points 1 week ago* (last edited 1 week ago) (4 children)

"Blame the author, not the language"

Says the person who screams they have never worked professionally with a team before.

There is no excuse to not use statically typed, safe languages nowadays. There are languages that let you build faster like Python and Typescript, but faster does not mean safer. Even if your code is flawless it still isn't safe because all it takes is a single flawed line of code. The more bug vectors you remove the better the language is.

[–] Arkouda@lemmy.ca 69 points 1 week ago (2 children)

Even if your code is flawless it still isn’t safe because all it takes is a single flawed line of code.

If there is a single flawed line of code, the code isn't flawless.

load more comments (2 replies)
[–] rtxn@lemmy.world 38 points 1 week ago (2 children)

let you build faster like Python

I have to write so much boilerplate code to make sure my objects are of the correct type and have the required attributes! Every time I write an extension for Blender that uses context access, I have to make sure that the context is correct, that the context has the proper accessor attributes (which may not be present in some contexts), that the active datablock is not None, that the active datablock's data type (with respect to Blender, not Python) is correct, that the active datablock's data is not None... either all that or let the exception fall through the stack and catch it at the last moment with a bare except and a generic error message.

I used to think that static typing was an obstacle. Now I'm burning in the isinstance/hasattr/getattr/setattr hell.

[–] reabsorbthelight@lemmy.world 23 points 1 week ago (1 children)

I loved python when I was a junior dev. Now I hate it (except for things like computational math). I have to add debug statements to figure out that someone snuck in the wrong type into the code.

load more comments (1 replies)
load more comments (1 replies)
[–] BassTurd@lemmy.world 38 points 1 week ago (1 children)

There are definitely use cases where something like C is still the best option because it's faster. For the most part consumer software it's unnecessary, but it's not obsolete for all applications.

[–] SpaceNoodle@lemmy.world 36 points 1 week ago (13 children)

Hell, assembly code is still necessary for the lowest-level init code. Once you have a functional stack and some var init logic you can graduate to C.

[–] AnarchoSnowPlow@midwest.social 38 points 1 week ago (4 children)

That's ridiculous. Everyone knows its best to write modern bootloaders in Matlab.

[–] rainwall@piefed.social 23 points 1 week ago* (last edited 1 week ago)

You joke, but my first "lets make facebook, but..." comment was from an electrical engineer buddy that wanted to use matlab. That was the whole pitch. "Facebook, but matlab."

It did not go far.

load more comments (3 replies)
load more comments (12 replies)
[–] affenlehrer@feddit.org 22 points 1 week ago (1 children)

In my 15+ years of experience many of the actual field problems are not language / programming related at all. Unclear requirements or clear but stupid requirements cause loads of issues. These are often caused by communication problems between people and / or organizational issues.

It depends a lot on the industry of course. For embedded software, low level networking etc I mostly agree with you. However, in business applications or desktop applications it's from my experience mostly bad requirements / communication.

load more comments (1 replies)
[–] grue@lemmy.world 76 points 1 week ago (11 children)

Python isn't "untyped;" it is, in fact, strongly-typed. (And is markedly different than and superior to JavaScript on that point.)

This rant feels like it was written by an OO programmer who was never able to wrap his head around functional programming.

[–] Badabinski@kbin.earth 39 points 1 week ago (3 children)

Yeah, plus it has type hints and tooling to make said type hints mandatory.

Also, like, fuck golang, it's such a shit language and the compiler does very little to protect you. I'd say that mypy does a better job of giving you AOT protection.

load more comments (3 replies)
load more comments (10 replies)
[–] Scrath@lemmy.dbzer0.com 66 points 1 week ago (13 children)

As an embedded dev, good luck not using C

load more comments (13 replies)
[–] ExLisper@lemmy.curiana.net 62 points 1 week ago (5 children)

Just don't do bugs. How hard is that?

load more comments (5 replies)
[–] bleistift2@sopuli.xyz 55 points 1 week ago* (last edited 1 week ago) (18 children)

I agree with the post. Setting up typescript takes an hour or two if you have no clue what you’re doing. In return you get the absence of (the equivalent of) null pointer exceptions.

I chuckle every time I find an NPE in the Java backend. Doesn’t happen to me. Can’t happen to me.

Sidenote, while I’m already gloating: Once the backend code had an error where they were comparing two different kinds of IDs (think, user ID and SSN), which gave wrong results. This error can’t happen to me either, because I type my IDs such that they are not comparable. A strong type system really is a godsend.

load more comments (18 replies)
[–] pelya@lemmy.world 37 points 1 week ago (6 children)

TypeScript and safety-critical paths should not be in one sentence.

load more comments (6 replies)
[–] Bane_Killgrind@lemmy.dbzer0.com 35 points 1 week ago (1 children)

Nonsense. If your code has reached the point of unmaintainable complexity, then blame the author, not the language.

I feel like there's about one person that can cast this stone, and that's because preventing this has turns Torvalds into an abusive bridge troll sometimes, but he's actually been successful.

load more comments (1 replies)
[–] sheepishly@fedia.io 22 points 1 week ago (4 children)

don't just m-dash

chat gippity

load more comments (4 replies)
[–] Atlas_@lemmy.world 21 points 1 week ago (3 children)

Go and Python and Typescript all have their own footguns.

I assume Rust is the same, but haven't used it personally to see

load more comments (3 replies)
[–] echodot@feddit.uk 20 points 1 week ago (1 children)

So there is apparently a problem with languages such as JavaScript and the solution is to use languages such as TypeScript.

Wut?

[–] keegomatic@lemmy.world 12 points 6 days ago* (last edited 6 days ago) (1 children)

Well, yes. TypeScript mitigates one big problem with JavaScript (type safety). That’s why it exists. It’s a dumb idea to choose vanilla JS over TS if you’re starting a new project today, IMO.

Whether or not you should use TS as your core language is debatable and situational, but in terms of using TS instead of JS, yeah, that’s a no brainer.

[–] Tartas1995@discuss.tchncs.de 1 points 6 days ago (1 children)
[–] keegomatic@lemmy.world 2 points 5 days ago (1 children)

That’s only article-worthy because it is a rare occurrence and an increasingly controversial opinion. And even that maintainer didn’t abandon TS completely—he said that would be “daft”—he just moved to types via JSDoc which is run through the TS compiler, as well as to .d.ts files.

[–] Tartas1995@discuss.tchncs.de 0 points 5 days ago (1 children)

he just moved to types via JSDoc which is run through the TS compiler, as well as to .d.ts files.

Congratulations, you read the headline.

But "just" is doing a lot of heavy lifting here. It is literally why he moved.

[–] keegomatic@lemmy.world 2 points 4 days ago (1 children)

Congratulations, you read the headline.

Learn how to have a conversation

[–] Tartas1995@discuss.tchncs.de 1 points 4 days ago (1 children)

You didn't even bother to argue my point. You repeated the headline of the article that I send you. Are you sure that I need to learn that?

I would have given you a proper response if your response would have been. Calling something "controversial" is literally saying that there are conflicting opinions on the matter, which means it is NOT no brainer.

[–] keegomatic@lemmy.world 2 points 4 days ago (1 children)

Your point was “some people don’t think it’s a no-brainer,” which I addressed, and then you whipped out that line. I’ve been around long enough to know what that means: that your replies would be inflammatory garbage from then on. Learn how to interact with people online in a civil way and maybe you’ll actually be able to maintain a conversation long enough for it to be constructive

[–] Tartas1995@discuss.tchncs.de 1 points 4 days ago

I just explained to you how your own response confirms my point but be upset over someone making fun of you for stating the headline of their reference as some interesting insight.

load more comments
view more: next ›