views:

523

answers:

11

Hello, I am a 4th year computer science student, at university alot of my projects were Java based so I am pretty used to the language, platform and apis. However for a long time, I have been reading alot regarding the .net platform improvements and it's large career opportunities (at least in my country). Now I am considering shifting to the microsoft world. I have several questions:

  • Would it be severe to shift to .NET platform, as when I start my career I will be lacking the "4 years of java experiance" to a "1 year of c#/.net experience"?

  • How harsh transaction from java world to .net world would be ?

  • It feels like the future of Sun (and Java as a result) seems a bit blurry, can it be an issue on the long run ?

EDIT: Sorry for the edit, I want to add that I am more into the telecommunication field (even tho I have no internship/job experience in this field yet). Plus indeed java is not my only language. I am really used to Python, LISP, Javascript,Php and some other markup languages.

Thanks

+6  A: 

Personally I don't think Java is going away anytime soon, so IMHO Java is just as good a career move as .NET if not better. In any case, I would say that both options will give you plenty of job opportunities.

The languages are pretty similar so you'll most likely find the transition easy, but obviously you need to familiarize yourself with various libraries and frameworks as well (depending on what type of applications you'll focus on).

A lot of what you know from the Java world is really OO, patterns and so forth and that will apply equally well in the .NET world.

Brian Rasmussen
The languages were rather more similar at Java 1.4 and C# 1.0. When you compare Java 6 and C# 3 (or Java 7 and C# 4) they start looking very different - particularly if you consider what idiomatic code in both languages looks like.
Jon Skeet
I agree that they are moving apart, but I would still argue that the transition from Java to C# is easier than say C to C#. I have many colleagues moving from APL to C# and syntax is not their biggest problem, picking up OO is. I would assume that the OP would be familiar with a lot of the relevant techniques and ideas given four years of Java experience.
Brian Rasmussen
+13  A: 

It will certainly be a shift, largely in terms of learning the .NET framework when you're used to the Java APIs. A lot of the concepts are the same, but it's a case of learning where to find things. You shouldn't expect to effectively have 4 years of C#/.NET experience - but you'll have 4 years of general software development, which is certainly important in and of itself.

Moving from C# to Java isn't too bad, although generics are very different in C#. You'll find there are a lot of features in recent versions of C# which aren't in Java, and it's worth getting to know them to use the language to its best advantage.

Personally I find C# to be a much more elegant and powerful language than Java - and certainly one which has evolved a lot more rapidly. I use both on a regular basis, but my heart is with C#... and that's having come from a Java background like yourself. I certainly don't regret "moving" from Java to C#, particularly as it isn't so much a "move" as just adding an extra string to your bow. It's not like you're giving up your Java experience to learn .NET.

Having said all this, I don't think you need to worry about Java disappearing any time soon. I think it's reasonable to have concerns over the glacial rate of progress of the core API and language (although 3rd party libraries and indeed languages are moving rather faster) but I'm sure companies will be actively developing new products in Java for quite a few years to come.

Jon Skeet
IBM supports Java on their mainframes and midframes, and not .NET. Java is the new Cobol :)
Thorbjørn Ravn Andersen
+1  A: 

It depends a bit on what type of personality you have and on what level you understand java. Allot of concepts are the same between the two platforms only with different implementation details, syntax, names etc... on one level I find .net easier since you often deal with all Microsoft products which tend to align with each other pretty well as where in the java space I've had to spent time figuring out how to get product A by supplier X to work together with product B by supplier Y. So if you have more then what I would call a "literal" understanding of java the move should be very easy.

I think you should be able to find jobs in both platforms just as easily imho

If perhaps this move is also being fuelled by eagerness to learn new things then I would advice you to go for something different like a dynamic or functional language.

There are a couple of books which focus on moving from java to c# (I haven't read them so I can not advice on one) but those should really get you up to speed in a matter of hours/days.

olle
A: 

java and .net are both fine i guess.

as long as you want to keep portability to linux, mac os or any other system, you might keep on java. if you want .net-applications for other platforms, you would need to rely on Mono, which is for sure a great project but in my opinion not yet stable enough for production.

if you want to stay on microsoft-world, i consider C# as one of the best development tool i've ever seen. indeed the visual studio, which provides many important coding features really makes the work easy.

they're both approximately the same from the learning aspect. java lacks operator overloading which is an important point in my eyes. .net might lack other features java is better at... and generally i guess in most of the applications, .net is faster than java.

hope this helped a bit

regards

Atmocreations
where do you get the information from that .net is faster then java? The benchmarks I have seen where inconclusive.
Jens Schauder
A: 

If you write in C#, you will find a lot of similarities to the Java language, and the CLR shares many concepts with the Java runtime, too.

You could as well write both. For exercise i created a chat-program in C# and the server for it in Java and had a lot of fun doing that. You could concentrate on .NET and occasionally use Java. Nothing wrong with that, anyway, more important than being used to a language is the concepts you learn over the years, such as design patterns, best practices and algorithms. Those will help you to understand any new framework or library much quicker as you recognize the patterns and purpose behind it.

