Have you ever learned two new technologies at the same time? I'm learning Java at work and ASP.NET MVC at home. Are there any pitfalls to learning two technologies at the same time? What about some benefits? Do you find yourself fighting burnout?
Yes, there are a lot of pitfalls even more so when you are learning two languages that at so joined at the hips as Java and C#. And in my experience you will end up kicking yourself all the time for trying to do things in Java that can only be done in C#.
The differences between Java and .NET code (specifically C#) are minimal. It's mainly small syntax areas that are different between the two. Both languages are derivatives C. You may find that learning two different IDE's (integrated development environments) like Visual Studio and Eclipse is more of a challenge. There are benefits to knowing both because it makes you a more flexible employee. Good luck!
One thing I think is good to do is learn a given methodology, but try to master it in multiple languages. By seeing the methodology implementations between different languages, you can really gain a lot of perspective. For example, you mentioned you're learning ASP.NET MVC. A good thing to learn on the JAVA side would be struts2. Then you would be that much more knowledgeable with MVC, and you would be able to apply it much better.
The primary pitfall is that you might come home to ASP.NET MVC and accidentally call her Java. Then you will have a lot of explaining to do. Be prepared to sleep on the couch or at a motel.
I learned Java and C# at the same time. The main problem, for me, was remembering which API was for which language. Even to this day, I will accidentally use ArrayList<>
when I mean to use List<>
.
If I could do it over again, I would learn them separately, and make a (mental) list of the differences as they came along.
[Edit] Also, there are a few syntactical annoyances: things like, Java uses a extends b
and for(a:b)
while C# uses a:b
and foreach(a in b)
. Those aren't nearly as bad, though, when using a decent IDE that will tell you immediately when something is wrong, like Eclipse or Visual Studio.
Are you an experienced programmer? After about 3 years of professional experience, I now find learning new languages to be a piece of cake. By that time many of the concepts that the language deals with, you will understand because they will be similar concepts to some other language you know. So you are left mainly with learning syntax. It would be like learning to talk like yoda. Meaning of the sentence, generally the same it is. Different structure, only there is.
For example, C# and Java are so similar, you are left with only having to learn what distinguishes them, but that is important pitfall to watch for. There are Java vs C# comparison articles that show exactly what is different in the languages. You should review these so that you know what to watch out for.
My suggestion: Don't. Learn the main things that disguish the two after you've learned both of them to a point where you are happy. The human mind does not multitask very well. If you attempt to learn two different langauges at once you will spend quite an amount of time trying to correct conflicts and it will imped your learning.
First off couple of questions:
Are you talking about C# ASP.NET MVC?
Do you already know C# language or are you learning that as well? (MVC is just framework)
What IDE are you using for java?
Are you using a MVC framework for java?
Do you know any languages already? Knowing a language made it much easier to learn another for me. There are obvious concepts that are throughout all the languages.
Without knowing those thing java and c# are similar and that is to your advantage (IMO). You might get confused on some of the differences in the core libraries at times. There is a wikipedia article on the differences. You might want to make yourself a cheat sheet if you find yourself stumbling over certain areas constantly. Burnout happens... Even when your not trying to learn 2 languages at once. There are several good ideas for burnout already in stackoverflow and other places so I won't list them. Good luck!
Unless you have a specific goal in mind, I´d suggest that you take it easy with C# ASP.NET or postpone it until you are comfortable enough with Java. The languages are close enough that the concepts will mix and sometimes confuse.
If anything, learn Java at home too. But stop on the first signs of burnout :)
Yes, when I first started working and had IIS 3.0, MS-SQL Server 6.5, Visual SourceSafe 6.0 and Visual Studio 6.0 to learn all simultaneously. They fit together quite nicely as each had its role to play but this isn't the same as your situation.
In your case, there are likely some similarities between Java and ASP.Net MVC that I'd notice and would suggest keeping a spreadsheet of where things are slightly different, e.g. JUnit vs. nUnit or how to build each code base and IDE differences. I'd think some of the similarlities may trip you up from time to time but it may help to set aside time for each and recognize how to shift from one to the other.
I'd think some burnout is quite possible though a key may be to get just enough done to start to have some results and then build on that. Get something done and then do something else. Repeat as often as possible, that's my suggestion.