views:

1885

answers:

23

Hi All, I have been working on java/J2ee for the past 3 years. My job included working on JSF and Axis web services and a bit of hibernate too. The IDE that i use is eclipse, with project mgmt tool as ant/maven and JBOSS as my application server. Because of this recession, I have been asked to move to a new team that develops software on C# and .NET. I m very new to this Microsoft related technologies and have never programmed on VB.NET before. Looking in to certain threads: http://stackoverflow.com/questions/38709/switching-from-java-to-c http://stackoverflow.com/questions/58595/should-i-learn-c-or-java indicate that learning C# is easy for java developers. But as such i wanted to know how will my career be affected since i have a 3+ years of experience in java and going forward will have some x years of experience in C#/.NET. Shouldn't I build my career on JAVA related technologies given that i have learnt all the tools, frameworks and the java platform ? Or Learning C# will add some value to my professional career ? Looking forward to some expert guidance

I appreciate suggestions and experiences from those who have moved from Java to C#

+29  A: 

In my opinion, sticking to a single framework/platform is not a good thing. Building C#/.NET knowledge is pretty easy for an expert in Java. I suggest you to go and learn .NET even if you stick to Java for your job. It's well worth it.

Mehrdad Afshari
Since this was upvoted so much, can someone elaborate? Why is it better to spend time developing breadth as opposed to becoming even better at something specific?
greg7gkb
@greg7gkb: They are not mutually exclusive. In fact, for the sake of being better at a certain technology, I believe you should have an idea about surrounding technologies, competing products, and completely different paradigms. The ideas from a diverse set of tools is useful even if you're really into a single tool.
Mehrdad Afshari
Personally, I think that having multiple skillsets on a resume indicates not just that you have knowledge in those areas, but that you are willing/able to learn new skills if the job doesn't perfectly match what you've done in the past.
Shawn D.
+2  A: 

I agree with Mehrdad. It's always good to learn new things. And C# is nice, easy and powerful. It's a lot of fun to code and Visual Studio Express Edition is free and very a good tool. You should give C# a try.

Holli
A: 

It's always good to learn new skillsets, so if nothing else, I'd recommend spending time learning C#. The move from Java won't be too difficult and the demand for C# is increasing, so it'll make you more marketable.

Sean
+9  A: 

I think it is always good to learn the best of both worlds. Both C# and Java have its advantages and disadvantages, and it only makes you a more experienced programmer to know both languages.

I learned to program in Java (mainly in college) and finally switched to C# in 2003, just because I felt like it. Personally I don't regret my choice, since I think C# is awesome (and I prefer Visual Studio over Eclipse).

And yes, it should be easy to switch from Java to C# if you grasp the basics of OOP. The rest is mainly getting to know the framework and language specific constructs.

Razzie
A: 

Java is so near to C# that once i learnt C# i found i could read Java very easily. I would say go for it and teach yourself C#. I think you'll find that you'll pick it up in a few days.

I would even advise looking at Mono, the open source implementation of C# and .NET.

Gary Willoughby
I agree with you on the general syntax and structure of the programs. However there are some subtle differences in the bytecode generation that will eventually bite you. Eg. Object comparisons and GC scheduling. And theres the whole generics perspective
Steen
Yep, but all i'm saying is that C# is a logical language to study after Java because it is so similar.
Gary Willoughby
@Gary This changes with C#3 features. C# is a rather active language.
pst
+10  A: 

I have moved a bit back and forth between Java, C# and C++ over the years on a professional basis. Each switch has forced me to reflect on both the language I came from as well as the language I switched to. Frameworks for Java and C# tends to be built on from the same mental approaches (this is, of course, a generalization) whereas C++ does not have the same kind of approach to frameworks.

You should never contrain yourself to a single language, not with respect to natural languages, and neither with respect to programming languages.

Basically, you're either in programming for the money only or for something more. If you're only in it for the money, go after whatever programming language that seems to yield the biggest profit. If theres more to it, then explore, educate yourself and try to pick jobs or frameworks that challenge you.

Steen
Sounds very reasonable.
mafutrct
+5  A: 

When we look for people to hire, we look for OO experience. While there might be a slight preference for people with a specific background -- Java or C# -- a strong candidate from either camp would be considered. In my personal opinion, someone who was a strong candidate with a background in both would have an advantage as it displays some flexibility and willingness to learn.

I can't see that knowing Java and C# would be a disadvantage though you might find that letting your skills in one or the other deteriorate might make you a less strong candidate in that specific market. For example, I know that I'm less competitive for some Java jobs because it's been awhile since I've done any Java programming in anger. Knowing Java, though, and being an experienced developer in C#/.NET opens up more job possibilities, though, and the right employer would understand that the skills translate.

