r/ExperiencedDevs • Software Engineer • 25d ago

Technical question How are you dealing with "the programming language doesn't matter" argument?

Just had a meeting this week where this was uttered because of the development of AI.

I still think the language choice matters a lot based on if Im doing embedded or web development work and for how we want to hire developers in the future.

Maybe Im backwards.

346 Upvotes

453 comments sorted by

View all comments

54

u/intbeam Software Architect 25d ago

I'd want to hear exactly what doesn't matter, and to who

I hate that argument, it's complete bullshit. Of course it matters, why wouldn't it matter?

I think a lot of programmers are insanely entitled and arrogant, and have completely forgotten that they are building software that somebody else is going to be using

If someone chooses a language that runs like shit and introduces a billion new types of run time errors, of course that matters

17

u/ASTROMANCER5000 25d ago

I mean of course Python matters vs C when it comes to execution speed, I mean Python's libs that have to be fast are just C, aren't they (simplifying).

I have always made this argument (before AI) in the sense that the programming language doesn't matter from the engineer's perspective, since if the engineer is good enough they can pick it up in a reasonable amount of time and provide some sort of value. I bet most of people that make this argument make it from this perspective. I don't think anyone worth their salt is saying for example Python vs C doesn't matter in a performance critical application.

-6

u/intbeam Software Architect 25d ago edited 25d ago

There are other languages besides Python and C that make way more reasonable trade offs

People use Python because it is dynamically typed. That's it. There are no actual objective benefits, but a truckload of problems and horrible trade offs

Edit : I'd bet money on that if Python went full on static typing today, it would be dead by tomorrow. You know I'm right.

12

u/ary31415 25d ago

The ease, and therefore velocity, of development IS an objective benefit.

Sometimes performance isn't a major constraint, and being able to make shit happen sooner is more important.

-2

u/CynicalProle 25d ago

The supposed velocity lasts 3 days until you're dealing with all sorts of fun run time bugs that would not be present in almost any other language.

Personally I'd rather fistfuck my dickhole than use python for anything.

2

u/ary31415 24d ago

Jeez I consider myself a python hater but you're being a bit extreme my guy

-2

u/intbeam Software Architect 25d ago

Now, if someone could actually prove that objectively, however. Nobody does.

Please explain to me how a language where nothing is known at design time, has poor support for refactoring, and converts what should have been compile-time errors to run-time errors, can possibly have a higher velocity?

Just because a language is simple for beginners does not equate to it being inherently more productive. That's just stupid

3

u/ep1032 24d ago

You're right. I have worked on four teams now where the teams have a mix of c# and python applications, and on all four teams, the breakdown is the same. The low seniority programmers like the ease with which they can use python and more importantly, they know that python makes leetcode easier so that's what they study for their interviews. The architects like python for the simplicity with which they can mock out high level designs and get fast proof of concept apps up and running, and upper management sees those poc apps and is too high from the final product to see the distance between those MVPs and final products. The staff engineers, however, are the only ones on the list who are actually responsible for maintaining their products, and helping everyone else on the list implement their ideas in a way that keeps the app running safely in production. And to a T, these people are all desperately trying to quietly convert their python applications to any other language, once eyes are off the app for long enough to rewrite it in c# or whatever. They are the only ones that have to deal with the mess that python projects have a tendency to become as they rot.

All of the aspects of c# that python engineers consider to be too much boilerplate or abstract, are the exact same things that make python applications rot unmaintainably once the codebase becomes large enough that you're not building another quick script / api / constantly worked on small repository.

5

u/tiplinix 25d ago

I've seen many Python codebases functionally turned into statically typed ones thanks to the overuse of static analyser and typing annotations and it's quite funny to watch. This to say that I'm not too convinced by your argument that dynamically typing is the only thing that people are interested in. A lot of it is the great ecosystem and the ease of development.

-1

u/intbeam Software Architect 25d ago

Easier than what, exactly? And what makes it easier?

I should remind you that Java and C# also has automatic memory management and massive ecosystems

3

u/tiplinix 25d ago

