Changing language

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?

Add a comment
Microsoft Leetcode🏅 Nov 6, 2017

If you struggle changing languages, you're not doing something right

Nintendo . 🐈. OP Nov 6, 2017

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.

Microsoft TheCurate Nov 6, 2017

I have a lot of Java experience and picked up C# fairly recently. It’s not that hard. Jon Skeet’s book is good.

Microsoft yMcg47 Nov 6, 2017

Good teams shouldn’t care. If they do, you don’t want to join

Carvana cFaS24 Nov 6, 2017

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#.

Microsoft Phoenix1 Nov 6, 2017

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...

Microsoft NeilGamby Nov 6, 2017

Right but who is going to give you that chance?

Microsoft kappan Nov 7, 2017

In my experience, the expected productivity is proportionately lower for c++. Ymmv.

Google ae521 Nov 6, 2017

Switching languages isn't a big deal. You can learn as you go and still be productive.

Microsoft Ayrr11 Nov 6, 2017

What everyone else said. Don’t look too much into the language. That’s not what makes you senior

Microsoft WbPl02 Nov 6, 2017

From my mentor "senior engineers write code that junior engineers can maintain. Junior engineers write code that only seniors can maintain"

Qualtrics Q123 Nov 6, 2017

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.

Starbucksï»ż HAqV85 Nov 7, 2017

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.

Google ae521 Nov 7, 2017

+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.

Carvana cFaS24 Nov 8, 2017

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.