views:

552

answers:

11

I've been developing Windows Forms/Windows services/webservices for most of my career using VB (before .NET), then strictly C# since it was released. Now, I've recently lost my job and starting to think I may not be able to get a job in my town - Las Vegas. I'd like to be able to apply for some of the Java jobs to increase my chance of getting employed (plus, I wouldn't mind the change).

I've started playing with Java and as I've heard many times, it is very similar to C#. However, the language is just a small part of the whole equation. There is learning all of the little tricks, oddities, and gotchas that can really impact development time. So, with that, how realistic is it to think that I might be able to learn Java and jump into a mid-senior level Java position in just a few months if I work hard enough at it? Especially when most of those positions say "3-5 yrs of Java experience"

All feedback is appreciated, especially from those who have done what I just said, either C# -> Java or vice-versa.

+12  A: 

The language is truly just a small part of the equation.

When they ask for "3-5 years of Java experience," they are talking about the platform, not the language, and depending on the job, it may be a particular segment of the platform even, not the whole platform.

Let's put it this way. You have been doing WinForms work. Imagine if someone asked you to work on a WPF project. That WinForms experience would be tangentially helpful, but you would find yourself having quite a bit to learn still.

Joe Chung
+1 Nice analogy
William Brendel
Great point. Thanks.
Dabas
+4  A: 

I don't want to discourage you, but depending on the HR, switching field can be a bit difficult.

Believing that the past is a good predictor of the future, the HR people will try to scan your resume to see whether you have the correct experience or not. In other words, if on your resume you don't have the correct keywords, the HR people will simply just ignore you. You are automatically excluded regardless of how brilliant you are or how fast you can pick up new technologies. That's the worst kind of treatment can ever be bestowed upon, even worse than turning you down because when people turn you down, at least they gave you some consideration in the first place.

Ngu Soon Hui
Take this one step further...say you lie on your resume and change out all your c# experience for java experience. Then you land on the job cause you managed to BS your way through the interview...then they find out you lied! Not a good idea. Stick with C#. It pays better anyways!
Andrew Siemer
Sadly, that snippet is so true. I've found great resumes that my HR didn't pass to me for consideration because it was missing "XML" or "ADO.Net" Very unfair.
Dabas
@Andrew - Yeah, I agree. While I would fudge something small that I feel I could pickup with a few weeks of hard studying, I don't think I'd ever go as far trading out my c# with java. I couldn't take the embarrassment of getting torn up at a tech interview :(
Dabas
This has been discussed about recruiters as well. HR just needs an overhaul if the company does not want to let talent go.
whatnick
+6  A: 

My honest best assessment is that it depends on what end of the following spectrum you fall in:

  • Extreme A - Microsoft purist who has done everything by the Microsoft book and has a vast amount of experience with Windows Forms, Web Forms, WCF, etc.

  • Extreme B - Well rounded Microsoft technologist (the term Alt.Net'ers comes to mind). Familiar with tools ported from the Java world (NAnt, NUnit, NHibernate, Spring.NET, etc) and open to techniques such as DI/IoC, AOP, and ORM that haven't been part of the "traditional Microsoft curriculum".

If you tend closer towards extreme B, you're skills are much more likely to transfer well into the Java world. If you tend towards extreme A, you've got a lot of hard work ahead. Somewhere in between == somewhere in between.

Thomas Beck
Ngu's answer is good and very realistic as well. It's going to be hard selling yourself as a Java guy if you're a C# guy. Exception being, if you're a true Extreme B type of guy, I'd pick you up anyway since you likely have some of the other intangibles that I'd want for a team member.
Thomas Beck
Unfortunately, I fall into "Extreme A." Of the tools ported from Java, NUnit is about the only one I've used.
Dabas
A: 

Your best hope would be to find a place where they will be willing to overlook your lack of Java skills due to your otherwise outstanding programming skills.

If you try to BS your way through an interview, and do land a java job, it will most likely be in a really crappy place where there's no one good enough to see through the BS.

As everyone else said, the language is a small part of the ecosystem. As a Java developer, you're not only expected to know the core libraries (which will be quite different from .NET), but also where to get and how to use thirdparty libraries that don't come with the SDK. As a Java developer, you'll be doing that a lot, which is a very different mindset than the one prevalent in the .net world (where it's either part of the toolkit or you most likely have to implement it yourself.)

ykaganovich
+2  A: 

There are some language/framework environments where solid code design and good programming ability are far more important than specific experience (Python/Django and JavaScript come to mind); and there are others where no matter how smart you are, without deep and long experience with the libraries you're just lost. J2EE is the epitome of the last.

If I had a position for a generic Java developer, I might consider someone with mostly .NET experience, as long as he has done some Java. If I wanted a J2EE developer, I definitely wouldn't give a second look to anyone without a year of real J2EE work, at least.

Javier
+1, J2EE is overwhelming at the beginning, i remember that i had to chew through plenty of concepts just to create a simple proof-of-concept app.
Justanotheraspiringdev
+1  A: 

