this post was submitted on 28 Dec 2025
395 points (95.6% liked)

Programmer Humor

30053 readers
1589 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 116 points 2 months ago

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.

[–] Shirasho@lemmings.world 101 points 2 months ago* (last edited 2 months 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 71 points 2 months ago (1 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.

[–] homoludens@feddit.org 16 points 2 months ago (1 children)

Even if the code is flawless now, all it takes is a single flawed line of new code. This is of course true for all languages, but type safety helps a lot as some types of flaws would not compile.

load more comments (1 replies)
[–] BassTurd@lemmy.world 37 points 2 months 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 35 points 2 months 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 2 months ago (4 children)

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

[–] rainwall@piefed.social 23 points 2 months ago* (last edited 2 months 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.

[–] PabloSexcrowbar@piefed.social 15 points 2 months ago

Real men use Scratch for everything.

load more comments (2 replies)
load more comments (12 replies)
[–] rtxn@lemmy.world 37 points 2 months 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 20 points 2 months 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)
[–] ToxicWaste@lemmy.cafe 9 points 2 months ago

I have to write so much boilerplate code to make sure my objects are of the correct type and have the required attributes!

That is the trap that, sadly, my company fell for too. The POC was written in python. very fast i might add. but it was only that: a POC. if the whole backend crashes due to unexpected user input - noone cared. if the frontend displayed gibberish because the JSON made wrong assumptions about not defined data types - sweep it under the rug, don't do that during presentations.

but if it came to building a resilient system, which can be shipped to customers and preferably maintained by them (with minimal consulting contract for access to our guys)... we cursed the way python worked.

[–] affenlehrer@feddit.org 22 points 2 months 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.

[–] pivot_root@lemmy.world 13 points 2 months ago

Don't forget to add incompetent leadership to that list. If feature needs to be shipped by some arbitrary deadline and the engineers are forced to rush through the design process, you end up with a patchwork hack of tech debt that leads to more tech debt.

[–] grue@lemmy.world 70 points 2 months ago (9 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 37 points 2 months ago (2 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.

[–] qaz@lemmy.world 19 points 2 months ago* (last edited 2 months ago) (1 children)

Also, like, fuck golang, it’s such a shit language and the compiler does very little to protect you

I never understood why people like it. It's a "new" language, and it still doesn't seem to get the basics right. No proper null handling, and don't get me started on interface{}. It's like they set out to build a better alternative to C++ while ignoring the other developments outside C/C++ for the past 15 years. The compiler is damn quick, though.

load more comments (1 replies)
load more comments (1 replies)
[–] someacnt@sh.itjust.works 9 points 2 months ago (1 children)

Do you mean python has something to do with functional programming, or did I misread? Because I would say e.g. Typescript is (slightly) closer to FP than Python.

load more comments (1 replies)
load more comments (7 replies)
[–] Scrath@lemmy.dbzer0.com 65 points 2 months ago (3 children)

As an embedded dev, good luck not using C

[–] Strawberry@lemmy.blahaj.zone 14 points 2 months ago (8 children)

Not an embedded dev. What's the Rust situation in the embedded world? Is it ever used?

[–] Flipper@feddit.org 17 points 2 months ago

It's not widely used. Some car manufacturers(Toyota if I remember correctly) have started testing it. Some parts are really nice.

There is exactly one hal for i2c, spi and Io pins. As long as both your chip and peripheral driver implement against it, it just works. There are more unified abstractions in the work for things like DMA, but they are not officially stable yet.

Cooperative Multi threading can easily be integrated thanks to Async rust and executors like embassy.

All the crates that are no_std compatible can be included.

It's not perfect, but it's getting there.

[–] BartyDeCanter@lemmy.sdf.org 14 points 2 months ago

I've been an embedded developer for coming up on 20 years at this point, and recently went through a job hunt. Of the three that made it to the offer stage, two used Rust almost exclusively in their embedded stack and one used Rust in their embedded LInux stack and was trying to decide if they were going to use rust in their bare-metal/RTOS stack. I ended up at on of the Rust places, though I had no Rust experience. I have to say, while I do find many parts of the syntax too cute by half, in general I'm pretty happy with it as an embedded language. My current target architectures are ARM Cortex-M7 and Cortex-A53. In general toolchain, and debugger support has been good, peripheral support has been ok but could use improvement.

[–] ozymandias117@lemmy.world 10 points 2 months ago

Bindings have been getting added to the Linux kernel so drivers can theoretically be written in Rust

Android has moved its IPC mechanism, Binder, over to Rust

load more comments (5 replies)
load more comments (2 replies)
[–] ExLisper@lemmy.curiana.net 58 points 2 months ago (5 children)

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

[–] douglasg14b@lemmy.world 12 points 2 months ago

According to all teams I've worked on.

Pretty fucking hard.

I know this is satire, But really though better languages that make various classes of defects unrepresentable reduce defects. It's wild that such a statement needs to be made, but our industry is filled with folks who don't critically think about decisions like these.

[–] MIDItheKID@lemmy.world 12 points 2 months ago

Like the age old advice for getting better at Smash Brothers - Don't get hit.

[–] lemming741@lemmy.world 9 points 2 months ago

My second favorite prompt, behind "Do not hallucinate"

load more comments (2 replies)
[–] bleistift2@sopuli.xyz 54 points 2 months ago* (last edited 2 months 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.

[–] dan@upvote.au 16 points 2 months ago* (last edited 2 months ago)

Setting up typescript takes an hour or two if you have no clue what you’re doing

Modern versions of Node.js have native TypeScript support. For scripts, you can just write the script then run it. That's it. No build process needed. A beginner could just rely on type checking in their editor (I think VS Code has the TypeScript tooling installed by default?)

For web apps, just use something like Bun or Deno. Bun gives you practically all the tooling you'd need (JS runtime, TypeScript, package manager, test runner, bundler, and framework for building web apps) out-of-the-box. It doesn't have a formatter, but you can just use your editor's formatter.

load more comments (17 replies)
[–] Zos_Kia@lemmynsfw.com 43 points 2 months ago (1 children)

it's just negligence with better marketing

Good damn I hate that tone it reeks of LinkedIn llm-powered personal branding. Weak ideas with writing that tries to sound strong is the worst.

[–] MonkeMischief@lemmy.today 10 points 2 months ago* (last edited 2 months ago) (2 children)

Weak ideas with writing that tries to sound strong.

I move to make this the new definition of "Marketing".

load more comments (2 replies)
[–] Bane_Killgrind@lemmy.dbzer0.com 34 points 2 months 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.

[–] bleistift2@sopuli.xyz 15 points 2 months ago* (last edited 1 month ago)

Well, the kernel is unmaintainably complex. [Edit: Linus ~~Linux~~] saves his sanity by not looking deeply into modules and only inspecting the surfaces.

[–] pelya@lemmy.world 34 points 2 months ago (6 children)

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

load more comments (6 replies)
[–] sheepishly@fedia.io 21 points 2 months ago (2 children)

don't just m-dash

chat gippity

[–] chatokun@lemmy.dbzer0.com 17 points 2 months ago (2 children)

Maybe, but always remember LLMs are trained on real people. Some people naturally use similar styles to some LLM tica as it was stolen from them in the first place.

load more comments (2 replies)
[–] Ashelyn@lemmy.blahaj.zone 9 points 2 months ago

Don't just state—regurgitate!

[–] Atlas_@lemmy.world 20 points 2 months ago (1 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

[–] danhab99@programming.dev 16 points 2 months ago (2 children)

Rust is the foot gun, it's so perfect that you genuinely cannot just sit down and type out what you need.

load more comments (2 replies)
[–] echodot@feddit.uk 20 points 2 months 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 11 points 2 months ago* (last edited 2 months ago) (7 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.

load more comments (7 replies)
[–] for_some_delta@beehaw.org 19 points 2 months ago (6 children)

I don't get it.

Maybe the joke is nothing complex is written in fad languages?

Maybe the joke is the discounting of peer review and testing?

Maybe the joke is the lack of devops knowledge where Python is extra steps over other scripting languages?

It seems like promotion of fad languages. When I was younger, I chased fads and lost hard. I'll stick with C and C++. Run-time failures happen to everyone including fad languages. Here's looking at you Rust CVE's. Better to have loved and lost, something, something.

load more comments (6 replies)
[–] hddsx@lemmy.ca 14 points 2 months ago (12 children)

Dunno, I picked python as my language for personal projects because it has type hinting now and jobs I was looking at wanted it. I’d like to use C# but I need to find a good IDE on Linux.

I’ve gotten pretty good at C because it’s what my company uses but god damn I am tired of fixing memory errors from bad programming. Nobody uses best practices and it’s horrid. Best practices came about to avoid issues. Use them. Please. I don’t want to be the guy to answer “please fix my memory issues” tasks. If you don’t know what you’re doing, please choose a different god damn language.

I’ve only gotten this way because I’ve tried to read the fucking manual. Stop telling me I’m wrong when you don’t know how it works. Stop telling me I’m wrong when you don’t check for errors. I’m telling you this not because I want to talk. I’m telling you because I learned the hard way fixing your code and I don’t want to do it anymore.

load more comments (12 replies)
[–] wer2@lemmy.zip 11 points 2 months ago (2 children)

Sounds like they want Ada Spark and not Rust.

load more comments (2 replies)
[–] marcos@lemmy.world 11 points 2 months ago* (last edited 2 months ago)

Well, the author is to blame for the choice of language.

That is, unless somebody forced their hand. What happens a lot in professional settings. Then it's that other person to blame.

[–] curled@lemmy.dbzer0.com 10 points 2 months ago

Embedded devs have heavy gambling addiction apparently

load more comments
view more: next ›