tvanfosson
+1  A: 

A friend of mine is a java guy and was asked to do some coding in c#. He said it was like coding in java until Visual Studio showed him a squiggly line to tell him he'd got something wrong :)

Obviously you'll have no problem in picking up the language, but it will take you longer to learn about what the .net framework can and can't do for you compared to the java libraries.

Financially speaking, you should consult the web site sites which show relative salaries for someone in your position within the industry you are in (or interested in.)

For instance, both java and c# are used in the finance industry in the UK but Java appears to pay slightly higher (probably due to entrenched java systems hanging about.) Of course you'll want to bear in mind the relative trends, e.g. is java losing popularity with employers?

ninj
+1  A: 

I have been a C# developer since it was introduced. I dabbled with Java (JBuilder) on Linux a few years ago just to see what is on the other side... This is more out of curiosity than anything else. After completing my personal projects which took a couple of months, I began to wonder; first, if any employer would be willing to hire me to do Java related work even though I had no actual work experience to show for in my resume; second, if I would be able to keep up with the changes in technologies trying to keep current with 2 different languages but more importantly 2 different frameworks evolving over time.

I decided keeping abreast of Microsoft technologies required too much time and effort so I abandoned my dabbling with Java after a couple of months. Note that within the Microsoft sphere of influence, programming in C# is merely one facet of the skills you have to keep current in... For example for web development there is AJAX, Silverlight, WCF in place of/in addition to Web Services, MVC, etc.; for Windows there is traditional Windows Forms, and now WPF; on the back-end, the ever evolving SQL Server with the attendant SSRS, SSAS, SSIS services.

In my case at least, I though I would rather be a master of MS technologies instead of trying to become a jack of all trades.

cyclo
+1  A: 

IMO, C# will add a nice combination that you'll have for future employers that may have a mix of back-end systems, e.g. if there are some Windows servers and Linux servers then there may be some C# and Java code in the middleware where having skills in both can be quite attractive.

It isn't like you're going to put Java away and never ever use it again, right? I mean there wasn't some sort of swearing in ceremony where you promised to never use Open Source software and the evils that it brings. If there was such a ceremony, I wonder how much Kool-aid they have on hand to keep the brainwashing working.

JB King
+2  A: 

If your worried about your Java skills becoming less useful do to lack of practice if you use C# durring your day job consider working on a Java open source project. This will allow you to keep your skills current as well as give you something to put on a Resume.

Jared
A: 

My personal choice is to stick with one (at least professionally). To keep up with everything that happens in the Java sphere and everything in .NET seems a bit...excessive. I chose .NET because I believed it to be the safest bet...I'll see in the future if that was a good or bad choice :)

+1  A: 

I would also recommend checking out the post The art of Programming: Java Vs. C# from another post on SO.

Ascalonian
A: 

I would recommend learning good development practices and then the language becomes secondary. switching from one C style OO language to another is fairly simple and it doesn't mater if it's c++, java, c#, and php is a lesser degree.

Having said that, I can be very beneficial to learn different languages/frameworks in order to learn different points of view and it's really common to learn new things about your current language by seeing how things are done in a new language.

It's like when I learned German in high school I had to learn how German grammar related to some parts of English grammar that I hadn't payed attention to before.

Bob The Janitor
+6  A: 

I don't think that moving towards a different technology based on company needs is such a good idea... personally i would have agreed to do it for career reasons, ie Java was getting outdated so learn something new ( which isn't going to happen any time soon anyways).

Other than that, i don't think you will face any difficulties in contrast i think the .NET world is much more kind and forgiving than the Java world, meaning that VS makes your life so much easier to get started, also deployment and configuration is most of the times an easy task and you rarely see situations where you need loads of XML files for "things" to work.

I can't say that i have a lot of Java experience ( did my dissertation and some side projects on it) but for my everyday work i ended up in .NET and i can't say that i regretted it, its been fun, technology is rolling in the .NET world and community is very helpful also.

I would probably weight the career benefits of switching heavily into another framework/language, in the case of C# i can safely say that it's definitely not outdated nor not wanted in the industry world, and so is Java and IMO even better in job-hunting. Nevertheless, an extra tool in your resume is never bad, given that you don't give up on Java that is ;)

Konstantinos
A: 

Do this only if you have something to use it for. You MUST practice if you are to learn it well.

Thorbjørn Ravn Andersen
A: 

The more languages you know the greater your depth of knowledge about all languages. You will have a greater appreciation for each language's strength and weaknesses.