Botz3000
+13  A: 
  1. If you don't want to become the next cobol developer, get used to changing languages. Java and C# will be around for a couple of years, and so will the underlying platforms. But things will change, so better to get used to it.

  2. You have exactly 0 years of experience. Anything done in school or university doesn't count. The reason is: the requirements are completely different. The school stuff might be way more difficult from a CS point of view, but it has fixed, rather clear requirements, and you don't have to support it for 10 years. So again get used to it: It was hopefully a fun time, but it does not count as experience.

  3. C# was in the beginning almost a copy of Java. Now those guys have a lot of interesting features, that java is lacking. But still it should be easy to learn one, when you know the other.

  4. For a job: It is irrelevant how many jobs there are. You only want one anyway right? So you should check what kind of job you are interested in? Web, Mobile, Embedded, Rich Client, Big Servers.

So what is the real advice? Go, find an employer NOW. Tell them you'd like to work in [whenever you are done] and you'd like them to tell you what you should learn in the mean time.

Jens Schauder
+1 for 2 and 4. And also for suggesting direct contact with employers now; I'd suggest speaking with consultancies as well as larger organisations.
Jeremy McGee
I also admit for the 2 and 4 :) CUrrently I work as a part time developer, we do some web stuff(using python and javascript) which I am not really interested in on the long run.
+1 Nice answer, also for 2. and 4. Great stuff.
Kyle Rozendo
A: 

I agree with most of the advice others have already given. Both platforms are here to stay and both should provide decent career opportunities.

Just a word of caution though. You write "at least in my country" regarding .Net opportunities. I think you also need to consider "at least in my country" when deciding how large the career impact will be in the short term.

I have worked extensively in both the USA and Germany. My experience has been that, in the USA people are hired more for demonstrated ability than for resume points, but in Germany the situation was reversed. You will have to weigh the short-term impact in your country, unless you want to post which country that is and hopefully someone on SO has experience with that country.

Eric J.
+3  A: 

I work for a .NET shop, and I can say that as a hiring manager/interviewer, I don't think of a lack of .NET experience from a recent college grad to be a problem -- very few colleges and universities use Microsoft tools, and as other posters have said, the platforms are conceptually similar. What I expect from a recent college grad is energy, enthusiasm, and a solid grasp of CS fundamentals.

That said, I also don't consider a four year degree to be "4 years of java experience" -- student projects are nice on the resume, and are good to talk about in interviews, but unless you have been doing a lot of coding for hire on the side, one year of "real world" experience (where your job is to write software) teaches more about work ethic and delivery than 4 or more years in college.

Guy Starbuck
+1  A: 

I wouldn't bother with learning C# for career purposes. And I say this as a happily employed C# programmer. :-) Oh, I suppose an explanation is in order...

It's much more valuable to know diverse languages. When I'm hiring for a position that's going to be writing C#, I'd much rather hire somebody with lots of Java experience and also some Scheme and Erlang (and no C# at all), than somebody with just Java and C#.

C# really seems to combine two things: the static typing and syntax from the Java world, and a handful of additional features and syntax from the functional world. If you know Java, Lisp, Python, and Javascript, then you can learn C# -- or pretty much anything else -- in almost no time at all. (You won't land an architect position, but you won't be getting that right out of school, anyway.)

The only trick is finding an employer enlightened enough to realize this, and not simply one that feeds resumes through a pattern matcher. But simply putting "Lisp" on your resume is often enough to turn the right heads.

Alec
IMO most people who are "hiring for a position that's going to be writing C#" would rather hire someone with C# experience.
ChrisW
I agree with Alec's point on knowing diverse languages. Not from an employability perspective, but because it will make one a better developer. You can then "think outside the [insert language here] box."
TrueWill
ChrisW: I believe you're correct but I don't think it's relevant. Somebody with Lisp and Python experience and a computer science degree isn't looking at "most" C# jobs. I can go on monster.com and find a gazillion C# jobs and I wouldn't want to work at any of them. It's like when Joel says "take top-notch C++ programmers who dream in pointers, and let them code in VB", he's not looking for "VB programmers". He's looking for good programmers who will happen to use VB.
Alec
As a current CS student I am wondering this: How does one find an employer enlightened enough to realize those types of things? How do you avoid ones who are not?
instanceofTom
I'm not entirely sure myself. Good signs I've seen include: giving a tough interview, being excited by the right parts of your resume, being a smaller company, using a higher-level language, or being in a tough problem space -- but I've seen bad companies with these, too. Having coffee with the CTO (or the like) will tell you a lot, if you can swing that; talking to anybody who works there can be eye-opening. Look at not just what they do, but why, in all things: because they think it's the right choice, because they're following the industry, or just dumb luck?
Alec
A: 

Your Java experience and concepts will come in handy when transitioning to C# and they're not too different (to a certain extent, of course). I won't go into much detail about that aspect of your question since others have made good comments.

What I wanted to add is that although employers may not consider school experience to be equivalent to real world experience, don't let that stop you from referencing them on your resume. Be prepared to talk about them during the interview, as well as any side projects or interests you have. These are good for the "tell me about your favorite project?" and "what did you like most about that project?" type of questions. Be enthusiastic to learn and show a willingness to improve your skills. You can also show that you find certain aspects of C# appealing (perhaps contrast to Java) and that you're confident you'll be able to pick things up quickly and apply yourself.

Ahmad Mageed
A: 

Job experience is vastly different from the experience you get as a student.

Personally I think you should learn as much as you can while studying - this DEFINTIIVELY includes exotic languages - and only knowing one language, makes you a one-trick pony.

So, get your teachers to teach you exotic stuff. Like functional languages using pattern matching, logical languages for a vastly different approach to evaluating lots of possibilities, assembly language for doing the actual bit stuff, and all these other mind blowing things that people do for FUN and LEARNING :)

Thorbjørn Ravn Andersen