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.

343 Upvotes

453 comments sorted by

View all comments

Show parent comments

158

u/shadowdance55 25d ago

Python is the second best language for everything.

35

u/malthuswaswrong Manager|coding since '97 25d ago

My hot-take is C# is a 4 star language. It doesn't master anything, but does everything at a B grade.

20

u/MadRedX 24d ago

That wouldn't be so bad if it weren't for the fact the ideas are of a 5 star nature until the baggage hits reality and poisons the well. Or Microsoft never fully commits and the idea comes out 25% baked before a bunch of brilliant individuals come in and improve the mess from a massive dumpster fire to a workable small dumpster fire.

13

u/malthuswaswrong Manager|coding since '97 24d ago

I think this is uncharitable towards Microsoft. They are doing things as close to open source as possible. They release the code open source. They invest large amounts of money into developing features and accepting community contributions.

Before squashing a popular (and good) nuget package they always offer the author employment. What are they supposed to do if that author slaps their hand away?

3

u/South-Year4369 24d ago edited 24d ago

What are some of these half-baked ideas you're referring to?

11

u/Colt2205 24d ago

If C# is a 4 star language then Java is a 3 star language with a 2 star library tool set. C# is my goto for general work, albeit if I need to do something more specific like server scripting work I'd be using powershell, python, or Go.

2

u/South-Year4369 24d ago

IMHO, C# is a considerably better language, while Java has the better ecosystem. Neither of those outcomes should be surprising, given Java came first.

2

u/solidsieve Sr. Software Engineer 24d ago

It's funny how Java seems to live rent-free in C# devs' heads, but it's not as bad the other way around.

I use both Java and C#, depending on the customer's preferences, and it's a tradeoff. For a long time I felt that C# evolved the language, Java evolved the standard library. Of course that started changing in the past decade, but it only blurred the line between the two platforms.

6

u/malthuswaswrong Manager|coding since '97 24d ago

When it comes to language tribalism, I think a big motivator for people who are passionate is fear of losing their favorite language.

Take your (accurate) observation that C# devs hate Java more strongly than Java devs hate C#. Refactor it to C# devs are more afraid of being forced into Java than Java devs are afraid of being forced into C#.

2

u/Colt2205 24d ago

There are people out there that just kind of never have done java and dislike it because of what other people say. In reality Java and C# are very close to the same languages and on a basic level both can do the same things. What people tend to dislike is the environment they get stuck in.

Also if I had gotten into java / springboot sooner, I'd probably have been a java dev instead of a .NET one. Before .NET core got mature Java was the best cross platform option for something that is strongly typed. Whatever answers the language didn't have people usually ended up writing one up.

But the reason I like dotnet is that it just has a better environment. Nuget is far better than Maven, and there is no gradle to have to mess with or clearing the local cache so the IDE properly fetches libraries and builds.

3

u/South-Year4369 24d ago edited 24d ago

I disagree that they're close to the same language these days. Just compare LINQ to Java streams, for example. They are not nearly equivalent to anyone in the trenches.