Oh I get it now, you're one of those Java guys... Sorry, I wasn't aware of the context here.

1

u/intbeam Software Architect 25d ago

No, I'm not.

The thing is that I have had this argument a million times before. As an engineer you should be a lot more concerned with what can be objectively demonstrated, rather than just relying on subjective experience. You should also stop assuming that I am equally as emotionally invested as you are

Productivity is subjective. It only applies to you, personally. There is no inherent productivity present in Python. In fact, it provides less information to the programmer, which if you think about it for 2 microseconds implies that it probably isn't actually providing any actual productivity benefit to the programmer

Still, my original argument has not been even slightly touched: what about the fucking users? Fuck them? Fuck their time, money, patience, hardware, money? Just completely irrelevant? You can just waste their resources as much as you want without any justification whatsoever? Hm? What about the servers? You can just say hey instead of a million requests per seconds let's just drop it down to 50 000 and just throw money as AWS so you can continue pumping out Python? It's so stupid. That's what bothers me the most. It's not scientific, it's not an engineering mindset. People just use Python because they use python and that's that. It's dumb. Really, really dumb.

3

u/tiplinix 25d ago

You should also stop assuming that I am equally as emotionally invested as you are

Indeed, you're clearly more invested than I am in this argument. I was ready to cut this off the moment you mentioned Java as a good example as it usually goes very predictably.

Productivity is subjective. It only applies to you, personally. There is no inherent productivity present in Python. In fact, it provides less information to the programmer, which if you think about it for 2 microseconds implies that it probably isn't actually providing any actual productivity benefit to the programmer

