views:

523

answers:

13

I'm about to start work for a large tech consultancy (first job out of university) and I'm being offered a one month intensive training course in either Java EE or C#.NET.

I have no idea which one I should go with; this could potentially shape my career. I like both languages and have similar experience with each. Although, I hate ASP.NET WebForms. I much prefer ASP.NET MVC, which is something that won't be adopted by big companies for a while. This makes .NET look less appealing to me, whereas Java EE has many MVC frameworks which are pretty much standard in industry.

Also .NET seems to have a better 'standard route': You know where you stand and it's usually in Visual Studio, Windows Server, and MS SQL. Whereas with Java you could use one of many frameworks on one of many servers in one of many IDEs.

Any tips on making the decision?

+5  A: 

They're not mutually exclusive.

I'm a huge fan of Visual Studio, so I'd chose C# .NET. But learn both, you'll double your chances of gainful employment. Learning either one teaches you things about the other.

Matthew Sposato
+2  A: 

Don't limit yourself to one or the other. When you're learning, learn the theory behind the practice. When you do things that way, it doesn't matter what platform you're working on, you'll understand what to do.

I've worked on Java applications, .NET applications, Ruby on Rails applications, and PHP applications...all with little transition time because I try to focus on theory rather than how it's implemented in one language or another.

Justin Niessner
+3  A: 

Both.

The No.1 guru on StackOverflow (Jon Skeet) is both .Net and Java Guru.

J.W.
A: 

I like Java/J2EE for its strong cross platform support and deployment options in general. Dotnet is awesome, and C# is a great language, but you are married to Microsoft.

Joel Hooks
Generally true, but you can always use C# with Mono on Linux and MacOS.
Chris Pietschmann
+1  A: 

I think that MVC really is the future of .NET in the web world. So, I would recommend taking the Java course and focusing not so much on the particular language idioms, but pay attention to how to architect the solution. These things will be translatable to the .NET world. Getting training on WebForms will, over time, seem like more and more of a waste of time. MVC is new enough that I don't think you'll get much of it in any .NET course.

Having said all that, I'd also recommend seeing if you can delay making the decision and taking the course until you've been on the job for awhile. You're going to have a fairly large learning curve anyway and by delaying the course, you'll have a much better idea of what you need to focus on. Whenever I've learned a new technology though a course, I've found that I really didn't get much out of the class until after I'd had a chance to play with the technology awhile -- to run into some real problems. In my opinion, in 3-6 months, you'll be in a much better position to get more out of the class.

FWIW -- I learned programming in Pascal/C and OO programming in Java. Now I mostly program in C#/.NET so starting off with Java won't lock you in to a particular technology. There are enough similarities that you'll be able to transition pretty easily once you have sufficient experience.

tvanfosson
A: 

A one month course is hardly going to give you enough training to shape your career. If you take a course in one language, much of what you learn will be applicable towards learning the other. Will you have different options with your company depending on which course you take? Those should be a consideration as well.

dsteele
+1  A: 

They are both importat and useful, so pick which ever one suits your current interests. Believe me, if you continue in programming you will be learning lots of new languages and frameworks over the course of your career.

When I started as a programmer we used punch cards and none of the tools and languages I use today had even been invented.

JonnyBoats
The way I see it, you need to factor in Job Security too, not just Interest. It doesn't matter how interested you are in a specific language/platform if you can't find a job to pay the bills. Although, don't get me wrong, Interest is Majorly Important!
Chris Pietschmann
A: 

I would look at two factors: 1) how many jobs are there with one or the other?, and 2) which do I find more interesting?

There are pretty much the two most important questions. First, Job Security, and Second, Level of Interest in what you'll be doing.

And, once you've been using the one you picked (based on these questions and any others that are relevant) for a few months, then go and spend some time learning the other. In the end, you'll only benefit from learning about multiple different languages/platforms.

You can always switch which technologies you primarily use on the job, you just need to learn them first. Plus, you WILL switch languages/platforms/technologies at some point in your career, most likely multiple times.

Chris Pietschmann
A: 

I depends on the dept of the course you're going to take and your relative knowledge in both right now. I'd say that if this is an advanced course, take the one you're most comfortable with and perfect your know-how in it. Then the other one will be a breeze to pick-up if you ever have to.

On a sidenote, Eclipse IDE is awesome. It has everything you could wish for ( ok ok, overstated, but it has a lot of stuff ), like refactoring, intelligent automatic error correction. You feel it understands what you're doing much much more than Visual Studio. For example, when you're using a variable you havent declared yet, the ide offers you multiple choices, like, auto declare the variable with the proper type as a local variale, class field, parameter or remove it altogether. You also get syntax checking WHILE YOU TYPE.

Honestly, I work a lot with C++ .NET and Eclipse is the only thing that really makes me regret Java.

Eric
A: 

If you base your learning on Object oriented programming and methodologies, you will not have any problem switching between Java and C#.

Myself, I have started my career with Java and ended up in C#. Having worked in both, I find C# and .Net world to be less complex in terms of the tooling and the processes. One thing my friends noticed is that I definitely have more personal time ever since moving to Microsoft world. This can be subjective to different people.

The best advice I can give you is pick the tools and build some basic programs in both Java and C#, then give a rating or score to each of these factors:

tooling
documentation available
ease of finding something using community boards
debugging ability
productivity
ease of extending various design patterns

Of course, my list is totally incomplete. Different things turn people differently. You should add the things that matter to you the most and then decide for yourself rather than basing it on mine or other's thoughts.

good luck and keep us posted.

CodeToGlory
A: 

.NET pays better, if Dice is any indication. I guess they both have a reputation for bugs, but I went with .NET for teh moneys.

tsilb
+1  A: 

"Yes, there are two paths you can go by. But in the long run there's still time to change the road you're on."

-Jimmy Page and Robert Plant

Flip a coin. If you don't like the choice, learn from it and move on.

dr
A: 

this question is unanswerable - some people prefer .NET, some prefer Java, there are many arguments for choosing either of them and none is decisive (is it the right word?). my advice: go to any job-finding-website and check who is paid more - .NET or Java programmer ;) this would at least be a good reason to choose. or, like others say, learn both and then choose which one is better for you.

agnieszka