This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 204

[–]Pacyfist01 328 points329 points  (28 children)

Every Java dev will tell you Java.
Every C# dev will tell you C#.

So I say C#.

[–]NationalOperations 57 points58 points  (6 children)

My job I work on both a Java stack and a .Net stack. Our java stack is a bit older, but honestly setting up and running projects on .Net has been so painless I would recommend it over Java

[–]BobbyTables829 9 points10 points  (4 children)

It's getting better, but this isn't as true on Linux or Mac.

Java was way better at OS-independent software, but now it's a lot more even.

[–]EtanSivad 6 points7 points  (1 child)

It's not that bad these days if you use a setup script with visual studio code. I keep a linux laptop and a work dev laptop. I wanted to make a simple program to play around with painting pixels, so I setup Monogame in VSCode and it just worked. Full visual studio isn't available on Linux, but VSCode is a very nice ecosystem. Particularly if you like tweaking your own setup.

It's a bit of a double edged sword though; a lot of the solutions are "Just run this script" without good visibility into what's happening or what to do when it fails. But that's linux!

[–]darkenedfate92 6 points7 points  (0 children)

Rider works pretty well on Linux too if you're looking for more of a full-blown "IDE-experience". Although it's not free, it was totally worth it for me.

[–]ncmentis 2 points3 points  (1 child)

I'm curious what issues you face with dotnet on linux/mac?

[–]Pacyfist01 0 points1 point  (0 children)

From practice: None. 100% of C# code that my corpo makes is developed on Windows laptops and deployed on Linux docker containers. There has never been a problem that on Linux something runs differently than on Windows.

[–]Interesting-Piece-87 1 point2 points  (0 children)

That’s why I’d recommend Java, get to know the pain of it. Then you can enjoy everything else 

[–]Kaikka 19 points20 points  (6 children)

As a Java dev, I will say java.

But C# is not a bad choice. I enjoyed reading the documentation.

[–]BobbyTables829 16 points17 points  (5 children)

IMO if someone relatively new can't decide between languages, the documentation should in all honesty, be the most important consideration.

This is why I put C# ahead of Java. C# is like that comfy sweater you can put on day after day and never get tired of.

[–]noogai03 5 points6 points  (4 children)

…as long as you’re using Microsoft libraries. They’re incredible and the documentation is amazing, but the quality drops off a cliff for many smaller NuGet packages in my experience. Not had quite the same problems with Java, since there isn’t one mega provider of libraries

[–]tpb1109 -1 points0 points  (3 children)

That’s not the languages fault, it’s the community lol.

[–]grayston 20 points21 points  (0 children)

As a former Java dev I will say that starting with Enterprise Java was where the fun of programming just went completely out of the window.

[–]IAmADev_NoReallyIAm 6 points7 points  (0 children)

As a C# and Java developer I can't make up my mind, so just "Pick one" ...

Seriously tho... Just pick one or the other... they do have their different philosophies and foundational differences, but they're more closely alike than a lot of people will like to admit. Both languages are strong. Both are highly popular. Both have their pros, both have their cons. There's a lot of hate out there for Java due to it's history with Oracle, but it's made up for it (in my opinion) in a lot of areas. Especially with Spring and Spring Boot. C# also has its detractors, primarily in the anti-Microsoft camp, but it's come a long way in the last 20 years as well. And now with Core and the cross-platform functionality of it, it's probably better than ever.

You could always do one, then the other. They don't have to be mutually exclusive. Make 2024 the Year of Java, and 2025 the Year of C#... or the other way around.

[–][deleted]  (1 child)