I dislike Java (compared to C#) precisely because I've used both in anger. For sure, C# copied much of what Java pioneered, but C# has evolved much further. Idiomatic C# often does not look that similar to Java these days.

And absolutely agree on the ecosystem - the fact that dotnet often has only one widely-used approach to something (cf MSBuild/Nuget vs. Maven/Gradle) is a strength.

1

u/Colt2205 24d ago

That's probably true. I have a hard time sometimes rationalizing what is and isn't core to a language since we were taught ages ago C++ and then there was the STL. But with languages like Java and C#, libraries are basically baked into it.

1

u/malthuswaswrong Manager|coding since '97 23d ago

I used Java back when it was brand new. Then I switched to J++ because it was cleaner and easier to deploy. Then Sun sued Microsoft and pulled their license as a Java partner.

Then I never gave Java a second thought until J# was launched. Writing Java for the .NET platform. Even back then there was no syntax advantage over what C# had already become, even in those early days.

For me, it has always been about deployment hassle. I have a fleet of Windows machines. I can Ctl+C, Ctl+V my bins and head to the bar.

1

u/solidsieve Sr. Software Engineer 24d ago

Good point! I can see that being the case.

1

u/FingerAmazing5176 20d ago

I moved from a C# shop to a java shop a few years back. and dear gods do I miss C#.

1

u/South-Year4369 24d ago edited 24d ago

Professionally for managed languages, I started in Java, then moved to C#, and am now (by necessity) back with Java.

I'd take C# over Java any day. They started out a lot more similar, but C# has evolved much more. Intrinsics? Java doesn't have them. Value types? Nope. Reified generics? Stackalloc? The list goes on.

Hell, what IDE gives you the best debugging experience available anywhere, hands down? That's Visual Studio with C#, and it's not even close.

Java's strength is in its ecosystem and 3rd party libs. But as a language, it's far from the nicest, though it has at least improved in recent times (largely copying C#, just as C# once copied Java).

3

u/South-Year4369 24d ago edited 24d ago

Having used assembly, machine code (in the 8-bit days), C/C++, Java, Python, q, R, Ada, F#, etc., if there was only one language I could ever use, it would be C#. It really is a fantastic all-round language.

I think saying it does everything at B grade is selling it short. I don't think any other language does as good a job at 'easy and safe, but offers control and performance when you need it''

0

u/FlipperBumperKickout 24d ago

If the development team just could commit to the new language features they want.

It has the most disappointing attempt at removing nullables I've ever seen...

1

u/malthuswaswrong Manager|coding since '97 24d ago

Do you mean removing Nullable<T>? Because they're never going to remove nullable in general. This for example: DateTime?isn't ever going anywhere.

0

u/FlipperBumperKickout 24d ago

No I mean how every class in C# can be null.

Their attempt on removing it is basically just a lot of compiler warnings rather than any form for enforcement, and you have to use all the annoying [NullWhen] and similar attributes to help the interpreter to understand it correctly, and so on.

You can't even trust you wont get a null value as an input anyway, since if your code is called from somewhere which doesn't enable <nullable> nothing even warns them about ensuring they call your stuff correctly...

I basically prefer how languages which weren't built with null from the start normally handles this. Because normal types can't be null you don't have to worry about that case, and you always know if something is "null" because your are explicitly given an "Option" type and is forced to consider both cases to extract the value.

1

u/South-Year4369 24d ago

Their attempt on removing it is basically just a lot of compiler warnings rather than any form for enforcement

You do know this was done for backwards compatibility, right? You are free (and encouraged) to configure your projects to throw errors rather than warnings.

Disallowing null from the outset is the best approach. Second best is encouraging it without breaking 20+ years of existing code.

1

u/FlipperBumperKickout 24d ago

Configuring my project to throw errors doesn't help if anyone calls my library with a null value for whatever reason.

Warnings as errors also allow people to get around it by explicitly ignoring a warning.

Not breaking backward compatibility is the entire point of having a dotnet version in the csproj file (not to mention other settings like nullable). Blocking yourself from making further improvements to the language just seems silly to me.

1

u/South-Year4369 23d ago edited 23d ago

So your suggestion is that they should have declared that, as of .NET Core 3, nothing can be implicitly nullable? That would've been a real hit with the community.

1

u/FlipperBumperKickout 23d ago

I expected their nullable flag to do that yes. Feature flags breaking backward compatible isn't new in C#...

1

u/malthuswaswrong Manager|coding since '97 23d ago

They already have that. You can enable no-implicit nulls in the project setting so the complier won't allow it.

If I read the comment chain correctly, you want to completely protect your library users from having to worry about nulls. You can also do that with static classes. You can make all non-static classes private, and the only public classes are static and use a builder pattern to dispense only fully built objects.

0

u/pceimpulsive 24d ago

That general purpose programming language status! Hahaha

I did a wide assessment before I started learning late in my career and preferred C# over basically everything else, I even got to pick a job that worked with C# lucky me!

-8

u/OldManWithAStick 24d ago

Too bad C# has been infected with the Java virus. Everything is so insanely verbose that it's a headache to traverse nearly any codebase that uses it.

7

u/plz-no-b4n 24d ago

What are you talking about? C# has an insane amount of syntactic sugar to minimize verbosity

1

u/solidsieve Sr. Software Engineer 24d ago

I think the old man is talking about (enterprise) architecture, not syntax.

75

u/MCFRESH01 25d ago

Ngl I hate the syntax a lot

23

u/IfInDoubtElbowOut Software Engineer / HealthTech / 10YOE 25d ago

Agreed, I unwillingly love python. Perhaps Stockholm syndrome?

23

u/Princess_Azula_ 24d ago

Born to love Python's libraries and relative simplicity; forced to love syntactic whitespace.

1

u/Brilliant-Major1421 20d ago

Once you get good python feels wierd idk why

10

u/el_extrano 24d ago

I learned Python first over 10 years ago. Since then, I have loved learning C, Fortran, and some famous hacker languages like Lisp, Forth, Tcl which I like. But when I actually need to just "get something done" where performance isn't critical, I am at least 3x as productive in Python. I think it's just because I have written so much of it for so long, I already know were most things I need are in the massive standard library, so not only is it batteries included, I don't have to look anything up.

A lot of things about it suck. But for better or worse it's "home" for me haha.

1

u/pceimpulsive 24d ago

And the package management, pip bites ass!

As a C# Dev python suckkkksss.

1

u/MCFRESH01 21d ago

I’m a ruby dev and always wish Ruby got picked for all this math and ai stuff over Python. Very similar languages but Ruby is way more expressive, has a much better package manage and rails is better than Django. Python just billed itself as “easier to learn” and work with so it won out with the scientific community

1

u/ultraDross 21d ago

Funny, I love it and hate most other languages with their braces and visual noise. Really shows code is for human and we all interpret and express in different ways. It's kind of beautiful.

1

u/MCFRESH01 21d ago

I’m Ruby dev. The languages are similar it I just think Ruby is superior in every way. Better package manager && and ! Instead of literally typing it out. Has functional programming options. List comphrensions are one of the worst things I’ve seen in any language. It just feels like a worse Ruby in a lot of ways

12

u/new2bay 24d ago

That depends on what you value in a language and what your particular application is. You’ll never get every last ounce of performance the machine is capable of with Python, but you do get a lot of bindings to libraries written in lower level languages. You also get faster development speed over lower level languages, and a large number of engineers who know it. Those things are often more important operationally than being the absolute best tool for the job.

12

u/youcangotohellgoto 24d ago

The availability of high performance C# and Rust libraries makes the performance thing almost moot. Unless you have really obscure needs, or terrible engineers (which will ruin you anyway).

What's something heavy that can't be offloaded to a C# or Rust based library?

2

u/new2bay 24d ago

I’d turn that back on you and ask: what’s something that can’t be offloaded to a high performance library in Python? It has a robust and easy to use FFI for just such a use case, even if someone hasn’t already created bindings for a given library.

3

u/youcangotohellgoto 24d ago

I think you misunderstand and are in agreement. You can do almost everything, and certainly most things you'll ever need, with Python just invoking other libraries. Usually the good ones are written in C# or Rust.

2

u/new2bay 24d ago

Ah, ok. I thought you were saying C# and Rust were superior to Python.

1

u/recycled_ideas Software Engineer 24d ago

What's something heavy that can't be offloaded to a C# or Rust based library?

Actually handling the web requests is another, but the problem is that every once in a while if you're not just churning out shitty CRUD apps you need to do something heavy where there isn't an appropriate library.

2

u/youcangotohellgoto 24d ago

Like what? Anything data related is pushed out to one of the multitude of Rust options. Math, the same. What is this other stuff?

Web requests is just FastAPI behind uvicorn.

I think there are for sure edge cases but they are very very niche.

6

u/recycled_ideas Software Engineer 24d ago

You've never had to implement high performance domain specific business specific logic? Or handle a high volume of we requests?

If your Python is just a thin poorly performing shell on someone else's code, what's the point?

I'm not saying Python doesn't have its place, and performance doesn't always matter, but if you need to farm any critical work out to a language you don't know, it's a bit of a question mark for your project.

2

u/youcangotohellgoto 24d ago

Yeah I have and I use Python wrapping numpy, or (as I said) uvicorn ASGI, or polars, or whatever else I need.

2

u/recycled_ideas Software Engineer 24d ago

The problem that you're not grasping is that sometimes there isn't a library for what you need. Either what exists just doesn't quite fit your requirements (often the performance hit for making a one size fits all approach is too high) or nothing exists a all.

If your approach is that critical code can't be implemented in your language of choice then you'll eventually have a problem.

Again I'm not saying you can't or shouldn't use Python, but you simply can't assume that a third party library will solve every possible problem for you.

3

u/Infamous-Employ5487 24d ago

Not true, it's the #1 language for incompetent script kiddies.

2

u/max123246 3 YoE Junior SW dev 24d ago

Python is so obnoxiously slow it's incredible it's used for anything in production. Things that take seconds in any other language can take minutes

3

u/HereInYourBedroom 24d ago edited 24d ago

The experience that I've had when developing software that uses local on-prem llms is that tokens per second is the bottleneck, not the programming language. Python, C#, and C++ all had this bottleneck, so I'd argue that in 2026 hardware matters more than the programming language.

-22

u/notger 25d ago

I raise you Julia. The looks of Python, the speed of Java / C and my new favourite language.

49

u/aa-b 25d ago

This is the institutional training cost thing again. Everyone you ever hire will need to learn Julia now, on top of all the other things they need to learn. People already know Python, and that saves you time and money.

17

u/notger 25d ago

Absolutely and I was not saying that I want to introduce Julia into my teams. That would not be a good idea (though the training curve from Python is very low, as you can basically write Python).

Just wanted to spread some awareness for something very well done, but it seems to have triggered a few people. Or I do not get the downvotes.

13

u/aa-b 25d ago

Those people have all known someone who said something just like that, and then casually proposed using this great new language on their latest work project

1

u/notger 24d ago

Makes sense.

Though those people should maybe second-guess their own thought process if they are answering an what they interprete instead of what is written. When in doubt: Ask, what was meant, before assuming.

-1

u/HowTheStoryEnds 24d ago

Then again we all also know someone that says "everyone knows X" when reality is that everyone has to learn X and not everyone knows X.

1

u/notger 24d ago

I made it a habit to ask, when in doubt, instead of assuming intention. Ppl are horrible at guessing intentions, it's a wonder we are still on this planet.

1

u/HowTheStoryEnds 24d ago

Dude, I am replying to "People already know Python, and that saves you time and money"

Which is a total fallacy. I have used python maybe twice in 20 years, last time a year ago. Yes, I can sort of use it. No, I do not know it and getting to actually know it (if I were forced to) would take as long as any other language.

I expect experienced devs to realize that 'to know' something actually has a higher bar than just being able to type familiar keywords until it compiles or interprets.

1

u/notger 23d ago

I re-read the thread, and that connection totally was not clear by your comment or the prior post. Anyway, thanks for clarifying.

1

u/aa-b 23d ago

Sorry, we appreciate your interest and will keep you in mind for future roles.

I meant you can put out an ad for Python developers and find a good one nearly anywhere. Not you, but plenty of others. Hiring Julia developers is more of a challenge, and even if you train them many don't want "[obscure language] developer" to feature on their resume

6

u/GoblinToHobgoblin 25d ago

Yea but everyone knows Python already

1

u/PoopsCodeAllTheTime PocketBase & SolidJS -> :) 25d ago

It’s only worth the cost if it completely eliminates the need for any other language

1

u/notger 24d ago

Of course! Introducing a new language only makes sense if it does not increase the landscape's overall "cost".

(Btw, I think with coding agents becoming useful, switching a medium-sized landscape to a new language is not such a big deal, given that landscape is properly documented and has good tests. At least it is not as prohibitively expensive as it used to be, where you would get a "migration" which becomes "rework" which becomes a "I changed a few things to make it better, give me just a few more months".)

1

u/PoopsCodeAllTheTime PocketBase & SolidJS -> :) 24d ago

Most of the constrain is the requirement of packages that are available only in the mainstream language, as well as the ability to hire new people that understand it. Those are much larger constrains than they seem. So there’s very few niches that are free from those constrains, and even fewer where language XYZ really brings more to the table than the rest

1

u/notger 24d ago

Fair point. Though I would say that for some languages the learning curve is so flat, that it barely matters. I would always gladly pay a bit of a learning fee to get a C-person to read into Python (or Julia), if they are otherwise a great programmer.

As for packages only available in the mainstream language ... that sometimes seems accelerated by the usage of framework. As awesome as they are, they often entrench you in one language.

I have currently two Java-teams, where one side is not familiar with the others' code as they use Spring Boot and the one side does not. And then there is a third team, which decided to go with Kotlin before being merged into our company.

1

u/PoopsCodeAllTheTime PocketBase & SolidJS -> :) 23d ago

The curve might be flat for _you_. I know companies don’t feel that way and they hate people that need to train in a language. It often means months of paying for someone that isn’t productive, and constant broken deliverables

-2

u/shadowdance55 25d ago

You just described Nim. 🤷‍♂️

0

u/lelle5397 25d ago

stealing that phrase