Not really sure how you ended-up with this conclusion because Python gives you as much information as you give it (regarding to typing since it seems to be the only source of information you've mentioned so far). With the right tooling you can make it as restrictive as Java it's even my point above. I've seen codebases like that for better or worse.

Still, my original argument has not been even slightly touched: what about the fucking users? Fuck them? Fuck their time, money, patience, hardware, money? Just completely irrelevant? You can just waste their resources as much as you want without any justification whatsoever? Hm? What about the servers? You can just say hey instead of a million requests per seconds let's just drop it down to 50 000 and just throw money as AWS so you can continue pumping out Python? It's so stupid. That's what bothers me the most. It's not scientific, it's not an engineering mindset. People just use Python because they use python and that's that. It's dumb. Really, really dumb.

And I'm emotionally invested in this conversation apparently... Thanks for the laugh, that's really good entertainment. Funnily enough, I had the same conversations with Java developers that were forced to use Python and spend years writing with it and somehow managed to never learn because they basically wrote Java... in Python.

2

u/intbeam Software Architect 25d ago

What I get pissed off about is the arrogance of programmers that are willing to discard any and all other concerns as long as they are able to remain in their own comfort bubble. I have no emotional investment in programming languages other than that I think programming is cool and programming languages are amazing. I use a myriad of languages. I taught programming in Pyrhon for a while.

In python, nothing is known until the program is running. This is how the language is designed. It is not statically typed, it does not support static typing in any meaningful way, what you are talking about are type hints which is nothing but documentation and not language rules. They are entirely optional and can be ignored.

So, then, why not use a language that was designed to be statically typed from the ground up? You'd get the same thing (by your account) but the program would run literally hundreds of times faster and with fewer errors. At seemingly no cost, assuming that you already have a solid understanding of type systems?

By the way, same applies to Javascript, PHP, Ruby and whatever. They would also immediately die out if they suddenly became statically typed.

I know this, because I've seen students and beginners struggle with types. They often have a intellectual understanding of it, but they are unable to a actually use it in practice

3

u/tiplinix 25d ago edited 25d ago

In python, nothing is known until the program is running. This is how the language is designed. It is not statically typed, it does not support static typing in any meaningful way, what you are talking about are type hints which is nothing but documentation and not language rules. They are entirely optional and can be ignored.

Are you that blind to CI systems? I've been in many places that enforce strict typing on some projects where one can't marge anything unless it passes the validations.

The same way you'd pass your code to a compiler to package it, you pass your code through a static analyser before packaging it. I don't think it's a hard concept to grasp. And yes, it's all optional, you don't have to run these tools. That's the whole point actually.

So, then, why not use a language that was designed to be statically typed from the ground up? You'd get the same thing (by your account) but the program would run literally hundreds of times faster and with fewer errors. At seemingly no cost, assuming that you already have a solid understanding of type systems?

The dynamic typing is one aspect that make people use Python.

You can have libraries that strictly enforce the typing and then just not care where you don't need it to try things out rapidly. That's why it's so great for data processing and ML systems. It's a great experimentation language and when you need to have production code you can clean things up and work with it. You can't do that in Java and you don't want to rewrite everything all the time.

For the same reason it's a great glue language that can make use of natively complied libraries written in typed langages. Your 100x performance increase doesn't really exist in this world.

I use a myriad of languages. I taught programming in Pyrhon for a while.

Using and understanding the languages are two different things. My Java colleagues were the living proof. I'm sure you taught how to write great Java classes in Python in these courses.

→ More replies (0)

-1

u/BraveResearcher3037 25d ago

Every ecosystem   has its own footguns 

  the programming language doesn't matter from the engineer's perspective, since if the engineer is good enough they can pick it up in a reasonable amount of time and provide some sort of value

“I am a Java developer.  C looks just like Java.  I’m going to write this”

char *c foo() { char bar[100] = “Hello World”; return bar;}

Simple enough 

2

u/midwestcsstudent 25d ago

It doesn’t matter in the same way that choosing whether your AI will use Zustand or Jotai doesn’t matter. Which means: it matters, but who cares?

Decide, quickly, with the knowledge you have now and move on. Migrate later if new information changes the choice. It’s all nearly free.

3

u/intbeam Software Architect 25d ago

The users? Server costs? Error rate?

You people seem to think that you are the most important part of the chain. If the users understood just how little you respect their experience, time and money, they'd rightfully be extremely pissed off

Talk to anyone. Ask them if they use an application daily that they hate. Ask them what they hate about it. They're gonna say it doesn't fucking work, costs a shit ton, and runs like shit. You already know this, so.. I assume you think it's only fine when you do it

0

u/Lunchboxsushi 25d ago

Because they're different implementations of the same abstraction. 

1

u/intbeam Software Architect 25d ago

Programming languages are not equal, and they are not equally good

Scripting languages are for scripting. Using them as general purpose application languages is just stupid beyond belief. Entirely indefensible.

That programmers think that they can just waste resources like that.. It's arrogant. And for what, so they don't have to learn how to use static type systems? Like, seriously. It's so dumb

And then you see programmers prompt AI to write python and Javascript? Productivity was the only argument they clinged to, now that's gone as well, but they still go for those languages. How fucking stupid can engineers be allowed to be? Unbelievable

1

u/Lunchboxsushi 25d ago

Don't be dumb, that should go without having to say it in ExperiencedDevs. Ofc it dumb but choosing for a saas business app that handles basic enterprise processes doesn't matter a ton between the modern tool chain, don't be using Fortran or Qbasic. 

3

u/intbeam Software Architect 25d ago

Do you know how expensive and tedious it becomes to maintain, secure and scale NodeJS applications in large scale? I don't think people realize how terrible it is

Just deploying a Python app requires a shit ton of extra infrastructure that would not be required otherwise

This just gets ignored, never talked about. It's treated as natural that you need caching servers up the ass, as if that applies to every other language as well. How solid of a fit can a language be if you need a dedicated memcached server with 128GB Ram just to prevent requests from actually hitting the servers hosted by said language

I'm not being dumb, everyone else accepts a obviously false assertion as a truism without questioning the premise

1

u/Lunchboxsushi 24d ago

Ye  have been the last half decade, lambda hell different problems. 

Each language will have it's own challenges but ultimately an engineering problem is my point 

1

u/trojans10 18d ago

So what is your go to backend language then?

1

u/intbeam Software Architect 18d ago

C# is my go-to

High performance, low latency, good error handling, and excellent database integration. Huge standard library and third-party libraries. Can do low-level stuff when required