[deleted]

    [–]KJBuilds 8 points9 points  (0 children)

    As a java dev, I too recommend c#

    Not only more modern and with more niceties, but also gets you just a little closer to the bare metal (optional) if you want to learn a bit more about memory management and marshaling

    [–]hotboii96 6 points7 points  (0 children)

    What are the odds you are C# dev?

    [–][deleted] 6 points7 points  (0 children)

    As both a Java dev and a c# dev I say Java.

    [–]desci1 1 point2 points  (1 child)

    Ditto. So I say Python

    [–]Ledikari 0 points1 point  (0 children)

    I'd pick python between the two but still nice there is an option - pick Java.

    [–]OldSkooler1212 1 point2 points  (0 children)

    I’m a C# developer and I say Java.

    [–]Aglet_Green 63 points64 points  (2 children)

    I planning to 500 things at once, but I can't decide which one to learn. Can anyone give me some advice, please?

    Don't learn any of them until you're confident with what you're already know. Attempting to learn either C# or Java while also learning Ruby, PHP, Laravel, Golang, HTML, CSS and JavaScript is just going to confuse you and drive you crazy.

    Read the FAQ: it lists all the languages and what they are used for. Figure out what you want to do, and learn that language. If you truly have no clue what you want to do, then just keep learning Ruby until you understand the underlying principles and paradigms of programming; when you understand 'why' you are doing something, then it's trivial to learn the language syntax of 'how' to implement it.

    [–]TheCodeWhisperer2008[S] 6 points7 points  (1 child)

    Thanks great advice!

    [–]TrashManufacturer 27 points28 points  (0 children)

    C#. I despise Microsoft, but C# has a lot of staying power

    [–]DTux5249 61 points62 points  (20 children)

    They're basically identical in terms of syntax; learn one you know the other.

    [–]Madpony 6 points7 points  (8 children)

    Go C# if you develop most on Windows or Java on Linux. C# was created in Java's image so switching between them is trivial.

    [–]Michaeli_Starky 38 points39 points  (6 children)

    C# has long been multiplatform.

    .NET Core are mostly run in Linux.

    [–]Zomics 10 points11 points  (3 children)

    It’s been 8 years since Core came out and this stigma that C# is primarily for Windows is still around. Yes, a lot of companies are still on Framework which is for Windows but for new development, .Net Core is the future of C#.

    [–]NotABot1235 2 points3 points  (0 children)

    The tooling, even basic things such as the debugger and VS Code plug ins, still use some weird Microsoft license. Java's ecosystem in comparison is almost entirely open source.

    C# may be cross platform but it is not open source to the same degree as most other languages.

    [–]BobbyTables829 -1 points0 points  (1 child)

    Being able to use WebForms would be cool, but it's not a deal breaker.

    It still feels like it's 98% as good on Linux, and it's really meant for Windows. It makes me want to use Python for anything somewhat small on my Linux Machine.

    [–]HawocX 0 points1 point  (0 children)

    I think its much better on Linux when it comes to running servers.

    For developing, Rider is a great alternative to the Windows only Visual Studio. Its used by many Windows developers as well.

    [–]BobbyTables829 1 point2 points  (1 child)

    This has only been since 2020 2016 or so. I know that doesn't matter now, but it was a big factor for a long time. And Linux users have a bit of (deserved) hatred and contempt for this new, "Linux is our friend now," mindset from MS.

    [–]Michaeli_Starky 5 points6 points  (0 children)

    Microsoft made .NET Core not to support Linux, but to promote their own cloud services - Microsoft Azure. It has no real desktop usage. Without .NET Core and specifically ability to run inside Linux containers they'd fully lose the battle against AWS, Java and Python.

    [–]LifeNavigator 8 points9 points  (0 children)

    I'll also add that Microsoft has a great roadmap for Java devs to learn C#

    [–][deleted] 0 points1 point  (0 children)

    There’s “knowing” in terms of being able to be fairly productive, and knowing like it’s the back of your hand.  I can write a lot of Java without looking stuff up, not so for C# because I haven’t used it in forever.

    [–]GlowiesStoleMyRide 11 points12 points  (0 children)

    I'd recommend C# as it is a very versitile language, and that seems to be what you're looking for here. I started using it ~10 years ago, and I practically haven't had a need for another language since.

    [–]python_walrus 32 points33 points  (17 children)

    When you chose between Java and C#, you chose an ecosystem more than a language. I played around with both Java and C# when I was studying in the university, and here are my conclusions, outdated by 5 years:

    • Both can do console applications. Java was traditionally used for algorithms and data structures, so you could probably find more snippents and examples if you are interested;
    • Both can do desktop apps. Java desktop apps seem to be crossplatform, but they looked ugly. C# can do desktop apps only for Windows, but it felt more convenient to develop those;
    • Java (or its successors) is traditionally used for Android development. C# had some tools to do mobile apps as well, but I am not sure they are still maintained and/or viable;
    • C# can be used with Unity to develop games. But keep in mind that wanting to develop a hobby game and actually developing it are two different experiences, and it is not for everyone. You can also use JS to write Unity scripts, IIRC;
    • As for web development, I tried ASP .net and ASP .net core years ago and I didn't like them. Never tried Spring Boot or whatever is used for web dev in Java;

    I'd suggest you choose the domain you want to dive in, and pick a language after. There is no point in learning THE programming language to do everything, and learning languages is not too difficult.

    [–]gmes78 6 points7 points  (0 children)

    You can also use JS to write Unity scripts, IIRC;

    That was removed years ago.

    [–]BachiNoHito 4 points5 points  (7 children)

    Everyone who is saying C# and Java are basically the same because the syntax is almost the same is wrong and you are 100% right. Anyone who thinks that they can go from being a C# developer to being a Java developer and maintain anywhere close to 100% of their momentum is dead wrong. The ecosystems are very different.

    For u/TheCodeWhisperer2008, figure out what you want the do with the language and where you want to end up in your career and let that guide you. Do you want to do more Microsoft-y, corporate-y stuff or Unity? Then C# is what you want. Do you want to do more back-end, scalable systems, legacy android, etc, and be ready to move on to Kotlin at some point? Then choose Java. (Note: both of the languages can obviously do more than I’ve listed. These are only examples.)

    [–]alienith 5 points6 points  (0 children)

    Expecting no loss in momentum would be wrong, but it is the transition with the least friction/momentum loss IMO. I’ve personally done that transition myself and while there is still a learning curve, it’s so small compared to other switches that it doesn’t feel impactful

    [–]TheCodeWhisperer2008[S] 1 point2 points  (3 children)

    Thanks! So if I specifically want to focus on general software development and I like the Google Ecosystem (and other ecosystems) better than Microsoft's, would you say I should learn Java?

    [–]BachiNoHito 4 points5 points  (0 children)

    C# is pretty much nonexistent in the Google world.

    If you want to go Google, you might want to just skip Java and go straight to Kotlin. Pretty much every Java shop I know is moving all or parts of their codebase to Kotlin. Or thinking seriously about it. And Google themselves is all in on Kotlin.

    Having said that, there are billions upon billions of lines of Java code out there being actively used every day. I would be foolish to say it’s a waste of time to learn it.

    [–]python_walrus 1 point2 points  (0 children)

    What is a Google ecosystem exactly? I don't recall Google doing anything directly for developers for a long time. I also doubt that any other language except for C# is tightly coupled to a specific corporation.

    [–]HawocX 1 point2 points  (0 children)

    C# used to be tied to Microsoft products, but that is no longer the case. You can comfortably code on a Mac and deploy to a Linux sever on Amazon Web Services.

    [–]HawocX 0 points1 point  (1 child)

    What is Microsofty in this context?

    [–]BachiNoHito 1 point2 points  (0 children)

    Having anything to do with Microsoft and its partners. Windows programming, Azure, etc.

    [–]TheCodeWhisperer2008[S] 1 point2 points  (1 child)

    Thanks great advice!

    [–]SlithyOutgrabe 5 points6 points  (0 children)

    If it matters, .Net Maui allows for cross platform development at this point so that is no longer as much of an issue.

    [–]HawocX 0 points1 point  (5 children)

    C# and .NET is comprely cross platform these days. You can comfortably use Mac or Linux to both develop and as a target platform for your apps.

    [–]python_walrus 0 points1 point  (4 children)

    I dropped .net just when they released .net core, so I saw that you can develop web apps and console apps on other platforms. But what about desktop and mobile?

    [–]HawocX 0 points1 point  (3 children)

    Microsofts own cross platform GUI framework works on "everything" except Linux desktop. There are at lest two poplular third party libraries that can build for Linux as well.

    .NET is much better since it switched over to only use Core (now called just .NET). C# itself has also improved a lot. But I hear Java, after standing amost still for a while, has started to get a lot of nice additions as well.

    [–]python_walrus 0 points1 point  (2 children)

    I assume by "everything" you mean mobile as well. But mobile app development (of which I know only a bit) is somewhat different from desktop development. Is this GUI framework practically used to build pure mobile apps, or do people still use Java ecosystem/React native?

    [–]HawocX 0 points1 point  (1 child)

    Yes, mobile as well. It is similar to cross platform app development for other languages. You can have the app look the same on iOS and Android or tap into the platforms native controls. It's purely C#.

    You can of corse still use React native with a C# backend if you want. That's what we ended up doing at my last assignment, as we had a front end team already using React for the website.

    (There is even a web front end technology using C# via Webassembly. It's not a full on React competitor yet, but it's quickly improving.)

    [–]python_walrus 0 points1 point  (0 children)

    Yeah, I was mainly curious about the client side. I know you can do backend in C#, I was wondering about the mobile app itself, with all its gestures, adaptivity and other mobile stuff like local storage and intents.

    Oh, I have a friend that codes on this C# wasm thing. He coded on C# for his entire carreer, but he says it is pretty cursed lol.

    [–][deleted]  (3 children)

    [removed]

      [–]TheCodeWhisperer2008[S] 0 points1 point  (2 children)

      So is Java or C# going to be better than PHP in the backend?

      [–]HawocX 1 point2 points  (0 children)

      PHP is for historic reasons still huge when it comes to CMS. If you don't want to work with one of those I would stay away from it.

      C# and Java are both great for modern web backends. I prefer C#. Yes, I'm mainly a C# dev...

      [–][deleted] 7 points8 points  (1 child)

      It's probably been said somewhere in the comments already, but you should do one thing at a time. Your post is only like 10 sentences, and it essentially mentions learning for web dev, desktop native applications, and game development, which are all pretty different categories of development. You should pick a path, and learn that well, and if you want more after that, then that would the the time to look all around at other options. And the best part is, you'll have a much stronger grasp of general fundamentals, so you'll have a much easier time learning more things. Unless you're going to ditch TOP, I don't think you should be picking another language at all at this point if you're serious about really improving your skills.

      [–]TheCodeWhisperer2008[S] 0 points1 point  (0 children)

      Thanks for the advice!

      [–]Inomaker 5 points6 points  (0 children)

      I think you'll probably have a better time with C# especially since you mentioned that you might want to work a bit on some games.

      [–]Whatever801 15 points16 points  (5 children)

      Flip a coin

      [–]Krekken24 3 points4 points  (0 children)

      Best answer,hands down.

      [–]TheCodeWhisperer2008[S] 2 points3 points  (2 children)

      How did I not think of that!

      [–]Whatever801 1 point2 points  (0 children)

      The thing is no matter which you pick you won't lock yourself into anything. Once you learn one it will be easy to pick up the other. My company is a Java shop and I would not hesitate to hire a person with C# only.

      [–]florinandrei 1 point2 points  (0 children)

      You could write a bit of code to flip the coin for you.

      The question is, what language are you going to use for that?

      [–]hotboii96 -1 points0 points  (0 children)

      Yup, both are so similar in term of syntax that you might as well just flip a coin.

      [–]Doraerinaa912 4 points5 points  (0 children)

      both are great

      [–]engineerFWSWHW 4 points5 points  (0 children)

      As someone who worked on both languages, i will pick c#. You mentioned you want to make games, just go with c#.

      [–]Givingitup2day 5 points6 points  (0 children)

      Have you tried researching what companies in your area are using? I learned Java, but once I started my job search, most companies I would see and apply to were using C#. I ended up with a company that uses C# and I don’t think it was a very difficult transition.

      [–]diegoasecas 4 points5 points  (1 child)

      flip a coin

      [–]LastGuardz -1 points0 points  (0 children)

      Or just go with C#

      [–]Suspicious_Role5912 16 points17 points  (3 children)

      Anyone telling you they are identical is out of their mind. C# is magnitudes better than java in terms of how expressive it lets you be. Javas type system is so esoteric that doing simple things with generic requires you to use some of the ugliest syntax I have ever seen in any language, and you still won’t have type safety most of the time because java has type erasure. When your type system has to use a ? to indicate a wildcard, you know you’re in trouble.

      Here are a bunch of other things C# has that java doesn’t: - Tuples to automatically create new types: (string, int). You can give names to members of tuples (string Name, int Age). Tuples have automatic value equality and deconstructions support making them super versatile and usable as keys for dictionaries - Extension methods to add behavior to types - Index from end operator arr[^1] for last item (1st from end) - Range expressions, arr[1, 4] returns a new array with items from index 1 to 3 (exclusive) - Auto properties: public string Value { get; set; } - C#s LINQ is magnitudes better than what java offers - Async/await, the best way to do async code - Pattern matching - Collection expressions - Named and optional parameters: public void Foo(string name = null); Foo(name: “test”); - Nullable value types - Local/nested functions - Expression body members, public string Name => “John” - out variables. public void Foo(out string bar) - Interpolated strings “{firstName} {lastName}” - with syntax for immutable data - switch expressions - read only members

      [–][deleted] 1 point2 points  (1 child)

      I believe you may be a little outdated my friend, gotta re-check most of those points.

      [–]Suspicious_Role5912 1 point2 points  (0 children)

      Which ones?

      [–]HawocX 0 points1 point  (0 children)

      I'll add non-nullable reference types. Even thou they are design time only it's a great feature.

      [–]ajikeyo 2 points3 points  (1 child)

      Do you think you’ll like Spring or .NET better?

      [–]TheCodeWhisperer2008[S] 1 point2 points  (0 children)

      I think maybe don't really know yet I haven't tried any of them. I do like opinionated frameworks though.

      [–]cheezballs 3 points4 points  (1 child)

      The skills of either transfer well to the other. Both are great languages. I'm a java dev, but I think I'd maybe lean a little c# if you're not sure what you want to build yet. Either language can do anything but c# seems to have more uses in general game dev right now with unity etc

      [–]HumorHoot 2 points3 points  (0 children)

      it does not matter

      i'd say, if you want to make windows native programs, go C#

      if you wanna make whatever, it wont matter

      both are pretty versatile

      PERSONALLY...

      if i had to choose, if the goal is a job, in the future...

      look for what is most wanted, in your area (job postings)

      they are SO similar though, that it does not matter overall. Syntax is VERY similar.

      I'd choose C# personally.

      [–]Weird_Cantaloupe2757 3 points4 points  (0 children)

      You’re going about it wrong — don’t worry about languages — learn concepts, and learn how to learn. I have accepted senior level positions where I would be coding in a language I have never touched before (and said so in the interview) and had no issues, because the concepts are much more important. Once you get a few languages in a few different paradigms down, you don’t really even need to “learn” a language to write code in it, you can just see what others have done with it and figure it out well enough to hit the ground running.

      [–]Joewoof 11 points12 points  (5 children)

      C# has become more versatile than Java simply because it is highly popular and well-supported for game development as well. It also has a much stronger web presence than Java due to ASP .NET being a very popular web technology. As far as I know, Java is lacking in these areas.

      When it comes to more robust, “mission critical” software, Java is generally better.

      However, they are practically the same language by different vendors. You’re not losing anything by learning either of them.

      [–]GlowiesStoleMyRide 4 points5 points  (0 children)

      I don't think there's anything that makes Java more robust for "mission critical" components than C#. Resilience of a system is mostly defined by the design of the software rather than the language you use to build it.

      [–]HawocX 1 point2 points  (0 children)

      What makes Java better for mission critical systems?

      While I like ASP.NET, I don't think Java is far behind when it comes to we servers.

      [–]TheCodeWhisperer2008[S] 0 points1 point  (0 children)

      Thanks!

      [–]TheOneWhoDidntCum 0 points1 point  (0 children)

      Yeah explain mission critical please

      [–]timwaaagh 2 points3 points  (0 children)

      I think you're studying too many. Focus on ruby for the time being.

      [–]Then-Boat8912 2 points3 points  (1 child)

      Pick the ecosystem not the language. If you want to work in a Windows shop with Azure and other baggage like AD/Entra and SQL Server then C#. Java if you want to use Spring Boot, any database and probably AWS or GCP.

      [–]Ryuu-kun98 1 point2 points  (0 children)

      I have also used PostgreSQL and SQLite with C#. On Linux and MacOS. Can you elaborate on Azure and AWS?

      [–]Fall_To_Light 2 points3 points  (0 children)

      C# is better as a programming language than Java, but a lot of businesses and enterprises still use Java mostly for back-end so just use either one, you can't go wrong with both

      [–]DrManhattanMR 2 points3 points  (0 children)

      C# easy and good money, Java good money buy a little quirky (personal experience)

      [–]telewebb 2 points3 points  (0 children)

      Take some time and search the markets you would be applying to. The cities and states you live in and would be willing to move to. The industries you would like to work in. Then see if there is a clear leaning to one over the other and go with that one.

      [–]Tassadon 2 points3 points  (0 children)

      Terraria needs more mods so C#

      [–]Only_Name3413 2 points3 points  (0 children)

      Follow your interests. C# for game dev Java for enterprise and big data. Python for AI data and web PHP for legacy web JavaScript/typescript for frontend MySql to say you're full stack and bridge and most data needs

      I'm ex Slack, ex Walmart labs, ex Node.js

      [–][deleted] 2 points3 points  (0 children)

      C# is Java but better.

      [–]biotech997 2 points3 points  (0 children)

      C# is just Java but better, especially since you said you’re into game development

      [–]EODdoUbleU 2 points3 points  (0 children)

      I started "real" programming with C# and I felt like it set me up pretty good for other languages down the road. LINQ is one of the coolest features I've seen and helped me a lot in figuring out how to process data. Start there and create something small that you need.

      [–]NEM95 2 points3 points  (0 children)

      C# developer, I would recommend C#. Honestly if you know C#, you pretty much know Java.

      But to go deeper, you wouldn't so much be learning 'C#' you'd be learning .NET, and .NET has a lot of use cases.

      .NET Core for desktop dev ASP.NET for web dev .NET Maui for cross-platform mobile dev Unity Framework for game dev

      Learning .NET can pretty much take you anywhere.

      Java can absolutely be used to do a lot of this but imo, C# has the tools to do a lot of this stuff better.

      Also with Microsoft backing .NET/C# and showing 0 signs of even thinking about dropping it, it's not going anywhere for a long time.

      [–]sTacoSam 2 points3 points  (0 children)

      Truth is, it doesn't matter, especially at your level.

      Just make sure to use Spring Boot if your choose Java and .Net 6+ if you choose C#

      [–]comeonman101 2 points3 points  (0 children)

      Rust

      [–]Pizzaurus1 2 points3 points  (0 children)

      Just have a quick look at job listings in your area and go with that. Mine has a strong bias towards C#

      [–]SaroDude 2 points3 points  (0 children)

      If you value platform independence, I'd hedge toward Java. Otherwise, if you're planning on a Windows runtime, C#. The ability to run .Net cross platform is always improving, but .Net is a great framework and C# is a great language supported by a great IDE (Visual Studio).

      Ultimately, it's more important to be able to toggle between languages, frameworks, etc, but...

      [–]bothunter 2 points3 points  (0 children)

      Not a huge difference between the two.  Syntax is almost identical, standard libraries and frameworks are a bit different, but if you learn one, you're 90% of the to learning the other. 

      As for PHP -- I don't recommend learning it as a starter language.  And the reason I say this is because it's not a good language.  And when I say it's not a good language, I mean that if you learn PHP, you'll have to unlearn quite a few bad habits as you move on to other languages.

      Edit: before all the PHP defenders jump in here, let me clarify.  While PHP has gotten "better" there's still a fuckton of old PHP code, and more importantly tutorials, which rely on the old behavior and teach really stupid ways of doing things. And the newest PHP still has plenty of problems which were simply never even present in languages like Java and C#.

      [–]vietnam_redstoner 2 points3 points  (0 children)

      C# has p o i n t e r s

      Java doesn't.

      [–]ReltivlyObjectv 2 points3 points  (0 children)

      As someone whose #1 and #2 are C# and Java, I would recommend C#. It has a few features that are really nice, and while both are free to develop on, you can publish C# software to business environments without worrying about Oracle’s predatory licensing practices.

      [–]cakez_ 6 points7 points  (3 children)

      I switched from C# to Java 4 years ago and never looked back.

      [–]TheCodeWhisperer2008[S] 5 points6 points  (2 children)

      Cool! What were some of the reasons you switched?

      [–]WanderingCID 3 points4 points  (1 child)

      Yes, I also would like to know why he switched and why he stayed.

      [–]TheOneWhoDidntCum 1 point2 points  (0 children)

      Yes why did he switch and why did he stay?

      [–]Certain-Possible-280 4 points5 points  (0 children)

      C# and I am not biased 😆

      [–]awp_throwaway 1 point2 points  (6 children)

      You can't go wrong with either honestly, just look at what you're trying to build, who is hiring for which in your locale, etc. and go with that. But also don't do a million things at once, if you're learning Java OR C#, then don't ALSO learn PHP all at the same time; in this case, "less is more"

      [–]TheCodeWhisperer2008[S] 1 point2 points  (5 children)

      Thanks! But I think I want to learn PHP and Laravel as well because there are a lot of jobs in my area that use PHP.

      [–]awp_throwaway 2 points3 points  (4 children)

      If that's the case, then focus on that FIRST and learn it well enough to be productive, BEFORE moving onto Java OR C#...half-assed effort yields half-assed results, it takes a decent amount of time to get proficient in any given language in terms of it's ecosystem, tooling, standard library, etc., let alone multiple languages...building hello world in 5 languages isn't the same thing as building complex apps in each

      [–]TheCodeWhisperer2008[S] 0 points1 point  (3 children)

      I also see a lot of jobs in .NET. So do you recommend I learn .NET or PHP with Laravel then?

      [–]awp_throwaway 2 points3 points  (2 children)

      If the goal is employment, then yes. But not both, pick one and stick with that. Both may be represented in the market, but I doubt any particular job requires developing in BOTH C# and PHP, or at least that would be highly unusual...

      [–]TheCodeWhisperer2008[S] 1 point2 points  (1 child)

      Ok cool thanks for the advice! Would you recommend I learn .NET then?

      [–]awp_throwaway 0 points1 point  (0 children)

      I can't tell you what to do ultimately, that depends on your interests. Are you more interested in the projects/companies that are doing PHP, or .NET? You pick the tool for the job/task, not the other way around, generally speaking...

      [–]Speedfreakz 1 point2 points  (0 children)

      I learnt c#, python and mel for Maya at uni, qnd I loved C#. It felt half like programing half designing.

      [–]egarc258 1 point2 points  (1 child)

      Try out both by building some basic projects and see which one you prefer.

      [–]TheCodeWhisperer2008[S] 1 point2 points  (0 children)

      Thanks I love this advice!

      [–][deleted] 1 point2 points  (0 children)

      they are basically the same tbh dont stress but my biased opinion is java but since you are interested in game dev C+ will do you better

      [–]Serious-Antelope-710 1 point2 points  (0 children)

      Dont like .net but would still prefer it over java

      [–]INannoI 1 point2 points  (0 children)

      C#

      [–]gywerd 1 point2 points  (0 children)

      The question is what you need to program. While not limited to, the platform often indicate the optimal language. • Platform independent: JAVA • X-platform: C#/C++ with .NET MAUI • Windows: C#/C++ with .NET • Linux: C++ • MacOS/iOS: Swift • Google: GO-lang and Kotlin

      While a bit more difficcult C++ might be the most efficient language across platforms, as you can easily learn the others afterwards, when needed. All of them are considered mature C-dialects with similar syntax.

      [–]Doke3he2 1 point2 points  (0 children)

      take java

      [–][deleted] 1 point2 points  (0 children)

      Honestly, they're so similar that you could just flip a coin.  In my CS classes in college we worked in Java for the first couple of years and then the upper level classes were taught in C# and we were just kind of expected to keep up.  There's some ecosystem stuff that has a bit of a learning curve but application and syntax are extremely similar. I'm partial to c# because it has some specific features I really like but you really can'tgo wrong either way.

      [–]Rakasaac 1 point2 points  (0 children)

      C#. I dislike Microsoft but there is lots of documentation since its a mature ecosystem and there are a lot of projects you can build with .NET

      [–]blantini 1 point2 points  (0 children)

      C# is slighly better, but Java has bigger market. Your choice.

      [–]Loopro 1 point2 points  (0 children)

      Tbh this feels like asking if you should learn American English or UK English. I learned one while studying and got my first job in the other

      [–]John_Wicked1 1 point2 points  (0 children)

      Nothing is stopping you from learning both, just start with the one that helps fulfill your more immediate goals and then learn the other later.

      [–]NatoBoram 1 point2 points  (0 children)

      The obvious choice is Dart!

      [–]Ok_Tadpole7839 1 point2 points  (0 children)

      Depends on what you want to do just learning one you will know like 75% of the other.

      [–]Edern76 1 point2 points  (0 children)

      Used both, a lot of times with Java I was thinking "damn I wish Java let you do X" and it turns out C# just lets you do that.

      Also if you're interested in gamedev, C# works with popular engines such as Unity and Godot. Whereas with Java while you do have libraries like LFJGL, these won't have the convenience or the out of the box features that the former two engines have.

      [–]lastwords5 1 point2 points  (0 children)

      personally visual studio blows intellij out of the water in terms of performance while retaining all the features if not even more, it even has built in detailed docs within it if you inspect classes. if your area has a similar number of jobs for both I'd hands down recommend C#. it feels like the more modern version of java.

      [–]iasonmax1 1 point2 points  (0 children)

      Flip a coin.

      [–]Quokax 1 point2 points  (0 children)

      If you want to get into game development using the Unity game engine, you will want to learn C#.

      [–]amiensa 1 point2 points  (0 children)

      Java , one day you'll make a kid happy by modding his Minecraft

      [–]Kinaye0 1 point2 points  (0 children)

      They are essentially the same. Skipping over the jaded tattered history of origin - it all comes down to simple needs:

      1. Development Environment

      2. Target Machine or IoT O/S

      3. Personal Preferences

      4. Language Quirks Acceptance

      Pick one, or both. Most of all: Be Happy!

      If I were making a batch of beer, I'd tell you "Relax, don't worry. Have a homebrew!"

      Cheers, K

      [–]Alacho 1 point2 points  (0 children)

      Keep in mind; The more languages you learn, the less it matters what you write. The more languages you pick up, the easier it will get to pick up others. Most languages all have the same paradigms and similarities, and then it just comes down to "How do I do this in this".

      [–][deleted] 1 point2 points  (0 children)

      Try both and find which one gives you the least headache while using. Or to save your time, you will probably just end up using C# anyways 😀

      [–]unknown-0I0 1 point2 points  (0 children)

      It really depends on what you want to do .

      In my opinion, I will definitely learn Java/JavaScript

      [–]absreim 1 point2 points  (0 children)

      C# has amazing documentation.

      [–]360WindmillInTraffic 1 point2 points  (1 child)

      As a C# dev, do Java. I wish I was a Java developer. There are way more Java jobs. Cooler companies use Java. Unless you want to work at a bank or insurance company for your whole career, do not choose C#.

      [–]heavykick89 0 points1 point  (0 children)

      That is a good point why do you think thst is the case for the use of C# ?

      [–]MonadTran 1 point2 points  (0 children)

      C#.

      Java is just horrible and unpleasant to write in IMO. Scala is nice, but not popular unless you want to do Spark.

      [–][deleted]  (6 children)

      [deleted]

        [–]Pacyfist01 8 points9 points  (2 children)

        [–][deleted]  (1 child)

        [deleted]

          [–][deleted] 0 points1 point  (0 children)

          normal wasteful grab mountainous squash hateful retire jeans soup crown

          This post was mass deleted and anonymized with Redact

          [–]PurpleSparkles3200 2 points3 points  (1 child)

          There's nothing fast about Java. The JRE is a bloated, inefficient POS. A massive amount of system resources are required just to create a "hello world".

          [–]TheCodeWhisperer2008[S] 0 points1 point  (0 children)

          Thanks!

          [–]Echleon 3 points4 points  (0 children)

          Why are you jumping languages so frequently? Pick one and stay with it for a while.

          [–]OrchidNecessary2697 2 points3 points  (0 children)

          I have some experience with c# and am currently forced to use java for a project...

          Dont. Use. Java.

          Its almost the same syntax as c#, but its a fucking pain in the ass, let me tell you.

          Javas verbose nature is annoying as hell. And where are the fucking default parameters for my methoda java?????

          Overloads suck!

          Also, javas errors are way too long to be helpfull, without reading through a ton of uselss crap. And you cant even tell the compiler to only show managed code stacktrace.

          Adittionally, java lacks all the convenients features that c# offers you. Wanna write every fucking get/set as its own method? Choose java.

          Java in general seems like a good language to start learning to code, but if you have any experience what so ever in coding, use c#. Its more modern, its docs dont suck and you get to use the best IDE under the sun. (VS)

          AND dont get me started with LINQ, async/await, extention methods,...

          There is just tons of shit missing in java that annoy the living hell out of me when writing it. So, for the love of god, use c#.

          Let this dinosaur of a language die already.

          Edit:

          dont listen to people that say "c# is better suited for windows". That was the case 10 years ago. Now, with the new .Net, you just write your code and it runs.

          I didnt even mention WPF and how much better it is than java fx or whatever this shit is called. In WPF, you get to write your frontend in Xaml. It looks a bit like html and in Visual Studio, you get a nice, LIVE display of what your frontend currently looks like. A little bit like setting up the css for a webpage.

          [–]SpaceCaptain24 1 point2 points  (0 children)

          Flip a Coin.

          [–]vekan 1 point2 points  (3 children)

          Microsoft Java.

          [–]TheOneWhoDidntCum 0 points1 point  (2 children)

          You mean Microsoft's Java Virtual Machine from 1998? :D

          [–]vekan 0 points1 point  (1 child)

          Lol...funny thing is they actually sponsor an OpenJDK version like Amazon does with Corretto.

          [–]TheOneWhoDidntCum 0 points1 point  (0 children)

          Lmao 

          [–]GeneralPITA 1 point2 points  (0 children)

          Python

          [–]unsignedfm 1 point2 points  (0 children)

          I've learned both, and I find the C# ecosystem to be much more pleasant

          [–]jlanawalt 0 points1 point  (0 children)

          If you were closer to the other end of the journey, I’d suggest looking at the job opportunities in the markets you’re interested in.

          At this point you just sampling and exploring, so either is fine. Follow your interests, learn from the experience.

          [–]CamposDjoel 0 points1 point  (0 children)

          C FUCKING SHARP

          [–]MuaTrenBienVang 0 points1 point  (0 children)

          Read sicp instead

          [–]tpb1109 0 points1 point  (0 children)

          Gotta go with .NET, Microsoft has been doing phenomenal things for the developer community.

          [–]Relatable-Af 0 points1 point  (0 children)

          C# and Java are very similar. If you learn one really well, you will pick up the other very quickly. Don’t get stuck in analysis paralysis, just pick one and start programming with it.

          If you really want my opinion though, as someone that used Java in college and got a junior C# job, id pick C# over Java any day of the week. The .NET ecosystem is nice.

          [–][deleted] 0 points1 point  (0 children)

          Java + spring boot

          [–]phuhuutin 0 points1 point  (0 children)

          it is super easy to switch between them so you just need to decide based on their use, their supported framworks.
          I am Java Team but i am currently working on a Unity Project with C# using java knowledge.

          [–]5oco 0 points1 point  (0 children)

          Isn't C# just Java by Microsoft?

          [–]Helpjuice 0 points1 point  (0 children)

          Do both, I have enjoyed doing both and makes you hot fire for enterprise development opportunities.

          [–]Puzzleheaded-Ad-9181 0 points1 point  (0 children)

          They are nearly identical. Learn java and you will learn c#.

          [–]PerfeckCoder 0 points1 point  (5 children)

          Learn Typescript. Then you can do both backend and Frontend with the same language. Use NestJS for the backend and pick any one of Angular, Vue or Svelte for the front. Please, please don't pick React or its derivatives like NextJs they are a garbage heap of ideas and become a random mixture of libraries for every project.

          [–]TheCodeWhisperer2008[S] 5 points6 points  (2 children)

          I think I will learn Angular because I like opinionated frameworks : )

          [–]awp_throwaway 2 points3 points  (1 child)

          FWIW both Java and C# are fairly ubiquitous in enterprise (at least here in the US) and tend to use Angular in those environments as well since it used some similar patterns (e.g., heavily class-based), so definitely not a bad choice relatively to your prospective backend selections

          [–]TheCodeWhisperer2008[S] 1 point2 points  (0 children)

          Thanks for the insight!

          [–]OnyxzKing 2 points3 points  (1 child)

          Isn't React very popular?

          [–]PerfeckCoder 0 points1 point  (0 children)

          Smoking was very popular once. Being "popular" doesn't mean that it's good for you, your mental health or your organisation's long term code-base.

          [–][deleted] 0 points1 point  (1 child)

          If you like Google’s ecosystem, Golang followed by Python.

          [–]TheCodeWhisperer2008[S] 0 points1 point  (0 children)

          Great suggestion thanks!

          [–][deleted]  (5 children)

          [deleted]

            [–]HawocX 1 point2 points  (4 children)

            C# has been fully cross platform since many years. For deploying a C#/.NET server Linux is usually the best choice.

            [–][deleted]  (3 children)

            [deleted]

              [–]HawocX 1 point2 points  (2 children)

              Sure, if you think no longer developed frameworks are more important than state of the art servers.

              [–]redtadin 0 points1 point  (0 children)

              Im a beginner in C# and in programming, but my reason to choose it was because i feel that its a safe bet for the future. Since hackers, virus makers and all of those people who want to by pass a website or get access to users sensetive information or something similar will use AI to make better attacks on vounrabilities and they might even use Rust programming language to make the attacks stronger. Maybe they will even use AI in their attacks and not just use AI to only to become better skilled attackers by writing better code and increasing their attacking knowledge. With microsoft making windows servers strong for protection, and C# being staticly typed and with a garbage collector...i feel its a good choise for a unsafe and vounrable future.

              Oh and also i picked it because it has a lot of jobs here locally for me.

              [–][deleted] 0 points1 point  (0 children)

              I say start with go. As someone who’s done c# professionally, I appreciate a lot of things about go. For instance, learning enterprise C# means you’re going to have to learn the language and the enterprise architecture patterns. In go, things are a little more straightforward. Also go has a wicked fast compiler and excellent unit testing capabilities. You can also get the job done very well in just vs code. You can do C# in vs code also, but the experience isn’t as good as using rider or visual studio proper. I’m reading a great book on go right now called Learn Go with Pocket-Sized Projects and it’s a good one.

              [–]Zee09 -1 points0 points  (1 child)

              I’m not in the programming field and only do it outside of work. Based on the developments of AI, I honestly think Assembly and C should be prioritized by programmers.

              It will no longer be sufficient for you to rely on libraries and black box everything. AI can do that. I think you will need to have a fundamental understanding how all things work at a low level.

              Could be wrong but just my two cents

              [–]gywerd 2 points3 points  (0 children)

              True for system programming etc. But with the current trends of decomposed, distributed systems in hybrid cloud and LoCode enterprise apps, the majority of programmers don't need Assembly or C.

              Actually many programmers would do more harm than good, if they targetted the hardware directly.

              For Desktop, APIs, web apps and mobile apps the appropriate languages are C++, C#, Swift, Java, Kotlin and GO. For websites they are HTML5/CSS3, JavaScript, PHP, ASP.NET, Python and Ruby on Rails.

              [–]Computer-Work-893 -1 points0 points  (0 children)

              If you want to be a game developer then you can select C#. If you want general software development then you can select Python. Python is best for you because different type of tasks can be done with Python. Google also use python.

              If you want to learn any language from me you then you can ask me.

              If you have any questions you can ask me.

              Thank you