I am afraid your chances are not very high. Your best bet would probably be to apply for a beginner level Java position to gain some experience. With over 1 year Java experience plus your .NET knowledge your chances will be considerably better.

Ralph
With Java's fresh graduate salary?
Ngu Soon Hui
A: 

Jumping to a mid-senior level "usually" require J2EE on your resume, it's just the truth. Mastering the language to the point where you'll be qualified and seen as a mid-senior Java developer will take years, even if you don't sleep at night.

There are too many Java libraries and frameworks that senior developers are expected to have expertise in.

However, if you happen to meet an intelligent person, which I seriously doubt, especially during this recession, he'll understand that . NET to Java is not that a huge risk depending on what the company uses(frameworks, libraries, tools, etc.).

The first time I wrote some C# code was when . NET framework was new, that year I spent lots of time preparing an essay on it at University. I didn't use .NET that often professionally. I think that if I wanted to switch from Java to .NET, people would probably offer me a Junior to mid level position. That alone is enough for me not to switch(huge salary cut, job title, etc.).

If I were you, I'd keep trying to find a job or move to another city if you can. This is not a trivial career change especially when you have 5-10+ years of experience.

Whatever you decide, good luck.

John Doe
A: 

It doesn't seem realistic to land a mid-senior Java position. Jr. level is more possible.

Side notes: I've been a developer using Microsoft Visual Studio for a very long time. First VB, then VB.NET and into C#. Before my transition to C# I decided to accept a job using a non-MS language. Didn't work for me, guess I've been assimilated. Maybe you'll find a great career path in Java. Are you looking at the Java route because you really want the change or you really want a job? I lost my job early this year and got another position a few months by leveraging my US citizen status and searching USAJobs.gov. Maybe you could land something at Area 51 ... oh that really doesn't exist, or does it? ;)

Best success in whatever path you choose!

CodeHawk
+1  A: 

However, the language is just a small part of the whole equation.

You're correct. You're best bet would be to apply for a software "designer"-type role armed with your .NET experience and an SCJP certificate to prove your understanding of the Java language.

The force of your argument should be in the direction of your skill in designing (experience, pattern application, integration etc) to convince the prospective employer. Uphill, but doable.

Ryan Fernandes
A: 

As others have mentioned, you'll pick up the language in no time - it is almost a subset of C#.

However, what I suspect will take time to pick up is the technology that inevitably comes with a Java project. The Java eco system is extensive. Here are a few examples of what you'll need to know to be considered for a senior level java developer role:

  • Java the platform (as opposed to Java the language) - There is a heap of technology provided in the JDK that you will need to understand. The Java VM is much more tunable than the CLR for example. Just knowing the Java Language Spec is not enough.
  • Third party libraries - there are some that are so popular they are defacto standards. Spring, log4j, Apache's offerings, etc.
  • Maven - unless you've tried the .net port, this will be quite new to you
  • ORMs - have been quite popular in Java for a while. Hibernate is the most well known, but there are all sorts of ways of "helping" you avoid SQL. JDO, JPA, EJB 3, etc
  • *nix OS - Windows is not a popular OS for Java server applications so you are going to be expected to have a working knowledge of *nix OS's.
  • Java servers / containers - there are loads of web servers, JSP containers, EJB servers, IOC containers, Java databases, etc to contend with.
  • IDEs are pretty simillar - the transition from a Resharper-equipped Visual Studio to IntelliJ is particularly straightforward. However you will probably spend a while fiddling with plugins and learning keyboard mappings.

None of these items is particularly difficult, but learning enough to be productive adds up to a fair chunk of time.

serg10
Thanks for taking the time to list those. Yes, this is what I was worried about. There are easily this many external factors when it comes to windows/.net programming, I knew there had to be just as many for the flip side of the coin.
Dabas
+8  A: 

There's a big difference between "mid-senior Java position" and "mid-senior position in a Java shop".

Don't let the fact that a job specifies Java keep you from applying. And don't listen to the folks telling you that you have to start at the bottom again and work your way up, either. But be honest on your resume and honest in your interviews.

Most senior (10+ years of experience) Java people -- which is to say, people like your managers-to-be -- started out doing C or C++, or spent a few years toiling in the Perl mines. They've seen frameworks come and go -- J2EE to Hibernate, JSP to Struts to JSF to Wicket or whatever. They're used to the idea that developers use a lot of different technologies in the course of a career.

If they bring you in, knowing that you don't have any Java experience, Java experience won't be what they're looking for. They'll be looking to find out whether you're smart, whether you pick things up quickly, whether you have good design instincts, work and coding habits -- as Joel Spolsky says, whether you're Smart and Get Things Done.

A Java shop that's looking for someone with specific platform skills and experience -- JavaEE, Spring, whatever -- probably has a round hole that needs a round peg, and won't take you. A Java shop that's just looking for a good developer might.

And the second shop is the one you want to be working for, anyway.

As to whether you can do the job once you've got it -- I don't see why not. :)

David Moles
Well worded and somewhat encouraging. Hopefully I can find a shop in town that is more like the latter in your scenario.
Dabas
The kind of reasonable and understanding shops described here are very, very few... :(
Ngu Soon Hui