I am a java sr dev by trade, however there are a couple of groups at Microsoft that I want to apply into that are looking for c# or c++ devs. Now I can brush up on my different c's (luckily c# is very similar to Java, and really c++ only has triple the rules, but idioms of the languages can be quite different) but I assume don't apply for a senior position and be ready to take a hit to pay. Really though this question steps past Microsoft and to anyone out there. What struggles have you found changing languages?
I have a lot of Java experience and picked up C# fairly recently. Itâs not that hard. Jon Skeetâs book is good.
Good teams shouldnât care. If they do, you donât want to join
Java and C# are very similar. Youâll just end up hating Java after switching because of how nice it is to write code in C#.
Yes Java and C# are easier to switch. But c++ don't even think that u can start as a senior in C++. The language is pure evil and will make u do all the labor. It will take a year to perform at the same level of productivity and only if u r patient enough...
Switching languages isn't a big deal. You can learn as you go and still be productive.
What everyone else said. Donât look too much into the language. Thatâs not what makes you senior
From my mentor "senior engineers write code that junior engineers can maintain. Junior engineers write code that only seniors can maintain"
It highly depends on the number of languages you already know and their concept diversity. Learning the 2nd vs learning the 5th can be considerably different as the more you know, the more "deja-vu"s you get. e.g. C# is pretty close to Java. JavaScript would not be that close and things like closures and prototype inheritance would seem confusing at first. C++(I assume you refer to native) would require you to handle things like memory deallocations, learn that templates are evaluated at compile time, inline functions, virtual functions etc. Even though this will require you to learn on the side, that would be just part of ramping up for the job and even expected in most cases.
You shouldn't have any problem picking up C#. It's Java with different terms (I'm over simplifying but you'll see what I mean a few hours in) The biggest learning curve would be some of the dependency Management and iDE workflows. I can't speak to those in depth because it's been a few years since I worked with visual studio and I know they made a lot of changes since then. The only time I've really had a hard time picking up a language is when it's a completely different syntax or backed by a unique methodology. Something like objective-c . Even then it wasn't tooo bad since the core principles tend to stay the same. It mainly becomes a lot of internet searches that basically amount to "I know how to do X in Java, how is that done in (language)". Oh and the most important thing probably is to research the key differences of a language/platform. For example, Going back to objective-c it's collections and memory management methodology is different than Java and early on I found myself making naive mistakes.
+1 I started with JavaScript when I was 12 and everything has felt similar since... Until I got to scheme/LISP varients. I still haven't gotten comfortable with those.
With Microsoft moving towards Git itâs made working with Visual Studio much much easier. No more figuring out one off TFS branching strategies or workflows.
If you struggle changing languages, you're not doing something right
Nah, it's more of a question of "what struggles would I have with getting a new job with a different language than what my resume dictates". However, that said, spotting a race condition by understanding that Java servlets are singletons and not instanced objects is a common mistake new devs to Java make. It's these finer details about special language rules and assumptions that could fill books and are usually picked up by another dev telling you that is bad and this is why.