views:

562

answers:

9

I recently got a junior developer job and am still an undergrad in college. I am new to Java and have some experience with C/C++. I started learning Java on the job and was able to accomplish much quickly in 2 months. Now my company has me working on C#/.NET apps...

Questions:

  1. Should I be specializing in Java since there are more job listings?

  2. Is it a good idea to learn both and jump around so quickly?

  3. How realistic is it to be an expert at both and tailor my resume according to C# or Java jobs?

Either way I am having fun and have no problem teaching myself. Any thoughts/opinions appreciated. Thanks.

+2  A: 

Be a Generalist, use both, be happy.

Jamal Hansen
+3  A: 

It is always a good idea to know a bit of everything.

You may specialize in Java, but you should always have an accurate resume.

If you know BOTH Java and C# well, mention BOTH at your resume. Even if it is a Java-only job, knowing C# doesn't hurt. In fact, it can help.

luiscubal
+1  A: 

C# and Java have a lot of similarities. I would say the only major difference is the fact that Java (out of the box) is multi-platform. I would say it's advantageous to learn both in a more abstract sense. Where as Java is the language and the platform (framework), C# is a language on top of the .NET framework.

So basically, once you learn one you learn both. Of course this excludes specific framework features and language features but they both stem from the same place.

Chad Moran
There are very significant differences between Java 6 and C# 3.0. They were very similar back at Java 1.4 and C# 1.0, but they've diverged a lot since then.
Jon Skeet
With mono, CF, Silverlight, etc - .NET has a *fair* coverage. Not as large as java, I'll grant.
Marc Gravell
+25  A: 

It's feasible to be reasonably close to an expert at both Java and C# as languages - but there's no way you'll become (or stay) an expert at all the APIs in both Java and .NET. In fact, I'd argue it's pretty much impossible to have in-depth knowledge of even just the .NET APIs these days - even only the Microsoft ones. With WinForms, WPF, WCF, LINQ, ASP.NET, MVC, Entity Framework etc there's a lot to keep up with. I tend to try to learn a language thoroughly but then rely on "just-in-time" learning for frameworks. (Well, I wait until I'm going to need to know a framework, then try to learn it properly - I don't like throwing myself at something blindly and then only learning anything about it when I run into trouble.)

If you have to choose between C# and Java, I suspect that if you're good you'll have no trouble getting a job in either. Personally I think C# is a much more interesting language, and the .NET platform seems to have more momentum in terms of doing interesting things - but Java has an awfully big developer (and employer) base, so I doubt that it's going to disappear or anything like that :)

Jon Skeet
Original poster: did you at one point accept this answer and then unaccept it? I'm trying to work out what looks like a bug in the reputation system - this answer has given me a net of -15 rep for today, strangely enough.
Jon Skeet
+3  A: 

Focus on data structures and design patterns. You cannot be an expert on both Java and .NET but if you understand the basics you will learn quickly any language in the world.

Darin Dimitrov
+2  A: 

Well, it probably wouldn't hurt to be passingly familiar with both; both have large library/frameworks, however, which is the real challenge. C# seems to be progressing more as a language currently (especially with delegates, lambdas, linq, etc), but that doesn't detract from java at all.

Re jobs; that is a tricky one... in reality, most development skills are fairly transferable between such similar architectures, so I wouldn't worry that learning one cuts me off from the other; any employer worth their salt is mainly interested in bigger skills, like "architecture", "communication", and a willingness/eagerness to learn.

Marc Gravell
A: 

.NET and Java have a great deal in common. One feature that both share is size - it's impossible to know everything about either one, let alone both.

I think it's desirable to know something about both. In this day and age of tight employment, it doubles your chances of impressing an employer if you can demonstration some proficiency with either one.

duffymo
A: 

I think it's impossible to be proficient at both, so personally I had to make a choice a few years ago. What did it for me was the superiority of the user interfaces. I wanted to have the UI of the apps I design to actually look good, as well as run fast, of course. And, honestly, I couldn't possibly enjoy the multi-platformness of Java because most of the time I run one operating system, not several.

Then again, Java is fairly settled-in, and lots of people invested so much time and effort in it, that it's not really going to go away. But is it as dynamic and interesting (e.g., in terms of new language features)? Well, it's up to you to decide. :) Good luck!

Dmitri Nesteruk
+1  A: 

Specialise in one, and learn the other as a secondary skill. This is what I am doing. C# (well .NET) is my main area of expertise and I want Java to be a secondary skill and secondary profession (e.g. java coder) but I want to be good enough at Java to be able to get a job in it. There are a lot of Java vacancies which is what I find attractive.

dotnetdev