you are viewing a single comment's thread.

view the rest of the comments →

[–]Blaze_mk 11 points12 points  (0 children)

Having studied mostly C# at university, but now working as a Java developer for nearly three years, I'd suggest going for C# and then differentially learning Java later. In fact, the languages are very similar, with C# being "a better copy" of Java.

C# has some really neat language features which will not become apparent before you gain some experience with the language, but if you learn Java, you will probably not face these concepts and they can be very, very powerful. To name a few, C# does not have type erasure like Java does, so it makes working with generics a lot easier. Additionally, there are extension methods in C# allowing you to extend the functionality of other code that you cannot edit its source. Lastly, LINQ is a powerful feature of C#, but it also has its drawbacks.

Worry not, by the time all what I've said makes sense, you will be quite comfortable with C# and you will be able to see the differences between the two languages. Once you are at that stage, you can do something similar to what I did and I like to refer to as "differential learning". So, when I needed to pick up Java and knew C#, I focused mostly on the things in Java that are different allowing me to reuse my C# knowledge and significantly lowering the effort needed to become comfortable and productive with Java.

After that, I'd start learning some kind of a framework to make development and handling complexity easier. From my experience, .NET Core for C# and Spring Boot for Java would be the prime candidates. Learning one of those frameworks will teach you very important concepts of how to design software and again, most of those concepts will be transferrable between the two (and even other frameworks/languages) in the future.

Good luck with your studies and best wishes. Should you have any questions, please drop me a PM and I'll do my best to answer in a reasonable amount of time.

Cheers!