However, you will learn even more if you learn languages that are completely different from each other.

I never knew a developer that became a worse developer because they learned something new!

Pat
+5  A: 

I evaluated Java 6 and C# 2.0 at the same time, when previously I'd been a C++ programmer almost exclusively for many years. The following things are all huge C# wins:

  • functions as first class entities (or near as dammit) via delegates
  • closures (known as anonymous delegates)
  • reified generics (new T(), etc.)
  • yield return
  • property get/set methods related and exposed by special syntax
  • operator overloading that avoids many of the gotchas of C++
  • convenient, ready-to-use interop capabilities

Since then, C# 3.0 has taken another leap forwards with:

  • even nicer closure syntax
  • more type inference
  • extension methods

Meanwhile the current plan for Java 7 (due to come out the same time as C# 4.0!) has none of the above in it, even though all of them have been endlessly debated in the Java community.

There really shouldn't be any fundamental reason why Java should stagnate and C# should be evolving so nicely. They are not essentially different types of technology. It just seems that Java is confirming everyone's worst fears of what happens when something is run by a committee.

Daniel Earwicker
A: 

By no means I'm a pro, have been a dev for only about 8 months, but has gone thru asp.net, java and php. What I have to say, just as some had answered here, is that its good to learn another language to add to your repertoire. (Though I would prefer learning other languages than C#, like, Python or Objective C or even Ruby)

However, completely transitioning your career to another language (esp. now that you already have 3 years exp. in java) should take some preparations. Since C# and Java code looks and feel the same (at least to me) it shouldn't be too hard to learn C#.

Having employers hire you as a C# professional would be the more difficult task (at least the part where you would convince them that you are a viable choice vs other experienced C# programmers). If someday you decide to switch your career to C#, prepare your C# portfolio just to make sure. So start writing those sample apps now! Good luck! ^_^

mives
A: 

hi go to what your company ask you to do, as per my suggession go for c#.net as per your company requirement may be next project is in java or some other technology. leraning diffrent n new is not bad, and if ypu are worried abt ur salary in new twchnology so dear c# programmers average salar is nearer to java programmer n if you have good knowledge in any programming even in php or html , javascript, xml, then u know there are many company who pay greater salary than java or c# programmer to there employee for such web technology(xml, html, xhtml, javascript, php). So dear go to learn diffrent technology if u grab this oppourtunity, and definitely u find best in future.

sks
A: 

First of all - nothing is easy in these techmologies. It is not the language difference between Java and c# that will be a challemge as much as the ENVIRONMENT.

roberto
+1  A: 

Hi,

I just want to add my opinion here. From Dice.com, I found out that Java jobs outweigh C# jobs 2:1. Now from technology point of view, a lot of people said that C# is more advanced. A lot of software vendors also choose .NET platform because they think .NET has won desktop war. From business point of view, since there are more java jobs, you get paid more by doing java development than c# and you get more opportunities to choose from. I am a little confused here. On one hand, c# seems to have upper hand now in terms of technology. However, Java definitely has a lot of more jobs. After all, you need a job to pay bills. What is going on here? Any someone add more information from his or her experiences?

Thank you.

Jerry Xu
A: 

I know that this post is a little old now but I have some years of experience now and the Java vs .NET is something that annoyed me specially during this time.

If the company was proposing you to do a work for them in .NET, I hope you took the chance. Since you have already three years of Java development, you will not loose these skills suddenly, and having diversified knowledge, you will only be a more valuable employee.

If Java or .NET developers are more payed than the others, it doesn't depend on the number of jobs available on the market on the other side. It depends on the number of people available on the market able to do it.

At first I studied Java at college for four years and a half !!! During my last year and a half I got the opportunity of doing a internship half time as C# developer.

Once I ended both, the stage and college, I started looking for work. Since I had a longer experience with Java and felt awkward about working professionally with Microsoft products, I started searching Java jobs.

I always got from the recruiters the response that I should look for .NET jobs since I had professional... experience with it. So I did it, not without some disgust. At the time there wasn't many job offers for it, but I got one relatively fast. I've been working with it for three years and a half. I decided to move ten months ago, and looking the job offers I realized that there was a lot more offers than before, but... oh, few .NET developers on the market.

I really would like to work with Java. I think the only way may be do a Java Certification but I ask myself if it is really worth. I must say that web development with .NET is incredibly easier than with jsp, jsf, etc. I ask myself if I should evolve in LAMP since it is nicely commented for web development and I'm a Linux fan (my computer at home doesn't have windows, but Slackware :P)

Olivier