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.

  • grue@lemmy.world
    link
    fedilink
    arrow-up
    13
    arrow-down
    2
    ·
    2 hours ago

    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
      link
      fedilink
      arrow-up
      5
      ·
      2 hours ago

      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.

  • Shirasho@lemmings.world
    link
    fedilink
    arrow-up
    26
    arrow-down
    4
    ·
    edit-2
    3 hours ago

    “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.

    • rtxn@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      40 minutes ago

      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.

    • Ember James@lemmy.ca
      link
      fedilink
      arrow-up
      13
      ·
      2 hours ago

      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.

    • affenlehrer@feddit.org
      link
      fedilink
      arrow-up
      4
      ·
      1 hour ago

      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
        link
        fedilink
        arrow-up
        1
        ·
        21 minutes 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.

    • BassTurd@lemmy.world
      link
      fedilink
      arrow-up
      15
      ·
      3 hours ago

      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
        link
        fedilink
        arrow-up
        14
        ·
        3 hours ago

        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.

  • bleistift2@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    27
    arrow-down
    2
    ·
    edit-2
    4 hours ago

    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
      link
      fedilink
      arrow-up
      6
      ·
      edit-2
      2 hours 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.

    • danhab99@programming.devOP
      link
      fedilink
      arrow-up
      2
      arrow-down
      5
      ·
      1 hour ago

      Recently I’ve just been getting co-pilot to do it

      I have an alias that calls the copilot CLI with a prompt that says “set up typescript”

      Fuck this

  • ryannathans@aussie.zone
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    3 hours ago

    Typescript literally doesn’t work though, every large system has some JavaScript interface somewhere and the “any” type propagates through the system because there’s no type safety at runtime

    Fuck them both to death

  • hddsx@lemmy.ca
    link
    fedilink
    arrow-up
    3
    ·
    2 hours ago

    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.

    • orgrinrt@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      37 minutes ago

      I believe zed has extensions for c#, and I guess more importantly, dotnet.

      At this point, unless you have the money to grab sublime (or specifically want foss or even just free as in beer), and you aren’t sold on the way of life of the old guard like the modern vims or emacs, zed is pretty much the best there is.

      I used to be such a jetbrains guy, but that was back when they did actually have something nobody else really offered outside of Microsoft. Before that, for a good long time, I was an emacs guy, until I had to use a windows computer for work and emacs just doesn’t fit well there, couldn’t get a good equivalent of the daemon going consistently, had to switch. And to be frank, lisp is the fucking worst.

      Nowadays, there are so many options though, even, or especially, on foss side. Or even just free. Hard to justify the jetbrains kinds of specialized tools, now that the same sugary, smooth experience is almost exactly achievable on those. And faster.

      I have been happy with zed for quite a while now. Apart from the (disableable, thank god) first class AI stuff, I haven’t a single complaint. It feels as fast and responsive as sublime, and while the ecosystem isn’t there yet, I can get all my stacks and tooling to run currently like it was a jetbrains ide from back in the day. Rust, dotnet, deno/ts, it all just works after setup.

      I would still go for sublime just for the ecosystem, but I haven’t the economics at a point where I can choose convenience for a price, if a close equivalent exists with the price of nothing but contributions occasionally. The source being open, even if my PRs don’t get merged, I can just live with my fork and have it natively the way I want, without working around the extension limitations.

    • folekaule@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 hour ago

      I just use VS code with c# extensions on Linux. It works fine. I also use vim with lsp support for C# sometimes.

      If you want more, you may also want to check out Rider from Jetbrains.

      • hddsx@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        44 minutes ago

        I can’t use codium because on sway the file open dialog doesn’t work and I haven’t figured out why

        • folekaule@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          38 minutes ago

          Unfortunately I can’t help you there. I just use plain old kde plasma on Fedora. If your favorite code editor supports Language Server Protocol (LSP), you can probably get it to do code completion for C# one way or another. Vim, neovim, Kate, and many others do.

  • jonathan7luke@lemmy.zip
    link
    fedilink
    arrow-up
    8
    ·
    4 hours 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.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      3
      ·
      43 minutes 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.

  • marcos@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    3 hours 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.